import asyncio import json import numpy as np import pytest from fastapi.testclient import TestClient import stt_core as core import stt_service as service from conftest import SR, EnergyProb, FakeEngine, make_wav, silence, tone def _client(engine=None, **settings): settings = service.ServiceSettings(wyoming_port=None, **settings) app = service.create_app(engine or FakeEngine(), settings, core.VadConfig(silence_ms=400), prob_fn_factory=EnergyProb) return TestClient(app) def test_health(): with _client() as client: data = client.get("/health").json() assert data["status"] == "ok" and data["model"] == "fake" and data["queue"] == 0 def test_openai_transcriptions_formats(): wav = make_wav(tone(1.5)) with _client() as client: files = {"file": ("a.wav", wav, "audio/wav")} assert client.post("/v1/audio/transcriptions", files=files).json() == {"text": "audio 1.5s"} r = client.post("/v1/audio/transcriptions", files=files, data={"response_format": "text"}) assert r.text == "audio 1.5s" r = client.post("/v1/audio/transcriptions", files=files, data={"response_format": "verbose_json", "language": "en"}) body = r.json() assert body["language"] == "en" and body["segments"][0]["text"] == "audio 1.5s" r = client.post("/v1/audio/transcriptions", files=files, data={"response_format": "srt"}) assert r.status_code == 400 def test_transcribe_raw_pcm_with_resampling_and_channel(): engine = FakeEngine() stereo = np.stack([tone(1.0, rate=48000), silence(1.0, rate=48000)], axis=1) pcm = (stereo * 32767).astype("