[结束提示音]:完成对话结束音效提示,包含本地短音生成、恢复待机播放和配置测试

This commit is contained in:
mkbk
2026-06-18 13:59:12 +08:00
parent ac72738fc8
commit 80549fb312
12 changed files with 130 additions and 23 deletions
+11 -6
View File
@@ -269,8 +269,10 @@ class LiveRuntimeTests(unittest.TestCase):
self.assertEqual(runtime.config.post_playback_drain_ms, 0)
self.assertEqual(len(stt.calls), 2)
self.assertEqual(len(llm.calls), 2)
self.assertEqual(len(transport.played_segments), 4)
self.assertEqual(transport.flush_count, 4)
self.assertEqual(len(transport.played_segments), 6)
self.assertEqual(transport.flush_count, 6)
self.assertEqual(transport.played_segments[2].metadata["chime"], "end")
self.assertEqual(transport.played_segments[5].metadata["chime"], "end")
self.assertEqual(reporter.transcripts, ["第一问", "第二问"])
self.assertIn("应答中:我在", reporter.statuses)
self.assertLess(reporter.statuses.index("唤醒命中"), reporter.statuses.index("应答中:我在"))
@@ -324,7 +326,7 @@ class LiveRuntimeTests(unittest.TestCase):
self.assertEqual(summary.completed_turns, 2)
self.assertEqual(ack_tts.synthesized_texts, ["我在"])
self.assertEqual(transport.played_segments[0].metadata["text"], "我在")
self.assertEqual(transport.played_segments[2].metadata["text"], "我在")
self.assertEqual(transport.played_segments[3].metadata["text"], "我在")
def test_zero_post_playback_drain_flushes_without_dropping_prefilled_question(self) -> None:
runtime, stt, _, transport, reporter = make_runtime(["第一问"])
@@ -335,7 +337,8 @@ class LiveRuntimeTests(unittest.TestCase):
self.assertEqual(summary.completed_turns, 1)
self.assertEqual(reporter.transcripts, ["第一问"])
self.assertEqual(len(stt.calls), 1)
self.assertEqual(transport.flush_count, 2)
self.assertEqual(transport.flush_count, 3)
self.assertEqual(transport.played_segments[-1].metadata["chime"], "end")
def test_no_ack_text_does_not_drain_before_capture(self) -> None:
runtime, stt, _, transport, reporter = make_runtime(["第一问"], wake_ack_text="")
@@ -345,8 +348,9 @@ class LiveRuntimeTests(unittest.TestCase):
self.assertEqual(summary.completed_turns, 1)
self.assertEqual(reporter.transcripts, ["第一问"])
self.assertEqual(len(stt.calls), 1)
self.assertEqual(len(transport.played_segments), 1)
self.assertEqual(transport.flush_count, 1)
self.assertEqual(len(transport.played_segments), 2)
self.assertEqual(transport.flush_count, 2)
self.assertEqual(transport.played_segments[-1].metadata["chime"], "end")
def test_temporary_context_is_sent_to_second_llm_call(self) -> None:
runtime, _, llm, _, _ = make_runtime(["第一问", "第二问"])
@@ -593,6 +597,7 @@ class LiveRuntimeTests(unittest.TestCase):
self.assertIn(FOLLOWUP_TIMEOUT, event_types)
self.assertEqual(event_types[-1], STANDBY_RESUMED)
self.assertEqual(len(llm.calls), 1)
self.assertEqual(transport.played_segments[-1].metadata["chime"], "end")
def test_completed_reply_returns_to_standby_without_cloud_classifier_delay(self) -> None:
frames = [wake_frame(0, 0)]