Voice: TTS & STT
TomoriBot can speak (text-to-speech) and listen (speech-to-text):
- TTS lets her reply with native Discord voice messages.
- STT turns user audio attachments into text she can use as conversation context.
Both work through the same endpoint system. The quickest path is ElevenLabs (cloud, documented in full below). If you’d rather run voice on your own hardware, use a local engine and follow the self-hosting guides.
Text-to-Speech
Section titled “Text-to-Speech”ElevenLabs (cloud, easiest)
Section titled “ElevenLabs (cloud, easiest)”- Get an API key from ElevenLabs.
- Run
/speech elevenlabsand paste the key. This single command:- registers the ElevenLabs speech endpoint (and the transcription endpoint too),
- selects them as active,
- can assign a voice to one persona on the spot.
- Assign voices to additional personas with
/speech voice-assign. Browse voices in the ElevenLabs Voice Library, where you can also clone your own.
Run /speech elevenlabs again anytime to update the saved key.
Notes:
- On the free plan, only premade voices work. Browse the premade voice list.
- Characters are counted when she generates and reads voice messages; the free tier has monthly limits — check your ElevenLabs dashboard.
- Voice replies are gated by
voice_message_enabledand require the active persona to have a voice assigned.
Run /help speech for the same walkthrough in Discord.
Local voice-cloning engines (self-hosted)
Section titled “Local voice-cloning engines (self-hosted)”On a self-hosted instance you can run a local voice-clone server instead. The general flow is:
start the wrapper server, register it with /provider custom-endpoint add, select it with
/model speech, upload a sample with /speech voice-add, then assign it with
/speech voice-assign. Any audio format is accepted (auto-converted to mono WAV); 10–20
second clips with no background music work best.
Each engine has its own setup guide:
- Chatterbox-Turbo — fast, English-only, supports
bracket delivery tags like
[excited]. - Qwen3-TTS — multilingual (10 languages), plus a natural-language VoiceDesign mode.
- IrodoriTTS — Japanese-specialized, reads emoji as emotion cues.
See the Text-to-Speech hub for the full list.
Speech-to-Text
Section titled “Speech-to-Text”Transcription endpoints turn user audio attachments into text for background conversation
context. Whether transcripts are visibly posted in chat is controlled separately by
/speech transcripts.
ElevenLabs (cloud)
Section titled “ElevenLabs (cloud)”Already covered above — /speech elevenlabs registers the transcription endpoint alongside
speech. Use /model transcription to pick between transcription endpoints.
Local engines (self-hosted)
Section titled “Local engines (self-hosted)”- WhisperX — the recommended local path; ~100 languages, GPU-accelerated, multiple model sizes.
- KoboldCPP — works if your build exposes an OpenAI-compatible transcription endpoint.
- whisper.cpp.
See the Speech-to-Text hub for the full list. Run
/help transcription for the Discord summary.