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-03 22:53:32 +05:30
2026-07-28 07:58:16 -07:00
2026-07-17 04:53:38 -07:00
2026-08-06 17:03:10 +05:30
2026-08-02 15:11:37 -07:00
2026-07-28 11:52:44 -07:00
2026-07-29 11:53:39 -07:00
2026-08-02 00:11:50 -07:00
2026-07-27 14:32:05 -07:00
2026-07-29 10:54:04 -07:00
2026-08-02 11:18:41 +05:30
2026-06-21 17:46:38 +05:30
2026-07-29 10:14:11 -07:00
2026-07-26 17:46:55 -07:00
2026-07-29 10:14:00 -07:00
2026-08-06 19:35:47 -06:00
2026-08-06 23:08:23 -05:00
2026-07-29 12:19:37 -07:00
2026-07-31 17:43:37 -04:00
2026-08-06 23:14:55 -07:00
2026-07-02 04:20:43 -07:00
2026-06-25 13:52:06 -07:00
2026-08-06 09:40:27 -07:00
2026-07-20 06:50:31 -07:00
2026-07-22 12:13:01 -05:00
2026-08-02 00:11:50 -07:00
2026-08-02 00:36:03 -07:00
2026-08-01 21:17:51 -04:00
2026-08-06 05:31:17 +05:30
2026-08-05 22:03:47 -07:00
2026-07-31 10:17:55 -04:00
2026-08-06 19:35:47 -06:00
2026-08-02 15:51:43 -07:00
2026-08-02 00:11:50 -07:00
2026-07-29 09:33:48 -07:00
2026-07-14 02:59:39 +05:30
2026-07-31 17:43:37 -04:00
2026-07-06 04:58:42 -07:00
2026-08-06 03:16:26 +05:30
2026-08-07 13:28:43 +05:30
2026-08-02 10:02:33 -07:00
2026-07-17 04:50:47 -07:00
2026-07-28 00:53:16 -05:00
2026-07-29 10:02:03 -07:00
2026-08-03 14:24:37 +05:30
2026-07-18 04:15:13 -07:00
2026-08-03 14:24:37 +05:30
2026-07-29 16:49:07 +05:30
2026-07-29 10:13:50 -07:00
2026-07-28 14:07:21 -07:00
2026-08-06 19:35:47 -06:00
2026-08-02 10:02:33 -07:00
2026-08-01 10:47:20 -07:00
2026-08-04 14:34:24 +05:30
2026-07-29 10:14:00 -07:00
2026-08-02 15:11:02 -07:00
2026-06-25 16:40:27 -05:00
2026-08-06 19:35:47 -06:00
2026-08-05 22:02:42 -07:00
2026-08-06 19:35:47 -06:00
2026-08-06 19:35:47 -06:00
2026-08-03 18:44:38 +05:30
2026-07-28 14:37:19 -07:00
2026-08-02 10:01:16 -07:00
2026-08-03 17:50:58 +05:30
2026-07-31 07:30:30 -07:00
2026-07-31 07:30:30 -07:00
2026-08-03 09:56:36 +05:30
2026-08-02 20:12:37 -07:00
2026-07-30 22:31:42 -07:00
2026-07-28 04:24:50 -05:00
2026-08-02 20:12:37 -07:00
2026-08-02 15:08:35 -07:00
2026-08-06 17:36:40 +05:30
2026-05-29 03:44:49 -07:00
2026-07-01 01:05:28 -07:00
2026-08-02 10:04:48 -07:00
2026-07-22 06:56:53 -07:00
2026-08-02 10:04:48 -07:00
2026-05-31 00:50:19 -07:00
2026-06-30 16:39:41 -07:00
2026-08-03 19:11:30 +05:30
2026-08-03 14:30:05 +05:30
2026-07-28 22:31:40 -07:00
2026-07-28 11:55:01 -07:00
2026-08-03 10:25:15 +05:30
2026-07-28 14:17:45 -07:00
2026-07-14 02:59:39 +05:30
2026-07-29 10:54:04 -07:00
2026-08-07 14:38:02 +05:30
2026-08-05 10:06:49 -06:00
2026-07-29 11:53:39 -07:00
2026-07-04 15:08:49 -07:00
2026-07-26 18:28:20 -07:00
2026-06-10 02:57:15 -07:00
2026-07-23 21:06:47 -07:00
2026-08-02 10:04:48 -07:00
2026-06-29 21:11:58 -07:00