[Wake/VAD/STT 与 Live runtime]:完成真实重复语音运行,包含云端ASR/TTS开关、run-live和临时上下文测试
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from owner_voice_pet.models import AudioFrame, AudioSegment, ErrorCode, ProviderError
|
||||
from owner_voice_pet.stt import MetadataSttProvider, SherpaOnnxSttProvider, is_valid_transcript_text
|
||||
from owner_voice_pet.config import AppConfig
|
||||
from owner_voice_pet.stt import CloudAsrSttProvider, MetadataSttProvider, SherpaOnnxSttProvider, is_valid_transcript_text
|
||||
from owner_voice_pet.vad import EnergyVadProvider, VadRecorder
|
||||
from owner_voice_pet.wakeword import KeywordWakeWordProvider, MissingWakeWordModelProvider
|
||||
|
||||
@@ -102,6 +104,34 @@ class WakeVadSttTests(unittest.TestCase):
|
||||
provider.load()
|
||||
self.assertEqual(raised.exception.code, ErrorCode.STT_MODEL_MISSING)
|
||||
|
||||
def test_cloud_asr_posts_audio_transcription_request(self) -> None:
|
||||
class FakeResponse:
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, *args) -> None:
|
||||
return None
|
||||
|
||||
def read(self) -> bytes:
|
||||
return json.dumps({"text": "你好小杰", "language": "zh"}, ensure_ascii=False).encode()
|
||||
|
||||
requests = []
|
||||
|
||||
def fake_urlopen(request, timeout):
|
||||
requests.append(request)
|
||||
return FakeResponse()
|
||||
|
||||
provider = CloudAsrSttProvider(
|
||||
AppConfig(llm_api_key="secret", asr_model="mimo-v2.5-asr"),
|
||||
urlopen=fake_urlopen,
|
||||
)
|
||||
provider.load()
|
||||
transcript = provider.transcribe(AudioSegment(b"\x00\x00\x01\x00", 16000, 1, 0, 100))
|
||||
|
||||
self.assertEqual(transcript.text, "你好小杰")
|
||||
self.assertIn("/v1/audio/transcriptions", requests[0].full_url)
|
||||
self.assertIn(b'mimo-v2.5-asr', requests[0].data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user