mcp-tts
MCP Server for TTS (Text-to-Speech)
什么? 🤔
将文本转换为语音添加到Claude Desktop和Cursor IDE等设备中。
它注册了四个TTS工具:
say_ttselevenlabs_ttsgoogle_ttsopenai_tts
say_tts
使用macOS say 二进制语言,通过内置系统语音朗读文本
elevenlabs_tts
使用 十一实验室 text-to-speech API,用高级人工智能语音说出文本
google_tts
使用谷歌的 Gemini TTS型号 用30个高质量的声音朗读文本。可用的声音包括:
Achernar、Achird、Algenib、Algieba、Alnilam、Aoede、Autonoe、Callirhoe、Charon、Despina、Enceladus、Erinome、Fenrir、Gacrux、Iapetus、Kore、Laomedia、Leda、Orus、Puck、Pulcherrima、Rasalgethi、Sadachbia、Sadaltager、Schedar、Sulafat、Umbriel、Vindemiatrix、Zephyr、Zubenelgenubi
openai_tts
使用OpenAI 文本到速度API 用10个听起来很自然的声音说课文:
- 合金 (热情、对话、现代)
- 灰烬 (自信、果断、略带质感)
- 民谣 (轻柔、悠扬、略带抒情)
- 珊瑚 (欢快、清新、乐观)
- 回声 (中立、冷静、平衡)
- 寓言 (讲故事,富有表现力)
- 新星 (清晰、精确、略显正式)
- 缟玛瑙 (深沉、权威、共鸣)
- 智者 (舒缓、同情、安心)
- 闪烁 (明亮、生动、俏皮)
- 诗句 (多功能、富有表现力)
支持三种质量模型:
- gpt-4o-mini-tts -默认、优化的质量和速度
- tts-1 -标准质量,更快生成
- tts-1-hd -高清音频,高品质
附加功能:
- 速度控制范围为0.25倍至4.0倍(默认值:1.0倍)
- 通过参数或
OPENAI_TTS_INSTRUCTIONS环境变量
配置
顺序TTS与并发TTS
默认情况下,TTS服务器强制执行顺序语音操作——一次只能播放一个TTS请求。这可以防止多个代理同时说话并产生难以理解的杂音。后续请求将在队列中等待,直到当前语音完成。
多实例保护:互斥体既可以在单个MCP服务器进程中工作,也可以跨多个Claude Desktop实例工作。当运行多个Claude Desktop终端时,它们通过系统范围的文件锁进行协调,以防止语音重叠。
要允许并发TTS操作(同时播放多个语音):
环境变量:
export MCP_TTS_ALLOW_CONCURRENT=true命令行标志:
mcp-tts --sequential-tts=false注: 并发TTS可能会导致难以理解的重叠音频。仅当您明确希望同时运行多个TTS操作时,才使用此选项。
抑制“说话:”输出
默认情况下,TTS工具在语音结束时返回类似“Speaking:\[text\]”的消息。这可能会干扰LLM响应。要抑制此输出:
环境变量:
export MCP_TTS_SUPPRESS_SPEAKING_OUTPUT=true命令行标志:
mcp-tts --suppress-speaking-output启用后,工具将返回“语音完成”,而不是回显口语文本。
将音频保存到磁盘
将TTS音频输出保存为文件,而不是播放(或除播放外):
环境变量:
export MCP_TTS_OUTPUT_DIR=/path/to/audio # Save audio files to this directory
export MCP_TTS_NO_PLAY=true # Skip playback, only save (optional)命令行标志:
mcp-tts --output-dir /path/to/audio # Save and play
mcp-tts --output-dir /path/to/audio --no-play # Save only, no playback文件以唯一的名称保存: tts_{timestamp}_{hash}.{ext}
| 提供者 | 格式 |
|---|---|
| macOS说 | AIFF |
| ElevenLabs | MP3 |
| 谷歌TTS | WAV |
| OpenAI TTS | MP3 |
入门指南
安装
go install github.com/blacktop/mcp-tts@latest❱ mcp-tts --help
TTS (text-to-speech) MCP Server.
Provides multiple text-to-speech services via MCP protocol:
• say_tts - Uses macOS built-in 'say' command (macOS only)
• elevenlabs_tts - Uses ElevenLabs API for high-quality speech synthesis
• google_tts - Uses Google's Gemini TTS models for natural speech
• openai_tts - Uses OpenAI's TTS API with various voice options
Each tool supports different voices, rates, and configuration options.
Requires appropriate API keys for cloud-based services.
Designed to be used with the MCP (Model Context Protocol).
Usage:
mcp-tts [flags]
Flags:
-h, --help help for mcp-tts
--no-play Skip playback, only save (requires --output-dir)
--output-dir string Save audio files to directory (env: MCP_TTS_OUTPUT_DIR)
--sequential-tts Enforce sequential TTS (prevent concurrent speech) (default true)
--suppress-speaking-output Suppress 'Speaking:' text output
-v, --verbose Enable verbose debug logging配置
克劳德桌面版
添加 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"say": {
"command": "mcp-tts",
"env": {
"ELEVENLABS_API_KEY": "********",
"ELEVENLABS_VOICE_ID": "1SM7GgM6IMuvQlz2BwM3",
"GOOGLE_AI_API_KEY": "********",
"OPENAI_API_KEY": "********",
"OPENAI_TTS_INSTRUCTIONS": "Speak in a cheerful and positive tone",
"MCP_TTS_SUPPRESS_SPEAKING_OUTPUT": "true",
"MCP_TTS_ALLOW_CONCURRENT": "false"
}
}
}
}克劳德代码
claude mcp add say \
-e GOOGLE_AI_API_KEY=your_key \
-e ELEVENLABS_API_KEY=your_key \
-e OPENAI_API_KEY=your_key \
-- mcp-ttsCodex CLI
codex mcp add say \
--env GOOGLE_AI_API_KEY=your_key \
--env ELEVENLABS_API_KEY=your_key \
--env OPENAI_API_KEY=your_key \
-- mcp-ttsGemini CLI
gemini mcp add say mcp-tts \
-e GOOGLE_AI_API_KEY=your_key \
-e ELEVENLABS_API_KEY=your_key \
-e OPENAI_API_KEY=your_key或手动添加到 ~/.gemini/settings.json (或 .gemini/settings.json 在项目根目录中):
{
"mcpServers": {
"say": {
"command": ["mcp-tts"],
"env": {
"GOOGLE_AI_API_KEY": "..."
}
}
}
}环境变量
ELEVENLABS_API_KEY:您的ElevenLabs API密钥(对于elevenlabs_tts)ELEVENLABS_VOICE_ID:ElevenLabs语音ID(可选,默认为内置语音)GOOGLE_AI_API_KEY或GEMINI_API_KEY:您的Google AI API密钥(对于google_tts)OPENAI_API_KEY:您的OpenAI API密钥(对于openai_tts)OPENAI_TTS_INSTRUCTIONS:OpenAI TTS的自定义语音指令(可选,例如“以愉快和积极的语气说话”)MCP_TTS_SUPPRESS_SPEAKING_OUTPUT:设置为“true”以抑制“Speaking:”输出(可选)MCP_TTS_ALLOW_CONCURRENT:设置为“true”以允许并发TTS操作(可选,默认为顺序)MCP_TTS_OUTPUT_DIR:保存音频文件的目录(可选)MCP_TTS_NO_PLAY:设置为“true”可在保存时跳过播放(可选,需要MCP_TTS_OUTPUT_DIR)
测试
测试macOS TTS
❱ cat test/say.json | go run main.go --verbose
2025/03/23 22:41:49 INFO Starting MCP server name="Say TTS Service" version=1.0.0
2025/03/23 22:41:49 DEBU Say tool called request="{Request:{Method:tools/call Params:{Meta:}} Params:{Name:say_tts Arguments:map[text:Hello, world!] Meta:}}"
2025/03/23 22:41:49 DEBU Executing say command args="[--rate 200 Hello, world!]"
2025/03/23 22:41:49 INFO Speaking text text="Hello, world!"{"jsonrpc":"2.0","id":3,"result":{"content":[{"type":"text","text":"Speaking: Hello, world!"}]}}测试谷歌TTS
❱ cat test/google_tts.json | go run main.go --verbose
2025/05/23 18:26:45 INFO Starting MCP server name="Say TTS Service" version=""
2025/05/23 18:26:45 DEBU Google TTS tool called request="{...}"
2025/05/23 18:26:45 DEBU Generating TTS audio model=gemini-3.1-flash-tts-preview voice=Kore text="Hello! This is a test of Google's TTS API. How does it sound?"
2025/05/23 18:26:49 INFO Playing TTS audio via beep speaker bytes=181006
2025/05/23 18:26:53 INFO Speaking via Google TTS text="Hello! This is a test of Google's TTS API. How does it sound?" voice=Kore{"jsonrpc":"2.0","id":4,"result":{"content":[{"type":"text","text":"Speaking: Hello! This is a test of Google's TTS API. How does it sound? (via Google TTS with voice Kore)"}]}}测试OpenAI TTS
❱ cat test/openai_tts.json | go run main.go --verbose
2025/05/23 19:15:32 INFO Starting MCP server name="Say TTS Service" version=""
2025/05/23 19:15:32 DEBU OpenAI TTS tool called request="{...}"
2025/05/23 19:15:32 DEBU Generating OpenAI TTS audio model=tts-1 voice=nova speed=1.2 text="Hello! This is a test of OpenAI's text-to-speech API. I'm using the nova voice at 1.2x speed."
2025/05/23 19:15:34 DEBU Decoding MP3 stream from OpenAI
2025/05/23 19:15:34 DEBU Initializing speaker for OpenAI TTS sampleRate=22050
2025/05/23 19:15:36 INFO Speaking text via OpenAI TTS text="Hello! This is a test of OpenAI's text-to-speech API. I'm using the nova voice at 1.2x speed." voice=nova model=tts-1 speed=1.2{"jsonrpc":"2.0","id":5,"result":{"content":[{"type":"text","text":"Speaking: Hello! This is a test of OpenAI's text-to-speech API. I'm using the nova voice at 1.2x speed. (via OpenAI TTS with voice nova)"}]}}使用多个TTS请求测试互斥行为
# Sequential mode (default) - speeches play one after another
cat test/sequential.json | go run main.go --verbose
# Concurrent mode - allows overlapping speech
cat test/sequential.json | go run main.go --verbose --sequential-tts=false技能: speak
此回购包括 说 使用TTS自动大声宣布计划、问题和总结的技能。每个项目都有一个独特的声音,这样你就可以识别哪个项目在另一个房间说话。
技能遵循 代理技能 开放标准,可跨Claude Code、Codex CLI和Gemini CLI工作。
安装技能
技能s.sh
npx skills add https://github.com/blacktop/mcp-tts --skill speak克劳德代码
通过插件市场 (推荐):
claude plugin marketplace add blacktop/mcp-tts
claude plugin install speak@mcp-tts或手动:
mkdir -p ~/.claude/skills
git clone https://github.com/blacktop/mcp-tts.git /tmp/mcp-tts
cp -r /tmp/mcp-tts/skill ~/.claude/skills/speak该技能现在可用。Claude将在相关时自动使用它,或直接调用 /speak.
Codex CLI
使用技能安装程序 (在食典会议期间):
$skill-installer install the speak skill from https://github.com/blacktop/mcp-tts --path skill或手动:
mkdir -p ~/.codex/skills
git clone https://github.com/blacktop/mcp-tts.git /tmp/mcp-tts
cp -r /tmp/mcp-tts/skill ~/.codex/skills/speak安装后重新启动Codex。
Gemini CLI
Gemini CLI使用 扩展 捆绑技能。将此仓库安装为扩展:
gemini extensions install https://github.com/blacktop/mcp-tts.git这将安装 speak 技能。
或手动 (仅限技能):
mkdir -p ~/.gemini/skills
git clone https://github.com/blacktop/mcp-tts.git /tmp/mcp-tts
cp -r /tmp/mcp-tts/skill ~/.gemini/skills/speak注: Gemini CLI技能是实验性的。通过启用 /settings → 搜索“技能”→ 打开。共享技能目录(可选)
要在所有代理中维护一个副本,请运行安装脚本:
git clone https://github.com/blacktop/mcp-tts.git
cd mcp-tts
./install-skill.sh这将技能复制到 ~/.agents/skills/speak 并为Claude Code、Codex CLI和Gemini CLI创建符号链接。
验证安装
| 代理 | 命令 |
|---|---|
| Claude Code | 询问“有哪些技能可用?”或键入 /speak |
| Codex CLI | 重新启动时自动加载技能 |
| Gemini CLI | gemini extensions list 或检查 /settings 技能 |
运作原理
该技能在以下情况下自动触发:
- 规划完成 -当计划/待办事项列表最终确定时
- 问题已解决 -当bug修复或错误得到解决时
- 已生成摘要 -当完成一项重大任务时
提供商按顺序回退: google → openai → elevenlabs → say (macOS)。如果提供程序由于缺少API密钥而失败,则会将其标记为不可用,并在将来的尝试中跳过。
许可证
麻省理工学院版权所有(c)2025 柏油碎石
