viettranx
04a9938f4f
feat(tts): wire tenant timeout + fix Gemini text-only 400
- HTTP synthesize + test-connection now read tenant tts.timeout_ms
(default 120s, was hardcoded 15s/10s). Gemini client default also
bumped 30s→120s so both layers align when tenant config unset.
- Inline prefix "Speak naturally: " prepended to single-voice text;
multi-speaker transcripts pass through unchanged.
- ErrTextOnlyResponse sentinel for 400 "text generation" bodies;
single-voice retries once with stronger prefix. Narrowed needle
list avoids false positives on unrelated 400s.
- SynthesizeWithFallbackAdapted now returns errors.Join so sentinel
survives fallback chain; HTTP 422 mapping + locale-translated
ForLLM in agent tool (EN/VI/ZH catalogs).
- Default Gemini model bumped to gemini-3.1-flash-tts-preview.
2026-04-23 08:31:53 +07:00
..
2026-04-16 14:17:48 +07:00
2026-04-12 21:23:21 +07:00
2026-04-12 08:55:20 +07:00
2026-04-09 21:15:19 +07:00
2026-04-17 19:50:11 +07:00
2026-04-09 21:15:19 +07:00
2026-04-11 21:22:23 +07:00
2026-04-15 11:24:57 +07:00
2026-04-15 11:24:57 +07:00
2026-04-04 23:07:42 +07:00
2026-04-02 09:53:01 +07:00
2026-04-02 09:35:21 +07:00
2026-04-02 09:35:21 +07:00
2026-04-23 08:22:39 +07:00
2026-04-23 08:22:39 +07:00
2026-04-04 23:07:42 +07:00
2026-04-02 10:33:35 +07:00
2026-04-02 10:33:35 +07:00
2026-04-02 10:33:35 +07:00
2026-04-14 18:28:31 +07:00
2026-03-15 20:13:18 +07:00
2026-03-15 20:13:18 +07:00
2026-04-14 10:46:53 +07:00
2026-04-19 14:23:26 +07:00
2026-04-16 14:17:48 +07:00
2026-03-16 08:14:03 +07:00
2026-04-17 19:50:11 +07:00
2026-04-16 14:17:48 +07:00
2026-04-12 19:56:15 +07:00
2026-04-17 19:02:53 +07:00
2026-04-17 19:02:53 +07:00
2026-02-22 22:49:22 +07:00
2026-04-02 19:28:04 +07:00
2026-04-09 21:15:19 +07:00
2026-03-28 17:25:59 +07:00
2026-04-09 21:15:19 +07:00
2026-03-21 07:29:48 +07:00
2026-03-21 07:29:48 +07:00
2026-04-23 08:31:53 +07:00
2026-04-14 18:28:31 +07:00
2026-04-18 12:27:28 +07:00
2026-03-12 09:35:04 +07:00
2026-03-19 17:21:38 +07:00
2026-04-01 13:59:56 +07:00
2026-04-09 21:15:19 +07:00
2026-04-09 21:15:19 +07:00
2026-03-25 13:40:44 +07:00
2026-04-12 09:00:58 +07:00
2026-04-23 08:22:39 +07:00
2026-04-09 21:15:19 +07:00
2026-03-29 22:33:17 +07:00
2026-03-27 22:45:40 +07:00
2026-04-10 13:32:02 +07:00
2026-04-18 17:44:57 +07:00
2026-04-18 17:45:28 +07:00
2026-04-23 08:31:53 +07:00
2026-03-10 00:09:15 +07:00
2026-04-18 14:54:51 +07:00
2026-04-23 08:22:39 +07:00
2026-04-16 17:07:56 +07:00
2026-03-20 09:14:28 +07:00
2026-04-16 17:07:56 +07:00
2026-04-23 08:22:39 +07:00
2026-04-16 14:17:48 +07:00
2026-03-10 00:09:15 +07:00
2026-02-22 14:58:07 +07:00
2026-04-18 14:54:51 +07:00
2026-03-10 00:09:15 +07:00
2026-03-10 00:09:15 +07:00
2026-04-11 21:39:47 +07:00
2026-04-11 21:39:47 +07:00
2026-04-11 21:39:47 +07:00
2026-03-23 08:08:23 +07:00
2026-03-10 00:09:15 +07:00
2026-04-15 11:24:57 +07:00
2026-03-24 21:09:16 +07:00
2026-04-23 08:22:39 +07:00
2026-04-23 08:22:39 +07:00
2026-03-20 07:32:23 +07:00
2026-03-20 07:32:23 +07:00
2026-03-20 07:32:23 +07:00
2026-03-20 07:32:23 +07:00
2026-03-04 20:08:59 +07:00
2026-04-12 21:05:10 +07:00
2026-03-15 20:13:18 +07:00
2026-04-23 08:31:53 +07:00
2026-04-23 08:31:53 +07:00
2026-04-13 11:04:19 +07:00
2026-04-13 11:04:19 +07:00
2026-04-13 11:04:19 +07:00
2026-04-16 14:17:48 +07:00
2026-03-30 22:28:00 +07:00
2026-04-13 11:04:19 +07:00
2026-04-15 11:24:57 +07:00
2026-04-17 19:02:53 +07:00
2026-04-02 18:58:24 +07:00
2026-04-08 13:35:19 +07:00
2026-04-08 13:38:30 +07:00
2026-04-14 18:28:31 +07:00
2026-04-14 18:28:31 +07:00
2026-04-19 14:23:26 +07:00
2026-04-16 14:17:48 +07:00
2026-03-24 20:40:59 +07:00
2026-03-31 11:45:16 +07:00
2026-03-31 11:45:16 +07:00
2026-04-16 14:17:48 +07:00
2026-03-31 11:45:16 +07:00
2026-03-31 11:44:54 +07:00
2026-03-31 11:45:16 +07:00
2026-03-31 11:45:16 +07:00
2026-04-16 14:17:48 +07:00
2026-03-23 08:08:23 +07:00
2026-04-16 14:17:48 +07:00
2026-03-18 11:04:45 +07:00
2026-03-27 09:28:42 +07:00
2026-03-23 13:51:28 +07:00
2026-04-12 19:03:47 +07:00
2026-03-20 17:51:40 +07:00
2026-04-23 08:31:53 +07:00
2026-04-11 21:22:23 +07:00
2026-03-29 19:41:35 +07:00
2026-04-12 19:03:47 +07:00
2026-03-24 08:56:10 +07:00
2026-03-27 22:26:36 +07:00
2026-04-16 14:17:48 +07:00
2026-03-27 22:26:36 +07:00
2026-04-16 14:17:48 +07:00
2026-03-27 22:26:36 +07:00
2026-03-28 17:25:59 +07:00
2026-03-27 22:26:36 +07:00
2026-04-18 14:53:42 +07:00
2026-03-27 22:26:36 +07:00
2026-03-28 17:25:59 +07:00
2026-03-27 22:26:36 +07:00
2026-03-27 22:26:36 +07:00
2026-04-09 21:15:19 +07:00
2026-03-27 22:26:36 +07:00
2026-04-16 14:17:48 +07:00
2026-04-18 15:53:40 +07:00
2026-04-12 17:05:57 +07:00
2026-04-12 17:05:57 +07:00
2026-03-27 22:26:36 +07:00
2026-04-12 19:03:47 +07:00
2026-03-31 12:10:55 +07:00
2026-03-31 12:10:55 +07:00
2026-03-27 21:03:34 +07:00
2026-04-18 17:47:17 +07:00
2026-04-15 11:24:57 +07:00
2026-04-20 06:46:19 +07:00
2026-04-16 14:17:48 +07:00
2026-04-23 08:31:53 +07:00
2026-04-23 08:31:53 +07:00
2026-04-23 08:22:39 +07:00
2026-03-10 00:09:15 +07:00
2026-04-11 21:22:23 +07:00
2026-04-19 15:00:07 +07:00
2026-04-19 15:00:07 +07:00
2026-04-19 15:00:07 +07:00
2026-04-19 15:00:07 +07:00
2026-03-10 00:09:15 +07:00
2026-03-03 17:10:55 +07:00
2026-03-07 19:35:19 +07:00
2026-03-10 00:09:15 +07:00
2026-03-20 14:21:46 +07:00
2026-04-12 11:19:00 +07:00
2026-03-20 14:21:46 +07:00
2026-03-20 22:26:48 +07:00
2026-03-10 00:09:15 +07:00
2026-04-12 11:19:00 +07:00
2026-04-12 11:19:00 +07:00
2026-04-12 11:09:32 +07:00
2026-04-18 17:47:17 +07:00
2026-04-18 17:47:17 +07:00
2026-04-18 17:47:21 +07:00
2026-04-12 11:09:32 +07:00
2026-04-12 11:09:32 +07:00
2026-04-18 17:47:21 +07:00
2026-04-12 11:09:32 +07:00
2026-04-18 17:47:21 +07:00
2026-03-07 19:31:56 +07:00
2026-03-24 23:17:51 +07:00
2026-03-23 08:08:23 +07:00
2026-03-18 13:02:07 +07:00
2026-03-25 16:03:31 +07:00
2026-03-25 16:03:31 +07:00