日本語 | 中文 | Español | Français | हिन्दी | Italiano | Português (BR)
48 voices • 9 languages • 5 presets • 8 emotions • SSML-lite • SFX tags • multi-speaker dialogue
Swappable TTS backends. Guardrails built in. Ships as a single npx command.
______________________________________________________________________
亮点
- MCP本地 --stdio传输,适用于Claude Desktop、Cursor和任何MCP客户端
- 5工具 —
voice_speak,voice_dialogue,voice_status,voice_interrupt,voice_inner_monologue - 48种批准的声音,9种语言 --英语(美国+英国)、日语、普通话、西班牙语、法语、印地语、意大利语、巴西葡萄牙语。精心策划的预设:
narrator,announcer,whisper,storyteller,assistant - 情绪跨度 --8种情绪
{joy}...{/joy}内联标记 - SSML lite — `
, , ` 没有完整的SSML复杂性
- SFX标签 —
[ding],[chime],[whoosh],[tada],[pop],[click]内联音效 - 多人对话 —
Speaker: line带有自动转换和暂停指令的格式 - 护栏 --速率限制、并发信号量、请求超时、路径遍历保护、秘密编校
- 可更换后端 --Mock(内置)、HTTP代理、Python桥或自带
快速开始
npx @mcptoolshop/voice-soundboard-mcp或全局安装:
npm install -g @mcptoolshop/voice-soundboard-mcp
voice-soundboard-mcp克劳德桌面/MCP客户端配置
添加到MCP客户端配置中(例如。 claude_desktop_config.json):
{
"mcpServers": {
"voice-soundboard": {
"command": "npx",
"args": ["-y", "@mcptoolshop/voice-soundboard-mcp"]
}
}
}有选项:
{
"mcpServers": {
"voice-soundboard": {
"command": "npx",
"args": [
"-y", "@mcptoolshop/voice-soundboard-mcp",
"--artifact=path",
"--output-dir=/tmp/voice-output",
"--timeout=30000",
"--max-concurrent=2"
]
}
}
}MCP工具
voice_speak
从文本合成语音。
text: "Hello world!"
voice?: "am_fenrir" # Voice ID or preset name
speed?: 1.0 # 0.5 - 2.0
mood?: "dry" # Humor mood (sensor-humor integration)
format?: "wav" # wav | mp3 | ogg | raw
artifactMode?: "path" # path | base64
outputDir?: "subdir" # Subdirectory within output root
sfx?: true # Enable [ding], [chime] etc.voice_dialogue
多人对话合成。
script: "Alice: Hello!\nBob: Hey there!"
cast?: { "Alice": "af_sky", "Bob": "am_fenrir" }
speed?: 1.0
concat?: true # Combine into single file
debug?: true # Include cue_sheet
artifactMode?: "path" # path | base64
outputDir?: "subdir" # Subdirectory within output rootvoice_status
返回引擎运行状况、可用语音、预设和后端信息。没有争论。
voice_interrupt
停止或回滚活动合成。
streamId?: "stream-123"
reason?: "user_spoke" # user_spoke | context_change | timeout | manualvoice_inner_monologue
用于环境叙事的短暂微话语。需要 --ambient 旗帜或 VOICE_SOUNDBOARD_AMBIENT_ENABLED=1.
text: "Interesting..." # Max 500 chars, auto-redacted
category?: "thinking" # general | thinking | observation | debug声音
来自9种语言的48个声音。语言是从语音ID前缀自动推断出来的,不需要配置。
| 前缀 | 语言 |
|---|---|
af_ / am_ | 英语(美国) |
bf_ / bm_ | 英语(英国) |
jf_ / jm_ | 日语 |
zf_ / zm_ | 普通话 |
ef_ / em_ | 西班牙语 |
ff_ | 法语 |
hf_ / hm_ | 印地语 |
if_ / im_ | 意大利语 |
pf_ / pm_ | 巴西葡萄牙语 |
英语-美国
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
af_aoede | Aoede | 女 | 音乐剧 |
af_bella | 贝拉 | 女 | 暖 |
af_heart | 心 | 女 | 关怀 |
af_jessica | 杰西卡 | 女 | 专业 |
af_kore | Kore | 女 | 年轻 |
af_nicole | 妮可 | 女 | 柔 |
af_sarah | Sarah | 女 | 透明 |
af_sky | 天空 | 女 | 艾莉 |
am_eric | Eric | 男 | 自信 |
am_fenrir | 芬里尔 | 男 | 强大 |
am_liam | 利亚姆 | 男 | 友善 |
am_michael | 迈克尔 | 男 | 深 |
am_onyx | 缟玛瑙 | 雄性 | 光滑 |
am_puck | Puck | 男 | 俏皮 |
英语-英国
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
bf_alice | 爱丽丝 | 女 | 合适 |
bf_emma | 艾玛 | 女 | 精致 |
bf_isabella | 伊莎贝拉 | 女 | 暖 |
bm_fable | 寓言 | 男 | 讲故事 |
bm_george | 乔治 | 男 | 权威 |
bm_lewis | 刘易斯 | 男 | 友善 |
日语
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
jf_alpha | 阿尔法 | 女 | 清澈 |
jf_gongitsune | 贡itsune | 女 | 讲故事 |
jf_nezuko | Nezuko | 女 | 温柔 |
jf_tebukuro | Tebukuro | 女 | 暖 |
jm_kumo | Kumo | 男 | 冷静 |
普通话
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
zf_xiaobei | 小贝 | 女 | 聪明 |
zf_xiaoni | 小妮 | 女 | 温柔 |
zf_xiaoxiao | 潇潇 | 女 | 清 |
zf_xiaoyi | 小怡 | 女 | 暖 |
zm_yunjian | 云建 | 男 | 权威 |
zm_yunxi | Yunxi | 男 | 友善 |
zm_yunxia | 云霞 | 男 | 冷静 |
zm_yunyang | 云阳 | 男 | 自信 |
西班牙语
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
ef_dora | 多拉 | 女 | 暖 |
em_alex | 亚历克斯 | 男 | 自信 |
em_santa | 圣诞老人 | 男 | 乔利 |
法语
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
ff_siwis | Siwis | 女 | 精致 |
印地语
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
hf_alpha | 阿尔法 | 女 | 清澈 |
hf_beta | 贝塔 | 女 | 暖 |
hm_omega | Omega | 男 | 深 |
hm_psi | Psi | 男 | 冷静 |
意大利语
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
if_sara | 萨拉 | 女 | 暖 |
im_nicola | 尼古拉 | 男 | 自信 |
巴西葡萄牙语
| ID | 姓名 | 性别 | 风格 |
|---|---|---|---|
pf_dora | 多拉 | 女 | 暖 |
pm_alex | 亚历克斯 | 男 | 自信 |
pm_santa | 圣诞老人 | 男 | 乔利 |
预设
| 预设 | 语音 | 速度 | 描述 |
|---|---|---|---|
narrator | bm_george | 0.95 | 冷静、清晰、纪实风格 |
announcer | am_eric | 1.1 | 大胆、充满活力、广播风格 |
whisper | af_sky | 0.85 | 柔软、亲密、温柔 |
storyteller | bf_emma | 0.90 | 表现力强、节奏多变 |
assistant | af_jessica | 1.0 | 友好、乐于助人、健谈 |
情感跨度
将文本包裹在情感标签中,以控制韵律和语音路由:
{joy}Great news!{/joy} But {calm}let me explain.{/calm}支持: neutral, serious, friendly, professional, calm, joy, urgent, whisper
CLI标志
| 标志 | 默认值 | 描述 | ||
|---|---|---|---|---|
| `--artifact=path\ | base64` | path | 音频传输模式 | |
| `--output-dir= | ||||
| ` | /voice-soundboard/ | 输出目录 | ||
| `--backend=mock\ | http\ | python` | mock | 后端选择 |
--ambient | 关闭 | 启用内心独白系统 | ||
--max-concurrent= | 3 | 最大并发合成请求数 | ||
--timeout= | 60000 | 每次请求超时 | ||
--retention-minutes= | 240 | 自动清理年龄(0表示禁用) |
包裹
这是一个pnpm monorepo,有两个可发布的包:
| 包 | 描述 | npm |
|---|---|---|
@mcptoolshop/voice-soundboard-core | 后端无关的核心库(验证、SSML、分块、模式) | ](https://www.npmjs.com/package/@mcptoolshop/voice-soundboard-core) |
@mcptoolshop/voice-soundboard-mcp | 带CLI、护栏和传输的MCP服务器 | ](https://www.npmjs.com/package/@mcptoolshop/voice-soundboard-mcp) |
发展
# Install
pnpm install
# Build
pnpm build
# Test (363 tests)
pnpm test
# Build + test in one step
pnpm verify部分 MCP工具车间
项目结构
mcp-voice-soundboard/
packages/
core/ @mcptoolshop/voice-soundboard-core
src/
limits.ts SHIP_LIMITS, text/chunk limits
schemas.ts VoiceRequest, VoiceResponse, error codes
artifact.ts resolveOutputDir, path sandbox
voices.ts Approved voice registry + presets
emotion.ts Emotion span parser
ssml/ SSML-lite parser + limits
chunking/ Text chunker
sfx/ SFX tag parser + registry
sandbox.ts Safe filenames, symlink checks
ambient.ts AmbientEmitter for inner monologue
redact.ts PII/secret redaction
mcp-server/ @mcptoolshop/voice-soundboard-mcp
src/
server.ts MCP tool registration + guardrail wiring
cli.ts CLI entrypoint (stdio transport)
backend.ts Backend abstraction + mock/HTTP
concurrency.ts SynthesisSemaphore
rateLimit.ts ToolRateLimiter (sliding window)
timeout.ts withTimeout utility
retention.ts Output file cleanup timer
redact.ts Server-level redaction
validation.ts Synthesis result validation
tools/ Individual tool handlers
assets/ Logo, audio event manifests
docs/ Architecture docs隐私
没有遥测。 此工具不收集使用数据,不发送分析,也不向您配置的TTS后端发出网络请求。所有处理都是本地的。
安全
看 安全.md 用于漏洞报告。
看 线程_模式.md 进行全面的威胁面分析。
相关
| 项目 | 描述 |
|---|---|
| 音板插件 | Claude Code插件——斜线命令,情感感知叙事 |
支持
记分卡
| 类别 | 分数 | 备注 |
|---|---|---|
| A.安全 | 10/10 | Security.md,威胁_MODEL.md,编辑,无遥测 |
| B.错误处理 | 8/10 | 结构化错误契约(代码/提示/可重试),toToolError模式 |
| C.操作员文档 | 9/10 | 自述文件、变更日志、手册、工具文档 |
| D.运输卫生 | 9/10 | CI、验证脚本、可靠性、锁文件 |
| E.身份 | 10/10 | 徽标、翻译、登录页、元数据 |
| 总计 | 46/50 |
许可证
______________________________________________________________________
Built by MCP Tool Shop
