Voices and mouths
Pick an Aura voice, or switch the mouth to ElevenLabs or to Kokoro on your Mac.
To change the voice, say “slash voice asteria”. The mouth is the part that speaks: it turns each sentence of a reply into speech as soon as the brain has written it. Deepgram Aura is the default mouth. ElevenLabs is the paid alternative, and Kokoro runs on your Mac with no key.
Pick a Deepgram Aura voice
Any Aura-2 voice works. Setup offers these six, and aura-2-orion-en is the default:
aura-2-orion-enmale, calm, approachableaura-2-arcas-enmale, smooth, clearaura-2-apollo-enmale, confident, casualaura-2-thalia-enfemale, clear, confidentaura-2-asteria-enfemale, knowledgeable, energeticaura-2-athena-enfemale, calm, professionalChange it by voice, or from the shell with the full name:
The short name is enough: “asteria” becomes aura-2-asteria-en. The confirmation already speaks in the new voice.
Pick one by how it sounds
Say what you want instead of a name: “slash voice a British woman”, “slash voice deep male”, “slash voice calm storytelling”. Each Aura voice carries Deepgram's own description of it: its accent, its age, words like warm, raspy or baritone, and what it suits, such as storytelling or customer service. “Woman” and “female” mean feminine, “man” and “male” mean masculine.
When one voice has every feature you said, it becomes the voice, as if you had said its name. When several do, they are listed on screen with their descriptions, and nothing changes; say one of them, or add a feature. “Slash voice” alone lists all of them, described the same way.
From the shell, claudio set voice still takes a name.
“Slash voice” sets the voice of the mouth that speaks: the Aura voice with Deepgram, elevenlabs_voice with ElevenLabs, local_voice with Kokoro. “Slash elevenlabs voice” and “slash local voice” set theirs whichever mouth speaks.
The name is not checked against Deepgram's list. A voice Deepgram does not know leaves the mouth unable to connect, and you see ! mouth lost. Deepgram's text-to-speech models page lists every voice.
Switch the mouth to ElevenLabs
The ears are always Deepgram, so you still need a Deepgram key. Setup does not ask for the ElevenLabs key, so add it yourself:
Add the ElevenLabs key
Add it to ~/.config/claudio/secrets.json, next to the Deepgram key:
{ "deepgram_api_key": "your_deepgram_key", "elevenlabs_api_key": "your_elevenlabs_key" }Or export it in the shell you start claudio from, then restart claudio:
export ELEVENLABS_API_KEY=your_elevenlabs_keySwitch the mouth
claudio set mouth elevenlabsA running claudio reloads the settings and the key from secrets.json, and the next reply speaks through ElevenLabs.
Pick an ElevenLabs voice
By voice, say a name from your ElevenLabs voice library, or what you want, as for Aura: “slash voice Adam”, “slash voice a British woman” while ElevenLabs speaks, or “slash elevenlabs voice Adam” at any time. claudio reads the library when it starts, with each voice's accent, age, gender, style and use, and the words after its name, so Adam - Dominant, Firm is dominant and firm. One voice that fits becomes the voice; several are listed on screen.
From the shell, elevenlabs_voice takes the voice id, not a name. Copy it from the library:
claudio set elevenlabs_voice pNInz6obpgDQGcFmaJgBclaudio streams from ElevenLabs' eleven_flash_v2_5 model as 24 kHz PCM (pcm_24000).
If mouth is elevenlabs but no ElevenLabs key is set, Deepgram Aura speaks instead, with no warning. The banner shows which mouth started: voice elevenlabs pNInz6ob for ElevenLabs, voice orion for Aura. “slash status” always names the Aura voice, even while ElevenLabs speaks.
To go back to Aura:
claudio set mouth deepgramSpeak with Kokoro, on your Mac
The local mouth runs Kokoro, an open voice model, on your Mac's CPU. It needs no key, and what claudio says never leaves the machine. The ears are still Deepgram, so you still need a Deepgram key.
Install Kokoro and espeak-ng
brew install espeak-ng
uv tool install --reinstall 'claudio[local] @ git+https://github.com/ActurialCapital/claudio'Switch the mouth
claudio set mouth localThe next start downloads the compressed voice model to ~/.config/claudio/models, about 115 MB, once.
Pick a voice and a speed
claudio set local_voice af_heart
claudio set local_speed 1.1local_voice is a Kokoro voice name: the first letter is the accent (a American, b British), the second is female or male. am_michael is the default; af_heart, am_fenrir, bf_emma and bm_george are others worth trying. A name Kokoro does not know stops the start with the full list. By voice, the same features work as for Aura: “slash local voice British man” lists bm_daniel, bm_fable, bm_george and bm_lewis, and a feature only one voice has picks it. local_speed runs from 0.5 to 2.0.
Pick the compressed or the full model
claudio set local_model fullcompressed is the default: 88 MB and about twice as fast. full is 325 MB and sounds a little cleaner. The first reply after a switch downloads the model if it is not there yet, then loads it; both stay on disk, so switching back is instant.
Synthesis time on an M4, per sentence:
| Model | Short sentence | 70 characters |
|---|---|---|
compressed | 0.2 s | 0.5 s |
full | 0.5 s | 1.0 s |
Either way the first word comes a little later than with Aura. The banner shows voice local am_michael.
What happens when the mouth fails
A reply is never lost. You read it as text instead:
- The speech service cannot be reached: claudio tries once more after one second. If that fails too, you see
! mouth lost: the speech service is unreachable; text only, and the reply is shown as text. - The connection drops mid-reply: claudio opens a new connection and carries on from the sentence it was on. If that fails, you see
! mouth lost mid-reply; the rest is text only.
Each new reply tries the mouth again. Troubleshooting has the fixes.
Settings
voicetextany Deepgram Aura-2 voice: a name such as zeus, or a full model name
- default
aura-2-orion-en- accepts
- text
- env
CLAUDIO_VOICE
mouthtextwho speaks: Deepgram Aura, ElevenLabs, or local (Kokoro on this Mac, no key)
- default
deepgram- accepts
deepgram·elevenlabs·local- env
CLAUDIO_MOUTH
elevenlabs_voicetextElevenLabs voice id, when mouth is elevenlabs
- default
pNInz6obpgDQGcFmaJgB- accepts
- text
- env
CLAUDIO_ELEVENLABS_VOICE
local_voicetextKokoro voice, when mouth is local: am_michael, af_heart, bm_george…
- default
am_michael- accepts
- text
- env
CLAUDIO_LOCAL_VOICE
local_speednumberhow fast the local voice speaks, 0.5 to 2.0
- default
1- accepts
0.5to2- env
CLAUDIO_LOCAL_SPEED
local_modeltextKokoro model: compressed (88 MB, about twice as fast) or full (325 MB, a little cleaner)
- default
compressed- accepts
compressed·full- env
CLAUDIO_LOCAL_MODEL