[回声字幕修复]:完成播报阶段实时字幕隔离,包含静默打断判定和回归测试
This commit is contained in:
@@ -542,8 +542,10 @@ class TurnController:
|
|||||||
result = self.vad_recorder.provider.analyze(frame)
|
result = self.vad_recorder.provider.analyze(frame)
|
||||||
if result.is_speech:
|
if result.is_speech:
|
||||||
speech_ms += int(frame.metadata.get("duration_ms", 20))
|
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:
|
||||||
partial_seen = True
|
transcript = realtime_session.accept_frame(frame)
|
||||||
|
if transcript is not None and is_valid_transcript_text(transcript.normalized_text):
|
||||||
|
partial_seen = True
|
||||||
else:
|
else:
|
||||||
speech_ms = 0
|
speech_ms = 0
|
||||||
detected = speech_ms >= self.config.barge_in_min_speech_ms and partial_seen
|
detected = speech_ms >= self.config.barge_in_min_speech_ms and partial_seen
|
||||||
|
|||||||
@@ -541,10 +541,12 @@ class LiveRuntimeTests(unittest.TestCase):
|
|||||||
summary = runtime.run(max_turns=2)
|
summary = runtime.run(max_turns=2)
|
||||||
event_types = [event.type for event in runtime.event_bus.events]
|
event_types = [event.type for event in runtime.event_bus.events]
|
||||||
context_texts = [message.content for message in runtime.context.messages()]
|
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.assertEqual(summary.completed_turns, 2)
|
||||||
self.assertIn(BARGE_IN_DETECTED, event_types)
|
self.assertIn(BARGE_IN_DETECTED, event_types)
|
||||||
self.assertIn(PLAYBACK_INTERRUPTED, event_types)
|
self.assertIn(PLAYBACK_INTERRUPTED, event_types)
|
||||||
|
self.assertNotIn(TRANSCRIPT_PARTIAL, playback_window)
|
||||||
self.assertIn("已播出一句。", context_texts)
|
self.assertIn("已播出一句。", context_texts)
|
||||||
self.assertNotIn("这是一段需要被打断的很长很长很长很长很长很长很长很长的回复内容,没有播放完。", context_texts)
|
self.assertNotIn("这是一段需要被打断的很长很长很长很长很长很长很长很长的回复内容,没有播放完。", context_texts)
|
||||||
self.assertEqual(reporter.transcripts[-1], "打断问题")
|
self.assertEqual(reporter.transcripts[-1], "打断问题")
|
||||||
|
|||||||
Reference in New Issue
Block a user