chelsealong
b7bff6f2d7
fix(voice): catch short echoed fragments of longer multi-sentence TTS replies
...
is_tts_echo() compared the captured transcript against the *entire*
spoken text with a whole-string similarity ratio, which only scores high
when the two strings are close in length. But a playback-phase barge
capture is cut immediately when the trigger fires and only spans the
pre-roll buffer plus time-to-silence, so a genuine self-capture is
typically a short fragment of a longer reply, not a near-verbatim repeat
of the whole thing -- for any response longer than a clause, the
length-diluted ratio fell below threshold and the echo sailed through
ungated.
When the whole-string check misses, also slide a window sized to the
transcript's word count across the spoken text and compare against each
window, so a short fragment echoed from within a much longer
multi-sentence reply is still caught. Add regression tests for a short
fragment matched at the start and in the middle of a longer reply.
2026-08-07 14:38:02 +05:30
..
2026-08-02 20:21:59 -07:00
2026-08-01 13:27:58 +05:30
2026-08-07 14:13:32 +05:30
2026-08-05 11:16:18 -04:00
2026-08-02 20:30:06 -07:00
2026-07-29 14:12:25 -07:00
2026-07-29 13:39:40 -07:00
2026-08-06 23:14:55 -07:00
2026-07-29 13:39:40 -07:00
2026-08-01 10:52:34 -07:00
2026-07-28 08:25:25 -07:00
2026-03-14 14:27:20 +03:00
2026-07-29 12:19:37 -07:00
2026-08-07 14:34:55 +05:30
2026-08-07 00:41:58 -04:00
2026-08-06 07:49:50 -07:00
2026-08-03 17:53:55 +05:30
2026-08-04 17:36:26 -04:00
2026-07-05 13:42:46 -07:00
2026-07-01 03:16:13 -07:00
2026-07-29 13:39:40 -07:00
2026-08-03 20:35:47 +05:30
2026-08-07 01:49:57 +00:00
2026-08-05 12:42:46 +05:30
2026-08-06 22:12:22 -06:00
2026-07-31 22:33:11 -07:00
2026-08-02 00:11:50 -07:00
2026-08-05 14:08:32 -07:00
2026-08-07 13:24:56 +05:30
2026-07-05 13:42:46 -07:00
2026-08-07 14:38:02 +05:30
2026-08-06 19:35:47 -06:00
2026-07-31 22:33:11 -07:00
2026-08-06 07:49:50 -07:00
2026-04-21 01:56:35 -07:00
2026-07-29 13:10:23 -07:00
2026-08-06 05:00:17 +05:30
2026-07-28 14:07:21 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-01 15:05:05 +05:30
2026-07-29 13:10:23 -07:00
2026-07-23 07:24:46 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-02 00:11:50 -07:00
2026-07-25 07:17:52 -07:00
2026-07-29 13:10:23 -07:00
2026-07-23 11:44:43 -07:00
2026-07-29 15:12:28 -07:00
2026-08-03 17:19:49 -07:00
2026-07-29 13:10:23 -07:00
2026-08-01 23:28:28 -05:00
2026-07-22 03:20:25 -07:00
2026-07-29 13:10:23 -07:00
2026-08-02 00:11:50 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-03 20:30:32 +05:30
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-01 22:56:52 -05:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-31 22:35:07 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 18:13:09 -07:00
2026-08-06 05:38:04 +05:30
2026-07-29 18:55:10 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-18 19:18:03 +05:30
2026-07-29 17:35:16 -05:00
2026-06-30 20:11:01 +07:00
2026-07-26 19:30:32 -07:00
2026-07-18 18:40:59 -04:00
2026-07-31 22:39:11 -07:00
2026-07-26 16:06:50 -05:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-24 09:49:00 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 18:13:09 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 21:30:53 -07:00
2026-07-29 19:53:17 -07:00
2026-08-01 21:17:51 -04:00
2026-08-01 13:13:30 +05:30
2026-07-30 00:08:28 -05:00
2026-07-29 13:10:23 -07:00
2026-08-03 17:38:13 +05:30
2026-03-24 08:19:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 15:12:28 -07:00
2026-07-31 07:18:02 -07:00
2026-07-31 22:35:16 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-22 16:51:01 -04:00
2026-07-29 13:10:23 -07:00
2026-07-31 07:30:30 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 19:48:37 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 21:30:53 -07:00
2026-07-29 21:30:53 -07:00
2026-07-29 13:10:23 -07:00
2026-08-07 00:41:58 -04:00
2026-07-22 07:56:47 -07:00
2026-08-02 10:04:48 -07:00
2026-08-03 21:02:11 +05:30
2026-07-29 13:10:23 -07:00
2026-08-03 20:37:17 +05:30
2026-08-02 21:32:13 +05:30
2026-07-22 21:14:44 -07:00
2026-07-18 04:15:13 -07:00
2026-03-19 15:16:35 +01:00
2026-07-31 23:18:12 -07:00
2026-08-06 07:49:42 -07:00
2026-08-04 11:26:15 +05:30
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-08-06 19:35:47 -06:00
2026-05-28 22:26:25 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-21 12:43:27 -07:00
2026-07-29 13:10:23 -07:00
2026-08-01 15:58:42 +05:30
2026-08-06 23:08:23 -05:00
2026-08-06 19:35:47 -06:00
2026-07-29 13:10:23 -07:00
2026-08-06 19:35:47 -06:00
2026-07-28 11:57:37 -07:00
2026-07-15 04:55:46 -07:00
2026-08-02 21:30:54 +05:30
2026-08-02 23:10:28 +05:30
2026-07-28 19:20:14 -05:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-07-29 13:10:23 -07:00
2026-06-07 17:49:38 -07:00
2026-07-24 23:06:05 -07:00