jarrodwatts/claude-stt
jarrodwatts/claude-stt ยท 1 plugin
Marketplace Speech-to-text input for Claude Code with live streaming dictation
Install
/plugin marketplace add jarrodwatts/claude-sttRun inside Claude Code, then install plugins from it. Check the repo's README before you run it.
Plugins 1
After adding the marketplace, install one with /plugin install <name>@jarrodwatts-claude-stt.
- 1claude-sttSpeech-to-text input for Claude Code with live streaming dictation. Hold a hotkey, speak, and your words appear in the input field.
/plugin install claude-stt@jarrodwatts-claude-stt
Files
๐จ This project is archived
Native voice/STT support has been officially added to Claude Code via the /voice command โ use that instead. This repo is no longer maintained.
Claude STT
Speech-to-text input for Claude Code. Hold a hotkey, speak, and your words appear in the input field โ all processed locally.
Install
Inside a Claude Code instance, run the following commands:
Step 1: Add the marketplace
/plugin marketplace add jarrodwatts/claude-stt
Step 2: Install the plugin
/plugin install claude-stt
Step 3: Run setup
/claude-stt:setup
Done! Press Ctrl+Shift+Space to start recording, press again to stop and transcribe.
Note: Setup installs dependencies (uv if available, otherwise a local
.venv),
downloads the Moonshine model (~200MB), and checks microphone permissions.
What is Claude STT?
Claude STT gives you voice input directly into Claude Code. No typing required โ just speak naturally.
| What You Get | Why It Matters |
|---|---|
| Local processing | All audio processed on-device using Moonshine STT |
| Low latency | ~400ms transcription time |
| Push-to-talk | Hold hotkey to record, release to transcribe |
| Cross-platform | macOS, Linux, Windows |
| Privacy first | No audio or text sent to external services |
How It Works
Press Ctrl+Shift+Space โ start recording
โ
Audio captured from microphone
โ
Press Ctrl+Shift+Space โ stop recording
โ
Moonshine STT processes locally (~400ms)
โ
Text inserted into Claude Code input
Key details:
- Audio is processed in memory and immediately discarded
- Uses Moonshine ONNX for fast local inference
- Keyboard injection or clipboard fallback
- Native system sounds for audio feedback
Configuration
Customize your settings anytime:
/claude-stt:config
Options
| Option | Values | Default | Description |
|---|---|---|---|
hotkey |
Key combo | ctrl+shift+space |
Trigger recording |
mode |
toggle, push-to-talk |
toggle |
Press to toggle vs hold to record |
engine |
moonshine, whisper |
moonshine |
STT engine |
moonshine_model |
moonshine/tiny, moonshine/base, other Moonshine model IDs |
moonshine/base |
Model size |
output_mode |
auto, injection, clipboard |
auto |
How text is inserted |
sound_effects |
true, false |
true |
Play audio feedback |
max_recording_seconds |
1-600 | 300 | Maximum recording duration |
Settings stored in ~/.claude/plugins/claude-stt/config.toml.
Requirements
- Python 3.10-3.13
- ~200MB disk space for STT model
- Microphone access
Platform-Specific
| Platform | Additional Requirements |
|---|---|
| macOS | Accessibility permissions (System Settings > Privacy & Security) |
| Linux | xdotool for window management; X11 recommended (Wayland has limitations); WSL not supported |
| Windows | pywin32 for window tracking |
Commands
| Command | Description |
|---|---|
/claude-stt:setup |
First-time setup: check environment, install deps, download model |
/claude-stt:start |
Start the STT daemon |
/claude-stt:stop |
Stop the STT daemon |
/claude-stt:status |
Show daemon status and readiness checks |
/claude-stt:config |
Change settings |
You can also use the CLI directly:
claude-stt setup
claude-stt start --background
Troubleshooting
| Issue | Solution |
|---|---|
| No audio input | Check microphone permissions in system settings |
| Keyboard injection not working | macOS: Grant Accessibility permissions. Linux: Ensure xdotool installed |
| Model not loading | Run /claude-stt:setup to download. Check disk space (~200MB) |
| Hotkey test fails during setup | Fix permissions or rerun /claude-stt:setup --skip-hotkey-test to continue setup |
| Whisper dependencies missing | Run /claude-stt:setup --with-whisper, or uv sync --directory $CLAUDE_PLUGIN_ROOT --extra whisper, or python $CLAUDE_PLUGIN_ROOT/scripts/exec.py -m pip install .[whisper] |
| Hotkey not triggering | Check for conflicts with other apps. Try /claude-stt:config to change hotkey |
| Text going to wrong window | Plugin tracks original window โ ensure Claude Code was focused when recording started |
| Running under WSL | Not supported; use native Windows or Linux |
Logging
Set CLAUDE_STT_LOG_LEVEL=DEBUG to get verbose logs when starting the daemon.
Privacy
All processing is local:
- Audio captured from your microphone is processed entirely on-device
- Moonshine runs locally โ no cloud API calls
- Audio is never sent anywhere, never stored (processed in memory, discarded)
- Transcribed text only goes to Claude Code input or clipboard
No telemetry or analytics.
Development
git clone https://github.com/jarrodwatts/claude-stt
cd claude-stt
# Install dependencies (uv preferred, falls back to local venv)
python scripts/setup.py --dev --skip-audio-test --skip-model-download --no-start
# Test locally without installing
claude --plugin-dir /path/to/claude-sttSee CONTRIBUTING.md for guidelines.
Release Checklist
- Bump versions in
pyproject.toml,.claude-plugin/plugin.json,.claude-plugin/marketplace.json - Update
CHANGELOG.md - Run tests:
uv run python -m unittest discover -s tests - Verify onboarding in Claude Code (
/plugin install,/claude-stt:setup)
License
MIT โ see LICENSE
Star History
{
"name": "jarrodwatts-claude-stt",
"owner": {
"name": "Jarrod Watts",
"url": "https://github.com/jarrodwatts"
},
"plugins": [
{
"name": "claude-stt",
"source": "./",
"description": "Speech-to-text input for Claude Code with live streaming dictation. Hold a hotkey, speak, and your words appear in the input field.",
"version": "0.1.0",
"author": {
"name": "Jarrod Watts",
"url": "https://github.com/jarrodwatts"
},
"homepage": "https://github.com/jarrodwatts/claude-stt",
"repository": "https://github.com/jarrodwatts/claude-stt",
"license": "MIT",
"keywords": [
"speech-to-text",
"stt",
"voice",
"dictation",
"moonshine",
"audio",
"accessibility"
]
}
]
}Facts
- Kind
- Marketplace
- Repo
- jarrodwatts/claude-stt
- Group
- Uncategorized
- Marketplace name
- jarrodwatts-claude-stt
- Owner
- Jarrod Watts
- License
- MIT
- Language
- Python
- Created
- 2026-01-13
- Forks
- 36
- Topics
- accessibility, claude-code, claude-code-plugin, dictation, moonshine, speech-to-text, stt, voice
- Plugins
- 1
- 1f/prompts.chatf/prompts.chatf.k.a. Awesome ChatGPT Prompts. Share, discover, and collect prompts from the community. Free and open source โ self-host for your organization with complete privacy.
- 2affaan-m/everything-claude-codeaffaan-m/everything-claude-codeThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
- 3obra/superpowersobra/superpowersAn agentic skills framework & software development methodology that works.
- 4anthropics/skillsanthropics/skillsPublic repository for Agent Skills
- 5anthropics/claude-codeanthropics/claude-codeClaude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.
- 6nextlevelbuilder/ui-ux-pro-max-skillnextlevelbuilder/ui-ux-pro-max-skillAn AI skill that provides design intelligence for building professional UI/UX across multiple platforms.
