agentleFS
ryangalea23ryangalea23/claude-skills/skills/voice-mode/SKILL.md

voice-mode

Skill0 starsChanged 58 days agoMITView on GitHub

Use when the user asks to enable/disable voice mode, turn text-to-speech on or off, or hear Claude's responses spoken aloud instead of just reading text.

  • Installs packages

3 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions3 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 3

    1. eliasstravik/skills★ 22same name
    2. idanbeck/claude-skills★ 14same name
    3. HyperfocuSam/claude-voice★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository4 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Enable: when the user says "turn on voice mode", "enable TTS", "read your replies out loud", or asks to hear responses spoken.

    line 20
  2. Distinctive:

    Disable: when the user says "turn off voice mode", "disable TTS", "stop talking", or "go back to text".

    line 22
  3. Distinctive:

    When TTS is active, Claude's responses get spoken aloud.

    line 83
  4. Very specific:

    Test with echo "hello" | python /path/to/scripts/speak.py before wiring up the hook, to confirm playback works on your machine.

    line 111
  5. Distinctive:

    If you want TTS to also route through a specific playback device (for example, streaming your desktop's audio to a phone or another room), …

    line 117

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Voice Mode (text-to-speech for Claude Code)

Overview

A Claude Code Stop hook can read each of Claude's responses aloud using edge-tts (free, no API key). This skill toggles that on and off with a marker file, so you don't need to edit settings or restart anything just to mute it.

Privacy: edge-tts is Microsoft's online text-to-speech service. While voice mode is on, the text of every Claude reply is sent over the network to Microsoft to be turned into audio. Leave it off in sessions where replies may contain secrets or anything you don't want leaving your machine.

This skill does NOT install anything - it assumes the pieces below are already set up (see Setup below). It just flips the switch.

When to Use

Enable when the user says "turn on voice mode", "enable TTS", "read your replies out loud", or asks to hear responses spoken.

Disable when the user says "turn off voice mode", "disable TTS", "stop talking", or "go back to text".

Don't use for:

  • Installing/configuring TTS from scratch - see Setup below, but assume it's installed once you're using this skill day to day.
  • Adjusting voice quality/settings - change the SPEAK_VOICE environment variable instead (see table below).

Quick Reference

ActionMarker file
Enablecreate .tts-enabled next to stop-hook.py
Disabledelete .tts-enabled next to stop-hook.py
Statuscheck whether the marker file exists

The marker file lives in the same folder as stop-hook.py (scripts/ in this skill folder, or wherever you installed it).

Enable

touch /path/to/scripts/.tts-enabled

On Windows PowerShell:

New-Item -ItemType File -Path "C:\path\to\scripts\.tts-enabled" -Force | Out-Null

Then test the voice directly, independent of the hook:

echo "Voice test." | python /path/to/scripts/speak.py

Heads-up to surface: the Stop hook only loads at Claude Code session start. If voice mode was enabled mid-session, tell the user to restart Claude Code for the hook to actually fire on responses. The manual speak.py test above still works without a restart.

Disable

rm -f /path/to/scripts/.tts-enabled

On Windows PowerShell:

Remove-Item "C:\path\to\scripts\.tts-enabled" -ErrorAction SilentlyContinue

Also stop any speech in progress:

Stop-Process -Name ffplay -Force -ErrorAction SilentlyContinue
pkill ffplay 2>/dev/null || true

Status

test -f /path/to/scripts/.tts-enabled && echo "TTS enabled" || echo "TTS disabled"

Response Style While Voice Mode Is On

When TTS is active, Claude's responses get spoken aloud. Optimize for listening:

  • Short prose, no markdown tables
  • Lead with the answer or recommendation
  • One question per turn, clearly phrased
  • Spell out numbers when ambiguous ("eleven a.m." reads better than "11am")
  • stop-hook.py strips most markdown before speaking, but keeping replies clean helps anyway

Common Mistakes

MistakeFix
Enabled mid-session, hook didn't fireHooks load at session start. Tell the user to restart Claude Code.
Voice sounds wrongSet the SPEAK_VOICE environment variable. Options include en-US-AriaNeural (default), en-US-JennyNeural, en-US-GuyNeural, en-US-AndrewNeural - any edge-tts voice name works.
Speech overlaps between turnsstop-hook.py kills any in-flight player before starting new speech; if it still overlaps, check that only one Stop hook instance is registered.

Setup (one time, not part of normal use)

  1. Install the Python packages: pip install --user edge-tts. pip install --user pycaw is optional - it lets the hook detect whether you're on a call or playing audio in another app and stay quiet if so; without it, TTS always speaks.
  2. Make sure a media player is available for playback. The scripts default to ffplay (part of ffmpeg) via the FFPLAY_PATH environment variable (default ffplay, or set it to a full path like C:\ffmpeg\bin\ffplay.exe on Windows). Any command-line player that can take a file path works if you adjust speak.py's play() function.
  3. Copy scripts/speak.py and scripts/stop-hook.py from this skill folder to wherever you keep Claude Code scripts.
  4. Register the Stop hook in your Claude Code settings.json:
    "hooks": {
      "Stop": [
        { "hooks": [ { "type": "command", "command": "python /path/to/scripts/stop-hook.py" } ] }
      ]
    }
  5. Test with echo "hello" | python /path/to/scripts/speak.py before wiring up the hook, to confirm playback works on your machine.

Why This Setup (Reasoning History)

edge-tts was picked over paid TTS APIs because it's free and has no API key to manage. A Stop hook was picked over an MCP tool because it fires automatically after every response with zero extra typing. The marker-file toggle exists so you can mute Claude mid-session without touching settings.json or restarting.

If you want TTS to also route through a specific playback device (for example, streaming your desktop's audio to a phone or another room), that's a platform-specific extension on top of this skill - this skill only covers turning speech on and off.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.