[回声字幕修复]:完成播报阶段实时字幕隔离,包含静默打断判定和回归测试

This commit is contained in:
mkbk
2026-06-18 12:32:03 +08:00
parent d7dbec5c29
commit 25255f178e
2 changed files with 6 additions and 2 deletions
+3 -1
View File
@@ -542,7 +542,9 @@ class TurnController:
result = self.vad_recorder.provider.analyze(frame)
if result.is_speech:
speech_ms += int(frame.metadata.get("duration_ms", 20))
if realtime_session is not None and self._emit_realtime_transcript(realtime_session, frame, turn_id):
if realtime_session is not None:
transcript = realtime_session.accept_frame(frame)
if transcript is not None and is_valid_transcript_text(transcript.normalized_text):
partial_seen = True
else:
speech_ms = 0
+2
View File
@@ -541,10 +541,12 @@ class LiveRuntimeTests(unittest.TestCase):
summary = runtime.run(max_turns=2)
event_types = [event.type for event in runtime.event_bus.events]
context_texts = [message.content for message in runtime.context.messages()]
playback_window = event_types[event_types.index(TTS_STARTED) : event_types.index(PLAYBACK_INTERRUPTED)]
self.assertEqual(summary.completed_turns, 2)
self.assertIn(BARGE_IN_DETECTED, event_types)
self.assertIn(PLAYBACK_INTERRUPTED, event_types)
self.assertNotIn(TRANSCRIPT_PARTIAL, playback_window)
self.assertIn("已播出一句。", context_texts)
self.assertNotIn("这是一段需要被打断的很长很长很长很长很长很长很长很长的回复内容,没有播放完。", context_texts)
self.assertEqual(reporter.transcripts[-1], "打断问题")