
Pronunciation & Voice Coach
io.github.JuhongPark由 GitHub 帳號 JuhongPark 發布v0.3.0更新於 Oct 24, 2026
Local MCP voice coach with English pronunciation, grammar, and fluency feedback.
概覽
本機語音教練,錄下你的語音並在本機轉寫,回傳英語發音、文法與流暢度回饋。
- 可以做什麼
- 為 MCP 助理提供以麥克風為基礎的語音流程:錄音、偵測靜音自動停止、用 faster-whisper 在本機轉寫,並在同一次工具呼叫中回傳回饋。工具包括用於語音聊天並附帶輕度指導的 converse、用於練習參考句的 practice 與 quick_practice、用於比較重試的 retry,以及 suggest_sentence、record、assess、check_mic 和背景錄音工具。練習回饋涵蓋詞對齊、期望與實際 IPA、學習者輪廓提示、最小對立詞組練習與韻律提示。
- 適用情境
- 適合想練習英語口說,或與助理進行輕鬆語音聊天並同時獲得發音、文法與流暢度評論的情境。適合練習特定句子或音素的學習者,也適合偏好用說的而非打字、並希望音訊留在自己機器上的人。
- 執行需求
- 以 uvx 或 pip 啟動的本機程序;需要 Python 3.11+、可用的麥克風,以及約 150 MB 磁碟空間供預設 Whisper 模型使用。Linux 需要 PortAudio 系統函式庫。選用的 phoneme 附加元件會額外下載約 360 MB 的 wav2vec2 權重。模型權重會從 Hugging Face 與 PyTorch Hub 一次性下載。選用環境變數包括 MCP_PRONUNCIATION_MODEL、HF_HUB_CACHE、TORCH_HOME、MCP_PRONUNCIATION_PRELOAD、MCP_PRONUNCIATION_AUDIO_RETENTION 以及麥克風/VAD 設定。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Pronunciation & Voice Coach,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
mcp-server-pronunciation
[mcp-server-pronunciation MCP server]
Accuracy and safety notice
This project is a local language-learning practice tool. It may contain bugs, runtime errors, inaccurate transcripts, inaccurate pronunciation feedback, or platform-specific recording issues. Pronunciation feedback is a coaching signal, not a standardized-test, clinical, employment, or high-stakes assessment. Review outputs carefully before relying on them. See DISCLAIMER.md.
An MCP (Model Context Protocol) server that lets you talk to your MCP assistant by voice while getting English pronunciation, grammar, and fluency feedback in the same turn. Use it for casual voice chat with light coaching, or switch to drill mode when you want to practice a specific sentence.
Built for Codex CLI, Claude Desktop, Claude Code, Cursor, VS Code, and other MCP clients. Everything runs locally — audio is captured with your mic, transcribed by faster-whisper on-device, and never leaves your machine.
mcp-name: io.github.JuhongPark/pronunciation
Why
Voice MCP servers today treat speech as a typing replacement. English tutor MCP servers are text-only. This one combines the two: you speak freely, your assistant replies, and feedback on what you just said (pronunciation, grammar, fluency) surfaces inside the same tool call so the assistant can weave it into a natural reply — or stay out of the way when you're just chatting.
Features
- Voice conversation with your MCP assistant. Speak, auto-stop on silence, then let the assistant read your transcript and respond.
- Phoneme-level drill feedback (when a reference sentence is given): Needleman-Wunsch word alignment, per-word expected vs produced IPA, learner-profile hints, minimal-pair drills, and prosody checks (word stress, final-rise intonation, intra-clause pauses).
- Extensible learner-profile support: the current rule pack includes Korean-L1 pronunciation-pattern hints and Korean-language tips. Contributions for additional L1 profiles are welcome.
- Whisper-bias mitigation via optional
[phoneme]extra: wav2vec2 CTC forced alignment verifies whether the user actually produced each reference word, so rare proper nouns and domain-specific terms that Whisper rewrites toward more common alternatives no longer surface as mispronunciations. - Inline English feedback in conversation: pronunciation, grammar (common irregular-verb errors), and fluency (pace + long pauses).
- Drill mode (
practice,quick_practice,retry) for focused sentence practice. - Local-only: Whisper model runs on your machine, audio never leaves it.
- Cross-platform: macOS, Linux, Windows, and WSL2 (recording auto-routes through Windows).
- Fast startup: lazy imports + background model pre-load keep the MCP handshake under a second.
Requirements
- Python 3.11+
- A working microphone
- ~150 MB disk space for the default Whisper model (
base.en) - Additional ~360 MB if you install the optional
[phoneme]extra (wav2vec2 weights for forced alignment) - MCP spec: targets
2025-06-18via the official Python SDK (mcp>=1.2)
Installation
Stable release
Install the latest stable release:
For pip users:
To pin this release explicitly:
Run doctor before relying on the server in a live session:
General install commands
Linux: install PortAudio first
sounddevice ships PortAudio inside the wheel on macOS and Windows, but on Linux you need the system library:
First-time check
Before wiring the server into an MCP client, run the preflight:
Optional — pre-download the Whisper model (~150 MB) so the first call is instant:
Add to your MCP client
Codex CLI
Claude Code
Claude Desktop
Edit claude_desktop_config.json:
On macOS, if Claude Desktop can't find uvx (spawn uvx ENOENT), use an absolute path. Find it with which uvx in your terminal.
Cursor
Add to ~/.cursor/mcp.json:
VS Code (with MCP support)
Add to .vscode/mcp.json or your user settings:
Usage Examples
1. Voice chat with feedback
You: "Let's have a voice chat. I'll ask you about the weekend. Use the converse tool."
Assistant (calls
converse): records your speech, transcribes it, notes that you said "buyed" instead of "bought"Assistant: "Oh nice — what kind of apples did you buy? And by the way, the past tense of 'buy' is 'bought' — small thing, but I noticed it."
2. Drill a specific sentence
You: "Give me a sentence to practice with 'th' sounds."
Assistant (calls
suggest_sentencewithfocus=th): "Try this: The three brothers thought thoroughly about their future."You: "Record me reading it."
Assistant (calls
practicewith that reference): returns an alignment table (match / sub / ins / del) with per-word acoustic confidence when the[phoneme]extra is installed, phoneme-level issues with expected vs produced IPA, learner-profile hints when applicable, minimal-pair drills, and prosody notes (word stress, final-rise intonation, intra-clause pauses).
3. Retry after feedback
You: "Let me try again."
Assistant (calls
retry): re-records the same target sentence and compares
Tools
Tools that assess speech also return structured MCP output with transcript,
clarity_pct, speaking_rate_wpm, top_issue, next_action,
retry_comparison, the full machine-readable assessment, and the rendered
report_markdown. MCP clients can use the structured result to offer a retry,
surface the top issue, or build a richer practice UI without parsing Markdown.
Visible voice-capture workflow
For MCP clients without an embedded voice UI, use the background capture tools to keep the user informed:
The status response includes recording, analyzing, done, error, or
cancelled, plus elapsed time, transcript, clarity, speaking rate, feedback
markdown, and the full structured assessment when available. On WSL2, keep
duration short because PowerShell recording may wait for the full requested
duration before analysis begins.
MCP Apps voice panel
Clients that support MCP Apps can call open_voice_panel to render the
ui://pronunciation/voice-panel resource. The panel requests browser
microphone access, records locally in the browser, uploads a WAV clip through
analyze_uploaded_audio, and displays the returned transcript and feedback.
Uploaded audio must be a readable 16-bit PCM RIFF/WAVE file with mono or stereo
audio at 8-48 kHz, no larger than 20 MB and no longer than 120 seconds.
The uploaded clip is stored in the same voice session registry as MCP-only
recordings, so assistants can call latest_voice_capture after the panel
finishes and respond to both the development note and the pronunciation
feedback. Clients without MCP Apps support should use the visible
voice-capture workflow above.
Prompt Shortcuts
MCP clients that expose server prompts can start common workflows directly:
Configuration
Whisper model
Set MCP_PRONUNCIATION_MODEL to pick a different model size:
Available: tiny, tiny.en, base, base.en, small, small.en, medium, medium.en, large-v3, large-v3-turbo. For English-only use, the .en variants are faster and more accurate at a given size.
GPU (CUDA 12 + cuDNN 9) is auto-detected when available; otherwise runs on CPU with int8 quantization.
Cache location
By default Whisper weights are cached in ~/.cache/huggingface/hub/. Override with HF_HUB_CACHE:
Startup preload
By default the server preloads the Whisper model in the background after the
MCP handshake starts. Set MCP_PRONUNCIATION_PRELOAD=0 for registry
inspection, Docker smoke tests, or other environments that only need tool
discovery and should avoid model downloads:
Temporary recordings
Recordings are written as temporary WAV files so assess can inspect the last
recording. By default they are removed when the server process exits:
Set MCP_PRONUNCIATION_AUDIO_RETENTION=keep if you want temporary recordings
to remain on disk for manual inspection.
Microphone and auto-stop controls
By default the server uses your system default microphone. Native
sounddevice recording stops after 1.5 seconds of detected silence. WSL2
records through Windows PowerShell and may wait for the full requested
duration, so use a short duration value for quick voice checks. You can
override native recording behavior:
Run check_mic to see the default input device, available device indexes, and
the active VAD settings.
Model override in MCP clients
Phoneme analysis extras
Installing mcp-server-pronunciation[phoneme] enables wav2vec2-based CTC forced alignment. It verifies which reference words the user acoustically produced, regardless of how Whisper's language-model-weighted decoder rewrote them — so rare proper nouns and domain terms no longer surface as false mispronunciations. On first run the extra downloads ~360 MB of weights into ~/.cache/torch/hub/ (override via TORCH_HOME). Inference is CPU-only by default and runtime-quantized to int8 (~95 MB RAM).
Without the extra, assess / practice still run the full pipeline except for the forced-alignment step: you get Needleman-Wunsch word alignment against the Whisper hypothesis, CMUdict phoneme-sequence diff, learner-profile hints, and prosody.
Platform Support
WSL2 note: WSLg's PulseAudio does not forward microphone audio from the Windows host. This server detects WSL2 automatically and records through PowerShell on the Windows side instead. WSL2 recording may wait for the full requested duration instead of auto-stopping on silence.
Troubleshooting
uvx mcp-server-pronunciation doctor is your first stop
It reports on PortAudio, input devices, Whisper model cache, pronunciation resources, optional forced-alignment dependencies, free disk space, and Python version. Run it whenever something feels off.
sounddevice import fails on Linux
You're missing libportaudio2. See the install section above. After installing:
No audio captured / empty recording
- macOS: System Settings → Privacy & Security → Microphone. Grant access to the app that launched your MCP client, such as Codex CLI, Claude Desktop, or Claude Code.
- Linux: Check
pavucontrol(PulseAudio) orpw-cli list-objects(PipeWire) for input levels. On PipeWire-only systems, installpipewire-alsa. - WSL2: Test your mic in Windows Settings → Sound → Input. The server records through Windows, not through WSLg.
First run is slow
The Whisper model downloads on first use (~150 MB for base.en). Pre-download it once:
Subsequent runs reuse the cached weights. If startup still feels slow, try MCP_PRONUNCIATION_MODEL=tiny.en.
Claude Desktop on macOS: spawn uvx ENOENT
Claude Desktop launches MCP servers from a GUI-only environment without ~/.local/bin on PATH. Use the absolute path to uvx in your config (/Users/YOU/.local/bin/uvx or wherever which uvx reports).
Known Limitations
- This is a stable package release, but the pronunciation and prosody feedback remain experimental coaching signals. Bugs, runtime errors, inaccurate feedback, and platform-specific recording issues can still occur.
- Pronunciation scores are coaching signals, not standardized-test, clinical, or native-speaker-equivalence judgments.
- Whisper can still mishear rare names, domain terms, short clips, quiet audio, or heavily accented speech. The optional
[phoneme]extra reduces some reference-sentence false positives but does not eliminate them. - Prosody feedback is heuristic. Pitch tracking can be unreliable with noisy audio, very short utterances, vocal fry, overlapping speech, or clipped recordings.
- Learner-profile hints are intentionally rule-based. The current package includes Korean-L1 hints, but they can miss errors, over-trigger on ASR mistakes, and should be treated as targeted practice aids. Contributions for additional L1 profiles are welcome.
- First-time setup may download model or pronunciation resources. Run
doctorandpull-modelbefore relying on the server in a live session. - Temporary WAV recordings are written under the system temp directory so that the last recording can be assessed. By default they are removed when the server exits. Set
MCP_PRONUNCIATION_AUDIO_RETENTION=keepif you want to inspect them later.
Benchmark Status
This project is moving toward benchmark-backed scoring. Planned public benchmark work is tracked in ROADMAP.md, the testing methodology lives in docs/TESTING.md, and the current benchmark helper docs live in docs/BENCHMARKS.md. The primary candidate is Speechocean762 because it has a permissive CC BY 4.0 license and multi-level expert pronunciation scores. L2-ARCTIC is useful for phone-error and learner-profile research checks, including Korean-L1 subset review, but its non-commercial license means it should remain optional and separate from default release claims.
Publication Status
The source repository is public. PyPI, GitHub Release, and MCP Registry publication steps are tracked in docs/PUBLICATION.md.
Privacy
- All audio processing happens locally on your machine.
- Recordings are temporary
.wavfiles under your system temp directory ($TMPDIR) and are removed when the server exits unlessMCP_PRONUNCIATION_AUDIO_RETENTION=keepis set. - The Whisper model runs locally — no audio data is sent to any external service.
- When the optional
[phoneme]extra is installed, the wav2vec2 forced aligner also runs locally. Weights are downloaded once from the PyTorch Hub. - No telemetry. No analytics. No network calls except the one-time model weight downloads (Whisper from Hugging Face, wav2vec2 from PyTorch Hub).
Development
To work on the optional wav2vec2 forced-alignment path, install the phoneme extra as well:
Support
Issues: https://github.com/JuhongPark/mcp-server-pronunciation/issues
License
MIT. See LICENSE.
Third-party components (all MIT / permissive):
faster-whisper— MIT- OpenAI Whisper models — MIT
- CTranslate2 — MIT
sounddevice— MIT- PortAudio — MIT
cmudict— BSDg2p-en— Apache 2.0librosa— ISC- Optional (
[phoneme]extra): PyTorch — BSD, torchaudio — BSD, wav2vec2 weights — MIT
來源:README.md,提交 6a1a243
工具
0版本歷史
1- v0.3.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分