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
/providers, choose Add New Provider, select ElevenLabs, and paste the key. This flow:- 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 under Persona > Voice in
/config. Browse voices in the ElevenLabs Voice Library, where you can also clone your own.
Select ElevenLabs in /providers, then choose Edit Endpoint anytime you need to update the 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, so check your ElevenLabs dashboard.
- Voice replies are gated by
voice_message_enabledand require the active persona to have a voice assigned. - Persona > Voice in
/configrequires Manage Server in a guild and remains available to the owner in a DM-backed workspace.
In /help, choose Features, then 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 its connection and model with /providers, select it with
/providers, upload a sample with /config under Models > TTS Parameters & Voices, then assign it under
Persona > Voice in /config. 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/Nano: fast, English-only voice cloning with supported event tags such as
[laugh]. - Qwen3-TTS: multilingual (10 languages), plus a natural-language VoiceDesign mode.
- MOSS-TTS: trial auto endpoint for multilingual cloning or English/Chinese voice design.
- IrodoriTTS: Japanese-specialized, reads emoji as emotion cues.
See the Text-to-Speech comparison table for the full list and hardware guidance.
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
/config > Engine > Notices.
ElevenLabs (cloud)
Section titled “ElevenLabs (cloud)”Already covered above: adding ElevenLabs from /providers registers the transcription endpoint alongside
speech. Use /providers 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. For the
Discord summary, run /help, then choose Features and Transcription.