[Wake/VAD/STT 与 Live runtime]:完成真实重复语音运行,包含云端ASR/TTS开关、run-live和临时上下文测试

This commit is contained in:
mkbk
2026-06-17 20:00:55 +08:00
parent ac97daa1e7
commit 4b7cd18a0f
20 changed files with 1043 additions and 68 deletions
+24 -3
View File
@@ -59,25 +59,46 @@ class ModelsConfigTests(unittest.TestCase):
handle.write(
"\n".join(
[
"OWNER_LLM_BASE_URL=https://newapi.mkbk.shop/",
"OWNER_LLM_BASE_URL=https://token-plan-cn.xiaomimimo.com/v1/",
"OWNER_LLM_API_KEY=secret-value",
"OWNER_LLM_MODEL=test-model",
]
)
)
config = AppConfig.from_dotenv(path)
self.assertEqual(config.llm_base_url, "https://newapi.mkbk.shop")
self.assertEqual(config.llm_base_url, "https://token-plan-cn.xiaomimimo.com/v1")
self.assertEqual(config.llm_api_key, "secret-value")
self.assertEqual(config.llm_model, "test-model")
self.assertEqual(config.speech_provider, "cloud")
self.assertEqual(config.asr_model, "mimo-v2.5-asr")
self.assertEqual(config.tts_model, "mimo-v2.5-tts")
self.assertEqual(config.tts_voice, "alloy")
self.assertEqual(str(config.speech_models_dir), "models")
self.assertTrue(config.llm_stream)
self.assertEqual(config.validate_basic(), [])
def test_speech_provider_must_be_cloud_or_local(self) -> None:
config = AppConfig(speech_provider="invalid")
errors = config.validate_basic()
self.assertTrue(any("OWNER_SPEECH_PROVIDER" in error.message for error in errors))
def test_missing_dotenv_uses_non_secret_defaults(self) -> None:
config = AppConfig.from_dotenv("/tmp/owner-voice-pet-missing.env")
self.assertEqual(config.llm_base_url, "https://newapi.mkbk.shop")
self.assertEqual(config.llm_base_url, "https://token-plan-cn.xiaomimimo.com/v1")
self.assertIsNone(config.llm_api_key)
def test_api_url_accepts_base_with_or_without_v1(self) -> None:
with_v1 = AppConfig(llm_base_url="https://token-plan-cn.xiaomimimo.com/v1")
without_v1 = AppConfig(llm_base_url="https://newapi.mkbk.shop")
self.assertEqual(
with_v1.api_url("/v1/chat/completions"),
"https://token-plan-cn.xiaomimimo.com/v1/chat/completions",
)
self.assertEqual(
without_v1.api_url("/v1/chat/completions"),
"https://newapi.mkbk.shop/v1/chat/completions",
)
def test_missing_llm_key_has_structured_error(self) -> None:
config = AppConfig(llm_api_key=None)
with self.assertRaises(ProviderError) as raised: