Teknium
fae29c8410
fix(tts): class-level .ogg container repair + multi-platform opus voice detection
...
Root-cause fix for the 'TTS voice bubble broken' issue family (#57048 ,
#54589 , #57213 , #58845 , #14841 , #45557 , #57049 ). Two class-level defects:
1. Several backends silently write MP3/WAV bytes into a .ogg output path
(Edge only emits MP3, Piper writes WAV, xAI writes MP3, some
OpenAI-compatible servers ignore response_format=opus). Platforms that
need real Ogg/Opus render 0-second/broken voice bubbles. Instead of
per-provider patches, text_to_speech_tool now sniffs magic bytes once
after synthesis (_sniff_audio_container) and repairs the container
centrally (_repair_ogg_container): ffmpeg transcode in place, or rename
to the honest extension when ffmpeg is unavailable. Covers every
current and future provider, including command providers and plugins.
2. want_opus only recognized Telegram, so Matrix/Feishu/WhatsApp/Signal
auto-TTS voice replies were synthesized as MP3 and delivered as broken
attachments. New OPUS_VOICE_PLATFORMS set covers all voice-bubble
platforms.
_convert_to_opus refactored onto a shared _ffmpeg_transcode_to_opus that
supports safe in-place transcodes (-f ogg forced muxer, temp file +
os.replace).
Tests: tests/tools/test_tts_container_repair.py (13 tests incl. a live
ffmpeg round-trip); full TTS suite green (153 + 187 passed).
2026-07-27 20:28:35 -07:00
..
2026-07-17 04:53:38 -07:00
2026-07-05 14:48:40 -07:00
2026-07-12 22:43:57 -07:00
2026-07-13 04:31:55 -07:00
2026-07-26 20:58:52 -07:00
2026-07-06 04:58:42 -07:00
2026-07-24 15:55:08 -07:00
2026-07-26 17:13:52 -07:00
2026-07-24 23:09:02 -07:00
2026-07-03 03:27:47 -07:00
2026-07-01 05:09:35 -07:00
2026-07-27 14:32:05 -07:00
2026-07-01 05:23:17 -07:00
2026-07-23 19:45:54 -07:00
2026-07-16 23:41:26 -07:00
2026-07-02 13:10:30 +05:30
2026-07-16 23:41:26 -07:00
2026-07-18 10:07:46 -07:00
2026-07-27 14:32:05 -07:00
2026-07-27 14:32:05 -07:00
2026-07-01 20:01:55 +03:00
2026-07-01 05:04:41 -07:00
2026-07-26 18:28:20 -07:00
2026-07-26 17:46:55 -07:00
2026-07-26 17:46:55 -07:00
2026-07-16 04:24:07 -07:00
2026-07-16 04:25:19 -07:00
2026-07-21 12:04:47 -07:00
2026-07-23 08:11:58 -07:00
2026-07-18 15:07:04 -07:00
2026-07-04 02:37:33 -07:00
2026-07-26 19:29:07 -07:00
2026-07-14 02:59:39 +05:30
2026-07-16 00:18:38 -07:00
2026-07-20 09:21:08 -07:00
2026-07-24 13:37:04 +10:00
2026-07-02 04:20:43 -07:00
2026-07-23 11:55:17 -07:00
2026-07-23 07:33:36 -07:00
2026-07-26 17:13:52 -07:00
2026-07-27 11:53:48 -04:00
2026-07-20 06:50:31 -07:00
2026-07-26 18:02:04 -07:00
2026-07-22 12:13:01 -05:00
2026-07-09 15:38:32 +05:30
2026-07-26 08:26:09 -07:00
2026-07-26 20:58:39 -07:00
2026-07-24 11:45:57 -07:00
2026-07-24 09:49:00 -07:00
2026-07-16 08:52:47 +10:00
2026-07-20 06:50:11 -07:00
2026-07-23 07:33:36 -07:00
2026-07-17 20:55:24 +00:00
2026-07-13 01:59:58 -04:00
2026-07-05 14:42:05 -07:00
2026-07-16 00:18:38 -07:00
2026-07-06 01:55:58 -07:00
2026-07-20 02:25:53 -07:00
2026-07-16 00:18:38 -07:00
2026-07-16 00:18:38 -07:00
2026-07-16 00:18:38 -07:00
2026-07-14 17:09:40 +05:30
2026-07-16 22:46:46 -04:00
2026-07-22 12:13:01 -05:00
2026-07-26 20:58:43 -07:00
2026-07-05 02:24:00 -07:00
2026-07-23 07:33:36 -07:00
2026-07-05 13:51:26 -07:00
2026-07-24 17:10:39 -07:00
2026-07-14 02:59:39 +05:30
2026-07-04 15:30:50 -07:00
2026-07-28 00:14:19 +05:30
2026-07-26 16:27:52 -07:00
2026-07-26 19:28:55 -07:00
2026-07-17 20:55:24 +00:00
2026-07-17 06:54:51 -07:00
2026-07-02 02:13:30 -07:00
2026-07-16 01:28:24 -07:00
2026-07-16 01:28:13 -07:00
2026-07-16 01:28:24 -07:00
2026-07-17 20:55:24 +00:00
2026-07-24 23:09:02 -07:00
2026-07-03 05:30:16 -05:00
2026-07-21 12:43:27 -07:00
2026-07-17 20:55:24 +00:00
2026-07-17 20:55:24 +00:00
2026-07-17 04:50:47 -07:00
2026-07-05 13:40:21 -07:00
2026-07-21 12:42:33 -07:00
2026-07-17 04:57:12 -07:00
2026-07-17 04:50:47 -07:00
2026-07-17 04:50:47 -07:00
2026-07-21 12:43:00 -07:00
2026-07-18 18:49:56 -04:00
2026-07-05 21:36:19 -07:00
2026-07-21 12:42:33 -07:00
2026-07-21 12:42:33 -07:00
2026-07-17 20:55:24 +00:00
2026-07-05 21:48:36 -07:00
2026-07-21 12:43:27 -07:00
2026-07-05 02:06:39 -07:00
2026-07-17 20:55:24 +00:00
2026-07-24 15:47:12 -07:00
2026-07-07 15:16:00 -07:00
2026-07-18 04:15:13 -07:00
2026-07-07 15:16:00 -07:00
2026-07-21 19:54:40 -05:00
2026-07-26 08:26:09 -07:00
2026-07-21 12:42:33 -07:00
2026-07-09 15:38:32 +05:30
2026-07-24 15:58:01 -07:00
2026-07-09 20:03:11 -07:00
2026-07-22 12:13:01 -05:00
2026-07-13 02:42:18 -07:00
2026-07-24 15:59:02 -07:00
2026-07-24 13:00:53 +05:30
2026-07-17 20:55:24 +00:00
2026-07-07 15:14:30 -07:00
2026-07-16 00:18:38 -07:00
2026-07-14 22:14:10 -07:00
2026-07-26 08:26:09 -07:00
2026-07-23 12:01:24 -07:00
2026-07-22 21:58:13 -07:00
2026-07-16 00:18:38 -07:00
2026-07-26 16:18:31 -07:00
2026-07-23 11:44:43 -07:00
2026-07-25 20:15:37 -07:00
2026-07-25 18:10:24 -07:00
2026-07-05 13:42:46 -07:00
2026-07-23 11:44:43 -07:00
2026-07-26 20:59:26 -07:00
2026-07-26 20:59:26 -07:00
2026-07-09 15:38:14 +05:30
2026-07-07 05:14:00 -07:00
2026-07-17 04:52:02 -07:00
2026-07-22 21:58:13 -07:00
2026-07-26 17:46:42 -07:00
2026-07-26 19:30:02 -07:00
2026-07-26 19:30:02 -07:00
2026-07-27 20:28:31 -07:00
2026-07-24 11:45:57 -07:00
2026-07-09 15:38:32 +05:30
2026-07-16 08:55:10 -07:00
2026-07-14 22:00:28 -07:00
2026-07-16 00:18:38 -07:00
2026-07-04 14:17:11 +05:30
2026-07-21 05:27:23 -07:00
2026-07-26 20:59:36 -07:00
2026-07-14 02:59:39 +05:30
2026-07-27 20:28:31 -07:00
2026-07-27 20:28:31 -07:00
2026-07-14 02:59:39 +05:30
2026-07-27 20:28:35 -07:00
2026-07-14 02:59:39 +05:30
2026-07-14 02:59:39 +05:30
2026-07-13 22:26:19 -07:00
2026-07-14 02:59:39 +05:30
2026-07-14 02:59:39 +05:30
2026-07-03 05:30:16 -05:00
2026-07-22 17:53:06 -05:00
2026-07-24 10:37:29 -07:00
2026-07-05 00:47:54 -07:00
2026-07-14 02:59:39 +05:30
2026-07-04 15:30:50 -07:00
2026-07-05 00:47:54 -07:00
2026-07-22 17:47:15 -05:00
2026-07-23 07:33:36 -07:00
2026-07-21 11:51:01 +05:30
2026-07-17 11:37:25 +05:30
2026-07-06 04:38:17 -07:00
2026-07-09 20:28:44 -07:00
2026-07-10 19:14:06 +05:30
2026-07-09 15:38:32 +05:30
2026-07-28 00:05:36 +05:30
2026-07-26 18:28:20 -07:00
2026-07-08 06:17:56 -07:00
2026-07-22 04:40:07 -07:00
2026-07-07 22:14:33 -07:00
2026-07-23 21:06:47 -07:00
2026-07-27 22:28:08 -04:00