claude-tts
Health Uyari
- No license — Repository has no license file
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 16 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in plugins/claude-tts/hooks/scripts/tts-hook.sh
- rm -rf — Recursive force deletion command in plugins/claude-tts/hooks/scripts/tts-queue-daemon.sh
- rm -rf — Recursive force deletion command in plugins/claude-tts/hooks/scripts/tts-stop.sh
- rm -rf — Recursive force deletion command in plugins/claude-tts/hooks/scripts/tts-worker.sh
Permissions Gecti
- Permissions — No dangerous permissions requested
This plugin is a text-to-speech utility designed for Claude Code. It automatically reads Claude's responses aloud using a wide variety of external or local TTS providers.
Security Assessment
Overall Risk: Medium. The tool explicitly executes shell commands and processes text inputs. While no hardcoded secrets or dangerous permissions were found, the automated scan flagged multiple instances of `rm -rf` (recursive force deletion) commands across several core scripts (tts-hook.sh, tts-queue-daemon.sh, tts-stop.sh, and tts-worker.sh). If these deletions target dynamic directories or are executed improperly, they pose a risk of unintended data loss. Additionally, the tool requires network requests to function, as it routinely sends text and API keys to external paid services like ElevenLabs, OpenAI, and Google.
Quality Assessment
The project appears to be actively maintained, with its last repository push occurring very recently. It has garnered a modest amount of community trust with 16 GitHub stars. However, the repository completely lacks a formal open-source license. Without a defined license, the legal terms of use, modification, and distribution remain strictly reserved by the creator, which is a significant drawback for enterprise or open-source adoption.
Verdict
Use with caution—ensure you manually review the `rm -rf` shell script commands to prevent accidental local data loss before installing.
Text-to-speech plugin for Claude Code — multi-provider support (ElevenLabs, OpenAI, Google, Amazon Polly, Azure, Kitten, local system TTS) on macOS, Linux, and Windows
claude-tts
Text-to-speech plugin for Claude Code. Automatically speaks Claude's responses aloud using your choice of TTS provider, with local system TTS as a universal fallback.
Supported Providers
| Provider | Quality | Cost | Requirements |
|---|---|---|---|
| ElevenLabs | Excellent | Paid | API key |
| OpenAI | Very good | Paid | API key |
| Google Cloud | Very good | Paid (free tier available) | API key |
| Amazon Polly | Good | Paid (free tier available) | AWS CLI configured |
| Azure Speech | Very good | Paid (free tier available) | API key + region |
| Edge TTS | Very good | Free | pip install edge-tts |
| Kitten TTS | Good | Free | pip install KittenTTS soundfile + espeak |
| Fish Audio | Excellent | Paid (billing required) | API key |
| Gemini TTS | Excellent | Paid (free tier available) | API key |
| MiMo TTS | Excellent | Free (limited time) | API key |
| Local TTS | Basic | Free | Built-in (see below) |
Requirements
- macOS, Linux, or Windows (Git Bash / WSL)
jq(see jq downloads)- An audio player:
- macOS:
afplay(built-in) - Linux:
mpv,ffplay,paplay, oraplay - Windows: PowerShell (built-in)
- macOS:
Install
From the marketplace
claude plugin install claude-tts
Manual install
git clone https://github.com/MatiousCorp/claude-tts.git ~/.claude/plugins/claude-tts
Restart Claude Code after installing.
Setup
/claude-tts:tts-setup <provider> <api-key>
Examples
/claude-tts:tts-setup elevenlabs sk_abc123
/claude-tts:tts-setup openai sk-abc123
/claude-tts:tts-setup google AIza...
/claude-tts:tts-setup amazon
/claude-tts:tts-setup azure your-key-here
/claude-tts:tts-setup edge
/claude-tts:tts-setup kitten
/claude-tts:tts-setup mimo your-key-here
/claude-tts:tts-setup fish your-key-here
/claude-tts:tts-setup gemini AIza...
/claude-tts:tts-setup tada
/claude-tts:tts-setup local
Provider details
| Provider | Default voice | Default model | Auth |
|---|---|---|---|
| elevenlabs | Rachel (21m00Tcm4TlvDq8ikWAM) |
eleven_flash_v2_5 |
xi-api-key header |
| openai | alloy |
tts-1 |
Bearer token |
en-US-Neural2-F |
n/a | X-Goog-Api-Key header |
|
| amazon | Joanna |
neural |
AWS CLI env creds |
| azure | en-US-JennyNeural |
n/a | Ocp-Apim-Subscription-Key header |
| edge | en-US-AriaNeural |
n/a | none (free) |
| kitten | expr-voice-2-f |
n/a | none (free, local) |
| mimo | mimo_default |
mimo-v2-tts |
api-key header |
| fish | (optional reference ID) | s2-pro |
Authorization: Bearer token |
| gemini | Kore |
gemini-3.1-flash-tts-preview |
x-goog-api-key header |
| tada | reference WAV path | tada-1b |
none (open-source) |
| local | system default | n/a | none |
Without an API key
The plugin works without any API key:
- Edge TTS: High-quality neural voices via
edge-tts(pip install edge-tts) - Kitten TTS: Lightweight open-source model (under 25MB, CPU-only) with 8 expressive voices (
pip install KittenTTS soundfile, plusespeaksystem dep). Requires Python 3.9+ - TADA: Hume AI's open-source voice cloning model (
pip install hume-tada). Works out of the box; optionally provide a reference WAV to clone a specific voice. GPU recommended (CUDA or Apple MPS); CPU works but is slow. Models:tada-1b(English) ortada-3b-ml(multilingual) - Local TTS: System built-in — macOS
say, Linuxespeak-ng/espeak/piper, Windows PowerShell SAPI
With an API key (paid)
- Fish Audio: High-quality multilingual TTS with voice cloning support. Requires a paid account with billing enabled — there is no free tier. Optionally provide a reference voice ID to clone a specific voice. Get a key at fish.audio. Model:
s2-pro
With an API key (free tier)
- Gemini TTS: Google's Gemini 3.1 Flash TTS — 30 built-in voices, 70+ languages, multi-speaker dialogue, and audio tags for style control (
[whispers],[laughs]). Free tier available. Get a key at aistudio.google.com/apikey. Models:gemini-3.1-flash-tts-preview(latest),gemini-2.5-flash-preview-tts,gemini-2.5-pro-preview-tts - MiMo TTS: Xiaomi's MiMo-V2-TTS — highly expressive with contextual emotion awareness, style control, dialect support, and singing capability. Free during limited-time promotion. Get a key at platform.xiaomimimo.com
Usage
Once set up, TTS works automatically. Every time Claude finishes a response, the text is cleaned and spoken aloud.
Stopping playback
Audio stops automatically in several ways:
- Press ESC while Claude is generating — stops current audio and speaks the new response
- Submit a new prompt — any currently playing audio stops immediately
- Run
/claude-tts:tts-stop— stop audio on demand without disabling TTS
Commands
| Command | Description |
|---|---|
/claude-tts:tts-on |
Enable TTS |
/claude-tts:tts-off |
Disable TTS |
/claude-tts:tts-stop |
Stop current audio playback |
/claude-tts:tts-status |
Show current status and provider |
/claude-tts:tts-setup <provider> [key] |
Configure TTS provider |
Configuration
Config is stored in ~/.claude/claude-tts.local.md:
---
provider: "elevenlabs"
api_key: "sk_..."
voice_id: "21m00Tcm4TlvDq8ikWAM"
model_id: "eleven_flash_v2_5"
---
Only provider is required. Each provider has sensible defaults for voice_id and model_id.
For Azure, add region:
---
provider: "azure"
api_key: "your-key"
region: "eastus"
---
Environment variables
CLAUDE_TTS_API_KEY— generic, works with any providerELEVENLABS_API_KEY— legacy fallback for ElevenLabs provider
Migration from v1
If your config has elevenlabs_api_key: but no provider:, it will automatically be treated as ElevenLabs. No action needed.
Migration from v2 (say → local)
If your config has provider: "say", it will automatically be mapped to local. No action needed.
How it works
- Claude finishes a response (Stop hook fires)
- Any previously playing audio is stopped immediately
- Text is cleaned: code blocks, URLs, file paths, and markdown formatting are stripped
- A background worker sends the text to your configured provider
- If the provider fails, local system TTS is used as fallback
- Audio files are queued and played sequentially via the platform audio player
A UserPromptSubmit hook also runs on every new prompt, stopping any in-progress playback so audio never talks over your next interaction.
The hooks exit immediately so Claude Code is never blocked.
Troubleshooting
No audio playing
- Run
/claude-tts:tts-statusto check configuration - Make sure
jqis installed (see jq downloads) - Check that
~/.claude/tts-enabledexists
Provider errors
- Verify your API key and provider settings
- Check your usage quota with the provider
- The plugin falls back to local TTS automatically on API errors
Audio queue stuck
- Run
/claude-tts:tts-stopto kill the daemon and clear the queue - Or manually:
kill $(cat ${TMPDIR}/claude_tts_queue/daemon.pid) && rm -f ${TMPDIR}/claude_tts_queue/*.mp3 ${TMPDIR}/claude_tts_queue/*.wav
Linux: No audio player
- Install one:
sudo apt install mpv(orffmpegfor ffplay,pulseaudio-utilsfor paplay)
Linux: No local TTS
- Install espeak-ng:
sudo apt install espeak-ng
Windows (Git Bash / WSL)
- PowerShell must be available as
powershell.exe - WSL users: audio playback requires PulseAudio or PipeWire bridge to Windows
License
MIT
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi