MinWordsUserTurnStartStrategy: don't aggregate transcriptions

If we aggregate transcriptions we will get incorrect interruptions. For example,
if we have a strategy with min_words=3 and we say "One" and pause, then "Two"
and pause and then "Three", this would trigger the start of the turn when it
shouldn't. We should only look at the incoming transcription text and don't
aggregate it with the previous.
This commit is contained in:
Aleix Conchillo Flaqué
2026-01-15 10:32:23 -08:00
parent 41cb53f6c2
commit c2a0735975
4 changed files with 30 additions and 33 deletions

View File

@@ -84,7 +84,7 @@ class TestUserTurnController(unittest.IsolatedAsyncioTestCase):
self.assertEqual(should_start, 0)
await controller.process_frame(
TranscriptionFrame(text=" two three!", user_id="cat", timestamp="")
TranscriptionFrame(text="One two three!", user_id="cat", timestamp="")
)
self.assertEqual(should_start, 1)
@@ -92,13 +92,11 @@ class TestUserTurnController(unittest.IsolatedAsyncioTestCase):
await asyncio.sleep(USER_TURN_STOP_TIMEOUT + 0.1)
await controller.process_frame(BotStartedSpeakingFrame())
await controller.process_frame(
TranscriptionFrame(text="Hello", user_id="cat", timestamp="")
)
await controller.process_frame(TranscriptionFrame(text="Hi!", user_id="cat", timestamp=""))
self.assertEqual(should_start, 1)
await controller.process_frame(
TranscriptionFrame(text=" there friend!", user_id="cat", timestamp="")
TranscriptionFrame(text="How are you?", user_id="cat", timestamp="")
)
self.assertEqual(should_start, 2)