
Voice Coach
io.github.FabianIMV由 GitHub 账号 FabianIMV 发布v0.1.1更新于 Oct 24, 2026
Gives Claude ears: local pitch, pronunciation and public-speaking analysis for voice coaching.
概览
本地 MCP 服务器,从麦克风录音并测量音准、发音与演讲指标,让 Claude 为你做声音教练。
- 可以做什么
- 录制麦克风音频并报告音量、削波与噪声情况
- 按音符分析音准,可对照十二平均律、调性或 MIDI 旋律,识别错音、漏音与延迟
- 在本地转录音频,给出片段与词级时间戳
- 测量语速、长停顿、填充词、音调单调度与音量变化
- 对照预期文本给出英语音素级发音评分
- 读取并追加训练进度日志
- 适用场景
- 适合希望助手指导唱歌音准、英语发音或公开演讲的场景,可进行热身、练习、分析、反馈的完整会话,并跨会话保留进度记录。
- 运行要求
- 通过 uvx 在本地运行 Python 包 voice-coach-mcp;需要 uv,发音分析需要 espeak-ng,读取 m4a/aac 可选 ffmpeg。启动服务器的应用需获得麦克风权限。首次启动会安装依赖并下载模型(Whisper 约 480 MB,音素模型约 1.3 GB)。可选配置包括 VOICE_COACH_DIR 与 VOICE_COACH_WHISPER_MODEL。
安装
在 SourceWeft 中
- 打开 控制台中的 Voice Coach,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
voice-coach-mcp
Give Claude ears. A local MCP server that listens to you sing, speak and read aloud, measures what it hears, and lets Claude coach your voice.
[CI] [License: MIT] [Python 3.12] [MCP]
Claude cannot process audio. This server records from your microphone, analyzes the audio on your computer, and returns compact measurements that Claude turns into concrete coaching:
A bundled skill turns Claude into a coach: it runs warm-up → exercise → analysis → feedback sessions, gives one concrete focus per take, and keeps a progress log across sessions. Claude replies in your language.
- Local and private: audio never leaves your computer (unless you opt into the Azure backend).
- Free: open-source models (faster-whisper, wav2vec2) and no API keys.
- Tools measure, Claude interprets: every response is compact JSON (≤ 2 KB) with
confidenceandwarnings, so Claude never coaches on bad audio.
Install
You need uv and, for pronunciation, espeak-ng:
On Linux: install uv, then sudo apt install espeak-ng ffmpeg libportaudio2. Pronunciation
analysis on macOS needs Apple Silicon and macOS 14 or later (a PyTorch requirement).
Claude Code (plugin: server + skill)
Or, inside a session: /plugin install voice-coach --marketplace FabianIMV/voice-coach-mcp.
The first start installs the Python dependencies with uv, which can take a minute or two (the
models download later, on first use). If /mcp shows voice-coach as failed right after
installing, reconnect it from /mcp once the installation finishes.
Claude Desktop (extension)
Download voice-coach.mcpb from the latest release
and double-click it (or drag it into Claude Desktop). For the coaching skill, also download
voice-coach-skill.zip and upload it in Settings → Capabilities → Skills.
Any MCP client (manual)
For Claude Desktop's claude_desktop_config.json, use absolute paths (Desktop does not inherit
your shell PATH; which uvx prints it):
Optional: run uvx --from "voice-coach-mcp[speech,pronunciation]" voice-coach-mcp download-models
once, so the first call does not wait for the models (~480 MB Whisper, ~1.3 GB phoneme model).
Microphone permission (macOS)
macOS grants the microphone to the app that launches the server: Claude Desktop, or the
terminal running Claude Code (Terminal, iTerm, Ghostty, VS Code…). If permission is denied,
macOS returns silence instead of an error and record_audio reports
no_microphone_permission. Fix it in System Settings → Privacy & Security → Microphone and
restart that app.
Use it
Just talk to Claude:
- "I want to practice singing in tune. I'm a beginner."
- "Record 30 seconds of me presenting my project and tell me how many filler words I use."
- "Help me pronounce 'th'. Give me sentences to read and score them."
- "Analyze this voice memo against melody.mid" (any wav/mp3/m4a path works).
- "How am I doing?" (Claude reads your progress log).
Real sessions in Claude Code: a 60-second talk about work, and a singing baseline on one held note.
[Speaking session in Claude Code: pace, pauses, monotone pitch and one concrete focus]
[Singing session: warm-up, a baseline take measured in cents, and one focus for the retake]
Guided sessions are also available as MCP prompts: singing_session, pronunciation_session
and speaking_session (in Claude Code: /mcp__voice-coach__singing_session).
Tools
Audio can be a path or the name returned by record_audio. When a result is too long, the most
relevant items are returned and everything else is saved next to the audio (full_details).
Example: analyze_pitch on a synthetic C major scale with known deviations
With a MIDI reference, the server detects
that the melody was sung an octave lower (octave_shift: -1), started 1 s late
(start_offset_ms: 1003), and that one note came in 134 ms late.
Example: assess_pronunciation — "I sink the berry best sings…" read for "I think the very best things in life are free"
Example: speech_metrics on a short synthetic talk with inserted pauses and fillers
The synthetic voice is very flat, hence monotone: true. A Spanish example is also included.
All example outputs are real responses from the server over stdio, regenerated by
examples/generate_examples.py on synthetic audio; see
examples/outputs/.
How it works
- Pitch: pYIN (librosa) finds voiced frames; each frame is refined from its harmonic peaks
with parabolic interpolation (~1 cent accuracy from C2 to C6). Notes are split at silences,
energy dips and sustained pitch changes; vibrato does not split notes. With a MIDI reference,
the octave and offset are found by cross-correlation, notes are aligned with Needleman–Wunsch,
and a tempo line
t_sung = a·t_ref + bis fitted to judge each onset. - Speech: faster-whisper transcribes with word timestamps (an initial prompt keeps fillers). Pauses are measured from the audio energy, because Whisper stretches word endings into silence. Ambiguous fillers ("like", "so") only count when isolated by a comma or a pause.
- Pronunciation: phonemizer + espeak-ng give the expected IPA phonemes; the
facebook/wav2vec2-lv-60-espeak-cv-ftphoneme model gives what was said; both are aligned by edit distance. Normal American English variants (flap, schwa, linking r, glottal stop) are not counted as errors. - Quality first: clipping, background noise, silence and missing microphone permission are reported as warnings and lower the confidence.
Known limitations: one voice at a time (accompaniment degrades pitch detection); two identical notes sung in perfect legato count as one; the phoneme model uses sentence context and may occasionally "correct" a mispronounced word; pronunciation assessment is English-only.
Privacy and network access
Everything the plugin runs, writes and downloads:
- Runs:
uvstarts the server from the plugin folder (uv run --frozen, pinned byuv.lock); the server usesespeak-ngfor expected phonemes andffmpegonly to read m4a/aac files. - Microphone: only while
record_audioruns, for the number of seconds Claude asks for. - Writes: recordings and
progress.mdin~/VoiceCoach(orVOICE_COACH_DIR), and an analysis detail file<audio>.<tool>.jsonnext to each analyzed audio (or in~/VoiceCoach/analysisif that folder is read-only). Analyzing the same audio again replaces its detail file; nothing else is overwritten or deleted. - Downloads: the Python dependencies from PyPI on first start, then the models from Hugging
Face on first use: the faster-whisper model (
Systran/faster-whisper-smallby default) andfacebook/wav2vec2-lv-60-espeak-cv-ft. After that, models load from the local cache. - Sends: nothing by default. No telemetry, no accounts, no API keys. Only if you set
VOICE_COACH_PRONUNCIATION_BACKEND=azurewith your ownAZURE_SPEECH_KEYandAZURE_SPEECH_REGIONdoesassess_pronunciationsend that audio and the expected text to Azure Speech in your region.
Configuration
Development
See CONTRIBUTING.md for the design principles and the release process.
License and credits
MIT © FabianIMV. Built on faster-whisper, librosa, wav2vec2 phoneme recognition and the official MCP Python SDK. The optional pronunciation extra uses phonemizer and espeak-ng, both GPL-3.0. Example voices were synthesized with espeak-ng and Piper (public-domain LJSpeech voice).
来源:README.md,提交 96230b5
工具
0版本历史
1- v0.1.1最新Oct 23, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分