Add isolated Qwen3 ASR setup test UI and transcription API

This commit is contained in:
Mikei386
2026-09-29 08:54:06 +02:00
parent 7bd9096e67
commit 27012165eb
20 changed files with 294 additions and 24 deletions
+25
View File
@@ -0,0 +1,25 @@
import io,unittest,wave
from types import SimpleNamespace
from stt import validate_wav,read_upload,supported,REPO,REVISION,MODEL,STT
def audio():
out=io.BytesIO()
with wave.open(out,'wb') as w:w.setnchannels(1);w.setsampwidth(2);w.setframerate(16000);w.writeframes(b'\0\0'*1600)
return out.getvalue()
class STTTests(unittest.TestCase):
def test_wav(self):
validate_wav(audio())
for b in [b'',b'bad',audio()[:-2]]:
with self.assertRaises(ValueError):validate_wav(b)
def test_recipe(self):
self.assertTrue(supported(dict(repo=REPO,revision=REVISION,file=MODEL)))
self.assertFalse(supported(dict(repo=REPO,revision='other',file=MODEL)))
def test_multipart(self):
body=b'--x\r\nContent-Disposition: form-data; name="file"; filename="audio.wav"\r\n\r\n'+audio()+b'\r\n--x\r\nContent-Disposition: form-data; name="model"\r\n\r\nASR\r\n--x--\r\n'
h=SimpleNamespace(headers={'Content-Type':'multipart/form-data; boundary=x','Content-Length':str(len(body))},rfile=io.BytesIO(body),connection=SimpleNamespace(settimeout=lambda n:None))
fields,data=read_upload(h);self.assertEqual(fields['model'],'ASR');validate_wav(data)
h.headers['Transfer-Encoding']='chunked'
with self.assertRaises(ValueError):read_upload(h)
def test_missing_runtime(self):
s=STT(None,None,SimpleNamespace(status=lambda:{'active':None}))
with self.assertRaises(ValueError):s.build()