Skip to main content
skill CX Codex

speakturbo-tts — Claude Code skill: spoken output in ~90ms

This skill gives your agent a voice, speaking text aloud through a local daemon with roughly 90ms latency. Useful when you want fast audio feedback from Claude.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add EmZod/Speak-Turbo --skill speakturbo-tts -a claude-code
Open on GitHub

What speakturbo-tts does

The skill ships a Rust CLI called speakturbo plus a Python daemon running pocket-tts. The daemon keeps the model in memory and streams audio over HTTP on port 7125, with playback handled by rodio. Eight voices are built in: alba (the default), marius, javert, jean, fantine, cosette, eponine, azelma.

The first call takes 2-5 seconds while the daemon starts and loads a model of about 100MB. After that, first sound arrives in around 90ms. The daemon starts on its own at first use and shuts down after an hour idle.

The -o flag writes files only into allowlisted directories: the system temp folder, your current working directory, and ~/.speakturbo/. Anything else needs --allow-dir, or the write fails. Voice cloning and emotion tags like [laugh] are not here; the repo has a separate speak skill for that.

What it helps with

  • hear the agent's answer read aloud while it works
  • save synthesized speech to a wav file
  • check which voices the build ships with
  • listen to a long generation as it streams
  • switch to a different built-in voice quickly

Example prompts for the agent

  • Read the last paragraph out loud with speakturbo-tts
  • Say "build passed" using speakturbo-tts
  • Save that sentence to wav with speakturbo-tts

How to install speakturbo-tts

1Skills CLI (Vercel)

npx skills add EmZod/Speak-Turbo --skill speakturbo-tts -a claude-code

2Manually: put the files in place

~/.claude/skills/speakturbo-tts/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/speakturbo-tts/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about speakturbo-tts

How do I install speakturbo-tts in Claude?

Run npx skills add EmZod/Speak-Turbo --skill speakturbo-tts -a claude-code. The skill lands at ~/.claude/skills/speakturbo-tts/SKILL.md.

What does speakturbo-tts do?

It speaks text through a local daemon with about 90ms latency and 8 built-in voices. It can play audio right away or write it to a wav file.

How is speakturbo-tts different from the speak skill?

speakturbo reaches first sound faster and runs on pocket-tts, but it cannot clone voices or add emotion tags. For cloning and tags like [laugh], use speak on Chatterbox.

Source text

SKILL.md · MIT
---
name: speakturbo-tts
description: Give your agent the ability to speak to you real-time. Talk to your Claude! Ultra-fast TTS, text-to-speech, voice synthesis, audio output with ~90ms latency. 8 built-in voices for instant voice responses. For voice cloning, use the speak skill.
---

# speakturbo - Talk to your Claude!

Give your agent the ability to speak to you real-time. Ultra-fast text-to-speech with ~90ms latency and 8 built-in voices.

## Quick Start

```bash
# Play immediately - you should hear "Hello world" through your speakers
speakturbo "Hello world"
# Output: ⚡ 92ms → ▶ 93ms → ✓ 1245ms

# Verify it's working by saving to file
speakturbo "Hello world" -o test.wav
ls -lh test.wav  # Should show ~50-100KB file
```

**Output explained:** `⚡` = first audio received, `▶` = playback started, `✓` = done

## First Run

The **first execution takes 2-5 seconds** while the daemon starts and loads the model into memory. Subsequent calls are ~90ms to first sound.

```bash
# First run (slow - daemon starting)
speakturbo "Starting up"  # ~2-5 seconds

# Second run (fast - daemon already running)
speakturbo "Now I'm fast"  # ~90ms
```

## Usage

```bash
# Basic - plays immediately (default voice: alba)
speakturbo "Hello world"

# Save to file (no audio playback)
speakturbo "Hello" -o output.wav

# Save to specific file
speakturbo "Goodbye" -o goodbye.wav

# Quiet mode (suppress status messages, still plays audio)
speakturbo "Hello" -q

# List available voices
speakturbo --list-voices
```

## Available Voices

| Voice | Type |
|-------|------|
| `alba` | Female (default) |
| `marius` | Male |
| `javert` | Male |
| `jean` | Male |
| `fantine` | Female |
| `cosette` | Female |
| `eponine` | Female |
| `azelma` | Female |

## Performance

| Metric | Value |
|--------|-------|
| Time to first sound | ~90ms (daemon warm) |
| First run | 2-5s (daemon startup) |
| Real-time factor | ~4x faster |
| Sample rate | 24kHz mono |

## Architecture

```
speakturbo (Rust CLI, 2.2MB)
    │
    │ HTTP streaming (port 7125)
    ▼
speakturbo-daemon (Python + pocket-tts)
    │
    │ Model in memory, auto-shutdown after 1hr idle
    ▼
Audio playback (rodio)
```

## Text Input

- **Encoding:** UTF-8
- **Quotes in text:** Use escaping: `speakturbo "She said \"hello\""`
- **Long text:** Supported, streams as it generates

## Output Path Security

The `-o` flag only writes to directories that are on the allowlist. By default, these are:

- `/tmp` and system temp directories
- Your current working directory
- `~/.speakturbo/`

If you need to write elsewhere, use `--allow-dir`:

```bash
speakturbo "Hello" -o /custom/path/audio.wav --allow-dir /custom/path
```

To permanently allow a directory, add it to `~/.speakturbo/config`:

```bash
mkdir -p ~/.speakturbo && echo "/custom/path" >> ~/.speakturbo/config
```

The config file is one directory per line. Lines starting with `#` are comments.

## Exit Codes

| Code | Meaning |
|------|---------|
| 0 | Success (audio played/saved) |
| 1 | Error (daemon connection failed, invalid args) |

## When to Use

**Use speakturbo when:**
- You need instant audio feedback (~90ms)
- Speed matters more than voice variety
- Built-in voices are sufficient

**Use `speak` instead when:**
- You need custom voice cloning (Morgan Freeman, etc.)
  → `speak "text" --voice ~/.chatter/voices/morgan_freeman.wav`
- You need emotion tags like `[laugh]`, `[sigh]`
- Quality/variety matters more than speed

See the `speak` skill documentation for full usage.

## Troubleshooting

**No audio plays:**
```bash
# Check daemon is running
curl http://127.0.0.1:7125/health
# Expected: {"status":"ready","voices":["alba","marius",...]}

# Verify by saving to file and playing manually
speakturbo "test" -o /tmp/test.wav
afplay /tmp/test.wav  # macOS
aplay /tmp/test.wav   # Linux
```

**Daemon won't start:**
```bash
# Check port availability
lsof -i :7125

# Manually kill and restart
pkill -f "daemon_streaming"
speakturbo "test"  # Auto-restarts daemon
```

**First run is slow:**
This is expected. The daemon needs to load the ~100MB model into memory. Subsequent calls will be fast (~90ms).

## Daemon Management

The daemon auto-starts on first use and **auto-shuts down after 1 hour idle**.

```bash
# Check status
curl http://127.0.0.1:7125/health

# Manual stop
pkill -f "daemon_streaming"

# View logs
cat /tmp/speakturbo.log
```

## Comparison with speak

| Feature | speakturbo | speak |
|---------|------------|-------|
| Time to first sound | ~90ms | ~4-8s |
| Voice cloning | ❌ | ✅ |
| Emotion tags | ❌ | ✅ |
| Voices | 8 built-in | Custom wav files |
| Engine | pocket-tts | Chatterbox |

© EmZod · MIT · EmZod/Speak-Turbo

Similar skills

All skills for Agent setup: memory, context, orchestration →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor