Skip to main content

Give your AI a voice. Hear your code finish.

Project description

s-peach

Give your AI a voice.

Stop reading logs. Hear when your code is done.

s-peach banner

Python 3.11+ License MIT Platform macOS | Linux | Windows


s-peach is a TTS notification server for AI agents with support for summaries.

Hook it up to notification services through CLI, REST, or MCP.

Features

  • Multiple TTS models — runs on everything from a potato to a high-end rig
  • Audio queue — notifications queue up and play in order
  • Full featured CLI — use easily from any script
  • Daemon mode — runs as a background process; survives terminal closes
  • MCP tools — via SSE endpoint at /mcp for agent use
  • Doctor diagnosticss-peach doctor helps you get started
  • Voice discovery — audition voices easily s-peach discover
  • Voice cloning — Chatterbox supports zero-shot voice cloning
  • Security first — IP whitelist and automatic API key generation
  • Claude Code hooks — one command to hook you up

Platform Support

macOS and Linux — full support.
WSL — full support (it's Linux).
Windows — partial: s-peach serve, CLI client commands, and Claude Code hooks work.
Daemon management (start/stop/restart) and OS service install require POSIX.

TTS Models

Model Download Est. RAM Voices Voice Cloning Speed Control Notes
kitten-nano (int8) 26 MB ~40 MB 8 No Yes Fastest
kitten-micro 43 MB ~80 MB 8 No Yes Sweet spot for low-RAM setups
kitten-mini 78 MB ~150 MB 8 No Yes Good balance for CPU
Kokoro-82M 339 MB ~300 MB 54 No Yes High quality, 9 languages
Chatterbox 3.0 GB ~3.5 GB Unlimited Yes No Best quality & Zero-shot voice cloning
Chatterbox Turbo 3.8 GB ~4 GB Unlimited Yes No Faster variant
Chatterbox Multi ~3.0 GB ~3.5 GB Unlimited Yes No 23 languages & voice cloning

Chatterbox models are not installed by default — they add ~750 MB of Python dependencies plus multi-GB model downloads on first use.

Installation

Install with uv

# default install
uv tool install s-peach-tts

# with chatterbox voice cloning (chatterbox requires some pin overrides)
uv tool install "s-peach-tts[chatterbox]" \
  --overrides <(echo -e "numpy>=2.0\ntorch>=2.6.0\ntorchaudio>=2.6.0")

Quick Start

Recommended first run

s-peach init              # scaffold config home dir
s-peach serve             # start the server in foreground
s-peach say "Hello world" # test it out

Discover voices

s-peach voices                                     # see all voices
s-peach discover --model "kitten-micro"            # audition all voices for a model
s-peach discover --model "kokoro" --voices "Onyx,River,Heart" # audition selected voices

Configure

Default settings enable Kokoro 82M. Edit server settings to enable other models. They will download on server startup.

s-peach config             # see help screen for paths and info
s-peach config server      # edit server configurations, enable models etc
s-peach config client      # edit config for default model/voice
s-peach reload             # reload with new option

Summaries

The client can summarize agent output before speaking it aloud. It's using claude -p by default.
Disable or change to something appropriate (ask your AI for help):

summary:
  enabled: true
  command: 'ollama run llama3 "$1"'
  source: ".choices[0].message.content"

Summarize long text before speaking — useful for piping logs, diffs, or agent output:

s-peach say --summary "$(git diff)"
cat build.log | s-peach say --summary
echo "Long explanation..." | s-peach say --summary

The summarization prompts are configurable in the client config.

Run as a service

s-peach install-service     # install as system service
s-peach status              # check that it's running
s-peach say "Hello World"   # test it out
s-peach uninstall-service   # remove the service

Three Ways to Use

1. CLI — send a notification from anywhere:

# Default client configured model and voice
s-peach say "Build complete"
# Select model and voice
s-peach say "Merry Christmas" --model "kokoro" --voice "Santa_US"
# Read command outputs through pipe
echo "Done" | s-peach say --model "kitten-micro" --voice Rosie
# Multilingual (kokoro or chatterbox-multi)
s-peach say "Bonjour le monde" --lang fr --model kokoro
s-peach say "Hola mundo" --lang es --model chatterbox-multi
# Save audio as WAV
s-peach say "Done" --save
# Repeat last message
s-peach say-that-again
s-peach say-that-again --save
# List available voices
s-peach voices

Some flags for s-peach say:

Flag Description
--help Display all flags
--model "name" Select enabled model
--voice "key" Select voice for model
--speed 1.0 0.1 – 5.0 (kitten/kokoro)
--exaggeration 0.5 0.0 – 2.0 (chatterbox full)
--cfg-weight 0.5 0.0 – 2.0 (chatterbox full)
--lang "en" Language code (kokoro: en, gb, ja, zh, es, fr, hi, it, pt; chatterbox-multi: 23 languages)
--summary Summarize the text before speaking
--save Save audio as WAV to ~/.config/s-peach/output/

2. Claude Code hook — automatic TTS on task completion:

s-peach install-hook claude-code

or add this stop hook to your settings.json

"hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash ~/.claude/scripts/s-peach-notifier.sh",
            "async": true
          }
        ]
      }
    ]
  }

This wires Claude Code to call s-peach whenever a task finishes. You'll hear the result without looking at the terminal.

Even though summary is on by default through client config, the hook accepts all s-peach say flags so you can can have separate voices for different repos. Sweet!

"hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "bash ~/.claude/scripts/s-peach-notifier.sh --model kitten-micro --voice Rosie",
            "async": true
          }
        ]
      }
    ]
  }

3. MCP — tool-based TTS for agents:

Connect your MCP client to http://localhost:7777/mcp (SSE transport).
Available tools: speak, speak_sync, list_voices, say_that_again.

Chatterbox and 0-shot voices

  • Put voice samples longer than 5s in ~/.config/s-peach/voices
  • Update server config s-peach config server
    • Enable chatterbox or chatterbox-turbo under enabled_models
    • Create a new voice in voices.chatterbox.<voice-name>
    • Save and exit
    • If edited in other editor, reload server with s-peach reload
  • Use the voice like usual:
    • s-peach say "Hello World" --model "chatterbox" --voice "Example1"
    • s-peach say "Hello World" --model "chatterbox-turbo" --voice "Example2"

Default voice Bea taken from OpenSLR EmoV_DB

Chatterbox & Chatterbox-multi

Supports creative control:

  • Add drama with --exaggeration, default 0.5, range 0.0 - 2.0
    • Higher means more drama.
  • Add freedom with --cfg-weight, default 0.5, range 0.0 - 2.0.
    • Higher means more like reference audio.

Chatterbox-turbo

  • Faster generation
  • Supports paralinguistic tags in text:
    • [laugh], [chuckle], [sigh], [gasp], [sniff], [clear throat], [cough], [groan], [shush] and [pause]

Chatterbox-multi (multilingual)

Supported Languages (ISO 639-1)

  • Northern & Western Europe
    English (en), Swedish (sv), Danish (da), Norwegian (no), Finnish (fi), German (de), French (fr), Dutch (nl)

  • Southern & Eastern Europe
    Spanish (es), Italian (it), Portuguese (pt), Polish (pl), Russian (ru), Greek (el)

  • Asia
    Chinese (Mandarin) (zh), Japanese (ja), Korean (ko), Hindi (hi), Malay (ms)

  • Middle East & Africa
    Arabic (ar), Hebrew (he), Turkish (tr), Swahili (sw)

Kokoro

Supported Languages (ISO 639-1)

  • Northern & Western Europe
    English (US) (en), English (UK) (gb), French (fr)

  • Southern & Eastern Europe
    Spanish (es), Italian (it), Portuguese (pt)

  • Asia
    Japanese (ja), Chinese (Mandarin) (zh), Hindi (hi)

  • Middle East & Africa
    None currently

Troubleshooting

s-peach doctor        # diagnose everything
s-peach doctor --fix  # auto-fix safe issues

Documentation

Contributing

See CONTRIBUTING.md.

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

s_peach_tts-1.0.1.tar.gz (13.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

s_peach_tts-1.0.1-py3-none-any.whl (13.3 MB view details)

Uploaded Python 3

File details

Details for the file s_peach_tts-1.0.1.tar.gz.

File metadata

  • Download URL: s_peach_tts-1.0.1.tar.gz
  • Upload date:
  • Size: 13.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.13

File hashes

Hashes for s_peach_tts-1.0.1.tar.gz
Algorithm Hash digest
SHA256 06e3ae8b08899834f69065f4b645d6861a426eb3d647203d9278773ca6a80915
MD5 a0dd38364dffcb1903c63c2f97c96f70
BLAKE2b-256 a926237f980490bf0d1184fc40dc67386ad43bf9ec8ef1871926fce14322b618

See more details on using hashes here.

File details

Details for the file s_peach_tts-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for s_peach_tts-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b2cea24df9e2e0d5a056f68429a63a8e5a99f1fafc9eafe0d23d405a44e3ddff
MD5 8ea0ec9bf8980a032eb1f44ef98b2878
BLAKE2b-256 c83061a73cb34bb7584132cd210557db5cdd33ad37e922ee867a364d375787f2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page