Skip to main content
otter-vox turns text into speech on your machine using an embedded Kokoro TTS model. No internet connection required.
otter-vox is part of otter-shell-extras, not the base otter-shell metapackage. Install with pikman install otter-shell-extras.

Usage

Pipe text into otter-vox or pass it as a positional argument. Use --no-play to write a WAV stream to stdout, or -o to save to a file.
printf 'Welcome to Otter Shell.' | otter-vox --no-play | pw-play -  # pipe to PipeWire
printf 'Welcome to Otter Shell.' | otter-vox -o speech.wav           # save to file
otter-vox --voice bm_lewis --play 'Welcome to Otter Shell.'          # speak with voice
otter-vox --check-model                                               # verify model
otter-vox --list-voices                                               # list all voices

Voices

otter-vox ships with Kokoro voice files embedded in the binary, covering several languages and accents.
PrefixLanguage / AccentExample voices
af_*American femalealloy, bella, jessica, nova, heart, kore, nicole, river, sarah, sky
am_*American maleadam, echo, michael, onyx, eric, fenrir, liam, puck
bf_*British femalealice, emma, isabella, lily
bm_*British maledaniel, george, lewis, fable
df_*German femaleeva, victoria
dm_*German malebernd, martin
ef_*Spanish femaledora
em_*Spanish malealex, santa
ff_*French femalesiwis
hf_*Hindi femalealpha, beta
hm_*Hindi maleomega, psi
if_*Italian femalesara
im_*Italian malenicola
jf_*Japanese femalealpha, gongitsune, nezumi, tebukuro
jm_*Japanese malekumo
pf_*Portuguese femaledora
pm_*Portuguese malealex, santa
zf_*Chinese femalexiaobei, xiaoni, xiaoxiao, xiaoyi
zm_*Chinese maleyunjian, yunxi, yunxia, yunyang
Run otter-vox --list-voices to see all embedded voice names available in your install.

Output Options

  • Default: plays audio through your system audio output
  • --no-play: writes a raw WAV stream to stdout for piping to another program
  • -o PATH / --output PATH: saves audio to a file instead of (or alongside) playing it
  • -o speech.wav with playback enabled: saves the file and plays it at the same time

Configuration

otter-vox reads ~/.config/otter-shell/otter-vox.conf.
model_dir = ""
output_path = "-"
playback = true
voice = "bm_george"
cpu_threads = 4
  • model_dir: empty uses the embedded model, extracted at runtime. Set a directory path to use your own Kokoro model and voice files
  • output_path: output destination (- for stdout)
  • playback: play audio after synthesis
  • voice: default voice name
  • cpu_threads: thread count for inference