diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-18 23:18:37 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-18 23:18:37 +0200 |
| commit | b252c39517b9fce181d1a0fe4761404c7d981397 (patch) | |
| tree | 564cf01aed601f1974e0de8801d4452215ec05f5 /AGENTS.md | |
| parent | fir auto completion and send file in the response body upon grajcuj file (diff) | |
| download | senator-sperma-b252c39517b9fce181d1a0fe4761404c7d981397.tar.gz senator-sperma-b252c39517b9fce181d1a0fe4761404c7d981397.zip | |
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)
Diffstat (limited to 'AGENTS.md')
| -rw-r--r-- | AGENTS.md | 3 |
1 files changed, 2 insertions, 1 deletions
| @@ -15,7 +15,7 @@ src/ | |||
| 15 | │ ├── music.rs — /play (🟡 stub), /stop, /join, /loop_toggle | 15 | │ ├── music.rs — /play (🟡 stub), /stop, /join, /loop_toggle |
| 16 | │ ├── qr.rs — /qr encode + decode | 16 | │ ├── qr.rs — /qr encode + decode |
| 17 | │ ├── trigger.rs — /trigger group (6 subcommands) | 17 | │ ├── trigger.rs — /trigger group (6 subcommands) |
| 18 | │ ├── tts.rs — /tts (Google TTS → file/vc), /log_volume | 18 | │ ├── tts.rs — /tts (local Piper TTS → file/vc), /log_volume |
| 19 | │ ├── utilities.rs — compress🟡, convert🟡, upload, search, download, say | 19 | │ ├── utilities.rs — compress🟡, convert🟡, upload, search, download, say |
| 20 | │ └── web.rs — /web (DuckDuckGo scrape) | 20 | │ └── web.rs — /web (DuckDuckGo scrape) |
| 21 | ├── copyparty/mod.rs — CopypartyClient (search, upload) | 21 | ├── copyparty/mod.rs — CopypartyClient (search, upload) |
| @@ -23,6 +23,7 @@ src/ | |||
| 23 | ├── events/mod.rs — handle_ready, handle_voice_state_update, handle_message | 23 | ├── events/mod.rs — handle_ready, handle_voice_state_update, handle_message |
| 24 | ├── openrouter/mod.rs — OpenRouterClient (chat, chat_with_history) | 24 | ├── openrouter/mod.rs — OpenRouterClient (chat, chat_with_history) |
| 25 | ├── tasks/mod.rs — cron_scheduler_loop (30s polling, stub exec bodies) | 25 | ├── tasks/mod.rs — cron_scheduler_loop (30s polling, stub exec bodies) |
| 26 | ├── tts.rs — synthesize(): Piper subprocess → Google TTS fallback | ||
| 26 | └── voice/mod.rs — VoiceManager (connect, disconnect, get_call), mp3_to_input | 27 | └── voice/mod.rs — VoiceManager (connect, disconnect, get_call), mp3_to_input |
| 27 | ``` | 28 | ``` |
| 28 | 29 | ||
