From b252c39517b9fce181d1a0fe4761404c7d981397 Mon Sep 17 00:00:00 2001 From: salmonik Date: Tue, 18 Aug 2026 23:18:37 +0200 Subject: feat: local TTS via piper subprocess with Google fallback - New src/tts.rs: centralize TTS in synthesize(config, http_client, text) Piper subprocess primary, Google Translate fallback on error/missing - TTS_MODEL_PATH/TTS_VOICE env config (defaults to pl_PL-bass-high) - Fix Unknown interaction errors: spawn play_tts_in_channel in background so voice-state TTS no longer blocks the shard event loop (3s Discord limit) - Best-effort confirmation replies in /tts to prevent error cascade - Custom on_error handler: graceful interaction-expired error handling - Comprehensive tracing logging (engine, model, duration, stderr) --- src/lang.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/lang.rs') diff --git a/src/lang.rs b/src/lang.rs index 05e82fd..aad0413 100644 --- a/src/lang.rs +++ b/src/lang.rs @@ -114,6 +114,13 @@ pub fn fmt_voice_join_failed(e: &dyn std::fmt::Display) -> String { pub const L_TTS_SAVED: &str = "TTS zapisany"; pub const L_TTS_PLAYING: &str = "Grom TTS na kanale głosowym"; +pub fn fmt_tts_piper_launch(e: &str) -> String { + format!("Piper sie nie uruchomił w czas: {e}") +} +pub fn fmt_tts_piper_failed(e: &str) -> String { + format!("Piper TTS sie nie powiodło: {e}") +} + // ── Trigger command ─────────────────────────────────────────────────── pub const L_TRIGGER_UPDATED: &str = "Trigger zaktualizowany"; -- cgit v1.2.3