Cleanser-Labs/claudio

Give claude a voice with a real time text to speech proxy

24

stars

6

commits

Python

primary language

Feb 8, 2026

updated

README

Claudio

Give Claude a voice with real-time TTS.

https://github.com/user-attachments/assets/f535dcd9-23c2-46df-b77e-3df8ddf65284

uv tool install git+https://github.com/cleanser-labs/claudio
claudio init    # picks the best TTS for your system
claudio         # launches Claude Code with voice

Install

From source

git clone https://github.com/cleanser-labs/claudio.git
cd claudio
uv sync

Usage

claudio                              # Launch Claude with voice
claudio --speak text                 # Speak all text, skip code blocks
claudio --tts kokoro --voice nova    # Pick backend and voice
claudio --speed 1.2                  # Faster speech
claudio --persona narrator           # Use a persona
claudio voices                       # List available voices
claudio try --voice nova             # Audition a voice

Using with raw claude

You can run the proxy standalone and point any Claude Code session at it:

# Terminal 1: start the proxy
claudio proxy --speak text

# Terminal 2: launch claude with the proxy
ANTHROPIC_BASE_URL=http://127.0.0.1:9000 claude

The proxy intercepts Claude API traffic, extracts text, and speaks it through your configured TTS engine. All other API behavior is unchanged.

Speak modes

ModeFlagBehavior
tags--speak tagsOnly speaks text inside <say>...</say> tags (default). Claude needs a system prompt telling it to use <say> tags — claudio injects this automatically, but with raw claude you'll need to add it yourself.
text--speak textSpeaks all text automatically, skips code blocks and JSON. No special prompting needed.
all--speak allSpeaks everything including code blocks.
off--speak offTTS disabled, proxy just forwards requests.

For most setups with raw claude, --speak text is the easiest since it requires no prompt changes.

Guides

Contributors

michalwols

6 commits

Cleanser-Labs/claudio

Give claude a voice with a real time text to speech proxy

24

stars

6

commits

Python

primary language

Feb 8, 2026

updated

README

Claudio

Give Claude a voice with real-time TTS.

https://github.com/user-attachments/assets/f535dcd9-23c2-46df-b77e-3df8ddf65284

uv tool install git+https://github.com/cleanser-labs/claudio
claudio init    # picks the best TTS for your system
claudio         # launches Claude Code with voice

Install

From source

git clone https://github.com/cleanser-labs/claudio.git
cd claudio
uv sync

Usage

claudio                              # Launch Claude with voice
claudio --speak text                 # Speak all text, skip code blocks
claudio --tts kokoro --voice nova    # Pick backend and voice
claudio --speed 1.2                  # Faster speech
claudio --persona narrator           # Use a persona
claudio voices                       # List available voices
claudio try --voice nova             # Audition a voice

Using with raw claude

You can run the proxy standalone and point any Claude Code session at it:

# Terminal 1: start the proxy
claudio proxy --speak text

# Terminal 2: launch claude with the proxy
ANTHROPIC_BASE_URL=http://127.0.0.1:9000 claude

The proxy intercepts Claude API traffic, extracts text, and speaks it through your configured TTS engine. All other API behavior is unchanged.

Speak modes

ModeFlagBehavior
tags--speak tagsOnly speaks text inside <say>...</say> tags (default). Claude needs a system prompt telling it to use <say> tags — claudio injects this automatically, but with raw claude you'll need to add it yourself.
text--speak textSpeaks all text automatically, skips code blocks and JSON. No special prompting needed.
all--speak allSpeaks everything including code blocks.
off--speak offTTS disabled, proxy just forwards requests.

For most setups with raw claude, --speak text is the easiest since it requires no prompt changes.

Guides

Contributors

michalwols

6 commits

Languages

Python

99.0%