VOICEVOX TTS MCP
英语 | 日本语
使用VOICEVOX的文本转语音MCP服务器
🎮 尝试浏览器演示 --直接在浏览器中测试VoicevoxClient
你能做什么
- 让你的AI助手说话 --来自Claude Desktop等MCP客户端的文本转语音
- UI音频播放器(MCP应用程序) --使用交互式播放器(ChatGPT/Claude Desktop/Claude Web等)在聊天中直接播放音频
- 多角色对话 --在一次通话中按段切换扬声器
- 流畅播放 --队列管理、即时播放、预取、流式传输
- 跨平台 --适用于Windows、macOS、Linux(包括WSL)
UI音频播放器(MCP应用程序)
这 voicevox_speak_player 工具用途 MCP应用程序 以在聊天中直接呈现交互式音频播放器。与标准不同 voicevox_speak 在服务器上播放音频的工具, 音频在客户端播放(在浏览器/应用程序中) --服务器上不需要音频设备。
特性
- 客户端播放 --音频在Claude Desktop的聊天中播放,而不是在服务器上播放。甚至可以通过远程连接工作。
- 播放/暂停控制 --对话中嵌入了完整的播放控制
- 多人对话 --通过曲目导航在一个播放器中顺序播放多个扬声器
- 扬声器切换 --直接从播放器UI更改任何片段的声音
- 片段编辑 --调整每个片段的速度、音量、语调、停顿时间和前后静音
- 重音短语编辑 --直接在UI中编辑重音位置和莫拉音高
- 添加/删除/重新排序分段 --拖放轨迹重新排序;内联添加新段
- WAV出口 --将所有曲目保存为编号的WAV文件,并自动打开输出文件夹
- 用户词典管理器 --通过预览播放添加、编辑和删除VOICEVOX用户词典单词
- 跨会话状态恢复 --玩家状态在服务器上持久化;重新打开聊天会恢复以前的曲目
按环境导出行为:
Save and open始终导出WAV文件。如果不支持打开文件资源管理器,导出仍然成功,保存路径显示在UI中。Choose output folder在Windows/macOS上使用本机目录选择器。在不受支持的环境中,此操作将回退到默认导出目录。
| 多扬声器播放 | 曲目列表 | 片段编辑 |
|---|---|---|
| Multi-speaker player | Track list | Segment editing |
| 扬声器选择 | 词典管理器 | WAV导出 |
|---|---|---|
| Speaker selection | Dictionary manager | WAV export |
支持的客户
| 客户端 | 连接 | 备注 |
|---|---|---|
| ChatGPT | HTTP(远程) | 需要 VOICEVOX_PLAYER_DOMAIN |
| 克劳德桌面版 | stdio(本地) | 开箱即用 |
| 克劳德桌面版 | HTTP(通过mcp-remote) | 不设置 VOICEVOX_PLAYER_DOMAIN |
注:speak_player需要支持MCP应用程序的主机。在不支持MCP Apps的主机中,该工具不可用speak(服务器端播放)可以代替。
玩家MCP工具
| 工具 | 说明 |
|---|---|
speak_player | 创建新的玩家会话并显示UI。退货 viewUUID. |
resynthesize_player | 更新现有玩家的所有分段(新 viewUUID 每次通话)。 |
get_player_state | 读取当前玩家状态(分页)以进行AI调整。 |
open_dictionary_ui | 打开用户词典管理器UI。 |
快速开始
需求
- Node.js 18.0.0或更高版本(或 包子) 或Docker
- VOICEVOX发动机 (必须正在运行;包含在Docker Compose中)
- ffplay(可选,推荐-Docker不需要)
安装FFplay
ffplay是FFmpeg附带的轻量级播放器,支持从stdin播放。如果可用,它会自动启用低延迟流媒体播放。
💡 FFplay是可选的。 如果没有它,播放将退回到基于临时文件的播放(Windows:PowerShell、macOS:afplay、Linux:aplay等)。
- 易于设置:每个操作系统安装一个衬垫(见以下步骤)
- 必修的:
ffplay必须在PATH中(安装后重新启动终端/应用程序)
FFplay Installation and PATH Setup
安装示例:
- Windows(其中任何一个)
- 翼: winget install --id=Gyan.FFmpeg -e - 巧克力: choco install ffmpeg - 勺: scoop install ffmpeg - 官方版本:从下载https://www.gyan.dev/ffmpeg/builds/或https://github.com/BtbN/FFmpeg-Builds并添加 bin 文件夹到PATH
- macOS
- 自制: brew install ffmpeg
- Linux
- Debian/Ubuntu: sudo apt-get update && sudo apt-get install -y ffmpeg - Fedora: sudo dnf install -y ffmpeg - 拱门: sudo pacman -S ffmpeg
路径设置:
- Windows:添加
...\ffmpeg\bin到环境变量,然后重新启动PowerShell/终端和编辑器(Claude/VS代码等)
- 验证: powershell -c "$env:Path" 应包含ffmpeg路径
- macOS/Linux:通常自动检测。与核对
echo $PATH如果需要,重新启动shell。 - MCP客户端(克劳德桌面/代码):重新启动应用程序以重新加载PATH。
验证:
ffplay -version如果显示版本信息,则安装完成。CLI/MCP将自动检测ffplay并使用stdin流媒体播放。
3个步骤开始
1.启动VOICEVOX发动机
2.添加到Claude Desktop配置文件
配置文件位置:
- 窗户:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "@kajidog/mcp-tts-voicevox"]
}
}
}💡 如果使用Bun,只需更换npx和bunx: ``json "command": "bunx", "args": ["@kajidog/mcp-tts-voicevox"]``
3.重新启动克劳德桌面
就是这样!让克劳德“打个招呼”,它就会说话!
Docker快速入门
您可以使用Docker Compose通过单个命令运行MCP服务器和VOICEVOX引擎。无需安装Node.js或VOICEVOX。
1.启动容器
docker compose up -d这将启动VOICEVOX引擎和MCP服务器(端口3000上的HTTP模式)。
2.添加到Claude Desktop配置文件(使用mcp-remote)
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}3.重新启动克劳德桌面
限制(Docker): Docker容器没有音频设备,因此voicevox_speak默认情况下,工具(服务器端播放)处于禁用状态。使用voicevox_speak_player相反,它在客户端(在Claude Desktop中)播放音频,并且在服务器上没有任何音频设备的情况下工作。看 UI音频播放器 了解详情。
______________________________________________________________________
MCP工具
voicevox_speak --文本转语音
主要功能可从Claude调用。
| 参数 | 说明 | 默认值 |
|---|---|---|
text | 要发言的文本(用换行符分隔的多段) | 必填 |
speaker | 扬声器ID | 1 |
speedScale | 播放速度 | 1.0 |
immediate | 立即播放(清除队列) | true |
waitForEnd | 等待播放完成 | false |
示例:
// Simple text
{ "text": "Hello" }
// Specify speaker
{ "text": "Hello", "speaker": 3 }
// Different speakers per segment
{ "text": "1:Hello\n3:Nice weather today" }
// Wait for completion (synchronous processing)
{ "text": "Wait for this to finish before continuing", "waitForEnd": true }Other Tools
| 工具 | 说明 |
|---|---|
voicevox_speak_player | 使用UI音频播放器通话(禁用 --disable-tools) |
voicevox_ping | 检查VOICEVOX发动机连接 |
voicevox_get_speakers | 获取可用演讲者列表 |
voicevox_stop_speaker | 停止播放并清空队列 |
voicevox_synthesize_file | 生成音频文件 |
______________________________________________________________________
配置
Environment Variables
VOICEVOX设置
| 变量 | 描述 | 默认值 |
|---|---|---|
VOICEVOX_URL | 引擎URL | http://localhost:50021 |
VOICEVOX_DEFAULT_SPEAKER | 默认扬声器ID | 1 |
VOICEVOX_DEFAULT_SPEED_SCALE | 播放速度 | 1.0 |
回放选项
| 变量 | 描述 | 默认值 |
|---|---|---|
VOICEVOX_USE_STREAMING | 流媒体播放(需要 ffplay) | false |
VOICEVOX_DEFAULT_IMMEDIATE | 立即播放 | true |
VOICEVOX_DEFAULT_WAIT_FOR_START | 等待播放开始 | false |
VOICEVOX_DEFAULT_WAIT_FOR_END | 等待播放结束 | false |
限制设置
限制AI指定某些选项。
| 变量 | 描述 |
|---|---|
VOICEVOX_RESTRICT_IMMEDIATE | 限制 immediate 选项 |
VOICEVOX_RESTRICT_WAIT_FOR_START | 限制 waitForStart 选项 |
VOICEVOX_RESTRICT_WAIT_FOR_END | 限制 waitForEnd 选项 |
禁用工具
# Disable individual tools
export VOICEVOX_DISABLED_TOOLS=speak_player,synthesize_file
# Disable a built-in group of tools
export VOICEVOX_DISABLED_GROUPS=player
# Combine groups and individual tools
export VOICEVOX_DISABLED_GROUPS=dictionary
export VOICEVOX_DISABLED_TOOLS=synthesize_file内置群组 VOICEVOX_DISABLED_GROUPS / --disable-groups:
| 组 | 工具 |
|---|---|
player | speak_player, resynthesize_player, get_player_state, open_dictionary_ui |
dictionary | get_accent_phrases, get_user_dictionary, add_user_dictionary_word, update_user_dictionary_word, delete_user_dictionary_word, add_user_dictionary_words, update_user_dictionary_words |
file | synthesize_file |
apps | speak_player, resynthesize_player, open_dictionary_ui (MCP应用程序UI工具) |
UI播放器设置
| 变量 | 描述 | 默认值 |
|---|---|---|
VOICEVOX_PLAYER_DOMAIN | UI播放器的小部件域(ChatGPT需要,例如。 https://your-app.onrender.com) | _(未设置)_ |
VOICEVOX_AUTO_PLAY | 在UI播放器中自动播放音频 | true |
VOICEVOX_PLAYER_EXPORT_ENABLED | 启用从UI播放器导出(下载)曲目(false 禁用) | true |
VOICEVOX_PLAYER_EXPORT_DIR | 导出曲目的默认输出目录(在文件夹选择器不可用时也用作回退) | ./voicevox-player-exports |
VOICEVOX_PLAYER_CACHE_DIR | 播放器缓存文件目录(*.txt)以及默认玩家状态文件 | ./.voicevox-player-cache |
VOICEVOX_PLAYER_AUDIO_CACHE_ENABLED | 在磁盘上启用持久音频缓存(false 禁用磁盘缓存写入/读取) | true |
VOICEVOX_PLAYER_AUDIO_CACHE_TTL_DAYS | 音频缓存保留时间(天)(0:禁用磁盘缓存, -1:无TTL清理) | 30 |
VOICEVOX_PLAYER_AUDIO_CACHE_MAX_MB | 音频缓存大小上限(MB)(0:禁用磁盘缓存, -1:无限制) | 512 |
VOICEVOX_PLAYER_STATE_FILE | 持久化玩家状态JSON的路径 | /player-state.json |
服务器设置
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_HTTP_MODE | 启用HTTP模式 | false |
MCP_HTTP_PORT | HTTP端口 | 3000 |
MCP_HTTP_HOST | HTTP主机 | 0.0.0.0 |
MCP_ALLOWED_HOSTS | 允许的主机(逗号分隔) | localhost,127.0.0.1,[::1] |
MCP_ALLOWED_ORIGINS | 允许的来源(逗号分隔) | http://localhost,http://127.0.0.1,... |
MCP_API_KEY | 的必需API密钥 /mcp (通过发送 X-API-Key 或 Authorization: Bearer) | _(未设置)_ |
Command Line Arguments
命令行参数优先于环境变量。
# Basic settings
npx @kajidog/mcp-tts-voicevox --url http://192.168.1.100:50021 --speaker 3 --speed 1.2
# HTTP mode
npx @kajidog/mcp-tts-voicevox --http --port 8080
# With restrictions
npx @kajidog/mcp-tts-voicevox --restrict-immediate --restrict-wait-for-end
# Disable individual tools
npx @kajidog/mcp-tts-voicevox --disable-tools speak_player,synthesize_file
# Disable a tool group
npx @kajidog/mcp-tts-voicevox --disable-groups player| 参数 | 描述 |
|---|---|
--help, -h | 显示帮助 |
--version, -v | 显示版本 |
--init | 生成 .voicevoxrc.json 使用默认设置 |
| `--config | |
| ` | 配置文件的路径 |
--url | VOICEVOX引擎URL |
--speaker | 默认扬声器ID |
--speed | 播放速度 |
--use-streaming / --no-use-streaming | 流媒体播放 |
--immediate / --no-immediate | 立即播放 |
--wait-for-start / --no-wait-for-start | 等待启动 |
--wait-for-end / --no-wait-for-end | 等待结束 |
--restrict-immediate | 立即限制 |
--restrict-wait-for-start | 限制waitForStart |
--restrict-wait-for-end | 限制waitForEnd |
--disable-tools | 禁用工具(逗号分隔的工具名称) |
--disable-groups | 禁用工具组: player, dictionary, file, apps |
--auto-play / --no-auto-play | 在UI播放器中自动播放 |
--player-export / --no-player-export | 在UI播放器中启用/禁用曲目导出(下载) |
--player-export-dir | 导出曲目的默认输出目录 |
--player-cache-dir | 播放器缓存目录 |
| `--player-state-file | |
| ` | 持久玩家状态文件路径 |
--player-audio-cache / --no-player-audio-cache | 为播放器启用/禁用磁盘音频缓存 |
--player-audio-cache-ttl-days | 音频缓存保留天数(0:禁用, -1:无TTL清理) |
--player-audio-cache-max-mb | 音频缓存大小上限(MB)(0:禁用, -1:无限制) |
--http | HTTP模式 |
--port | HTTP端口 |
--host | HTTP主机 |
--allowed-hosts | 允许的主机(逗号分隔) |
--allowed-origins | 允许的来源(逗号分隔) |
--api-key | 的必需API密钥 /mcp |
Config File (.voicevoxrc.json)
您可以使用JSON配置文件来代替(或补充)环境变量和CLI参数。当您有许多设置要配置时,这很有用。
优先级顺序: CLI参数>环境变量>配置文件>默认值
生成配置文件
npx @kajidog/mcp-tts-voicevox --init这创造了 .voicevoxrc.json 在当前目录中使用所有默认设置。根据需要进行编辑。
使用自定义配置文件路径
npx @kajidog/mcp-tts-voicevox --config ./my-config.json或者通过环境变量:
VOICEVOX_CONFIG=./my-config.json npx @kajidog/mcp-tts-voicevox示例 .voicevoxrc.json
{
"url": "http://192.168.1.50:50021",
"speaker": 3,
"speed": 1.2,
"http": true,
"port": 8080,
"disable-tools": ["synthesize_file"],
"disable-groups": ["dictionary"]
}钥匙可以写在烤肉串里(use-streaming),案例(useStreaming),或内部密钥名称(defaultSpeaker).如果 .voicevoxrc.json 存在于当前目录中,它将自动加载。
HTTP Mode
对于远程连接:
启动服务器:
# Linux/macOS
MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox
# Windows PowerShell
$env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevoxClaude桌面配置(使用mcp-remote):
{
"mcpServers": {
"tts-mcp-proxy": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}每个项目扬声器设置
使用Claude Code,您可以在中使用自定义标题为每个项目配置不同的默认扬声器 .mcp.json:
| 标题 | 描述 |
|---|---|
X-Voicevox-Speaker | 此项目的默认扬声器ID |
X-API-Key | API密钥 MCP_API_KEY 已配置 |
示例 .mcp.json:
{
"mcpServers": {
"tts": {
"type": "http",
"url": "http://localhost:3000/mcp",
"headers": {
"X-Voicevox-Speaker": "113",
"X-API-Key": "your-api-key"
}
}
}
}这允许每个项目自动使用不同的语音字符。
优先级顺序:
- 明确的
speaker工具调用中的参数(最高) - 项目默认值来自
X-Voicevox-Speaker头球 - 全球
VOICEVOX_DEFAULT_SPEAKER设置(最低)
WSL to Windows Host Connection
从WSL连接到在Windows上运行的MCP服务器:
1.从WSL获取Windows主机IP
# Method 1: From default gateway
ip route show | grep -oP 'default via \K[\d.]+'
# Usually in the format 172.x.x.1
# Method 2: From /etc/resolv.conf (WSL2)
cat /etc/resolv.conf | grep nameserver | awk '{print $2}'2.在Windows上启动服务器
将WSL网关IP添加到 MCP_ALLOWED_HOSTS 要允许从WSL访问:
$env:MCP_HTTP_MODE='true'
$env:MCP_ALLOWED_HOSTS='localhost,127.0.0.1,172.29.176.1'
npx @kajidog/mcp-tts-voicevox或者使用CLI参数:
npx @kajidog/mcp-tts-voicevox --http --allowed-hosts "localhost,127.0.0.1,172.29.176.1"3.WSL配置(.mcp.json)
{
"mcpServers": {
"tts": {
"type": "http",
"url": "http://172.29.176.1:3000/mcp"
}
}
}⚠️ 在WSL内, localhost 指WSL本身。使用WSL网关IP访问Windows主机。Using with ChatGPT
要与ChatGPT一起使用,请以HTTP模式将MCP服务器部署到云中,并访问VOICEVOX引擎。
1.部署到云端
使用Docker部署渲染、铁路等。(包括Dockerfile)。
2.设置VOICEVOX引擎
在本地运行VOICEVOX引擎,并通过ngrok公开它,或者将其与MCP服务器一起部署。
3.配置环境变量
| 变量 | 示例 | 描述 |
|---|---|---|
VOICEVOX_URL | https://xxxx.ngrok-free.app | VOICEVOX引擎URL |
MCP_HTTP_MODE | true | 启用HTTP模式 |
MCP_ALLOWED_HOSTS | your-app.onrender.com | 已部署主机名 |
VOICEVOX_PLAYER_DOMAIN | https://your-app.onrender.com | UI播放器的小部件域(ChatGPT需要) |
VOICEVOX_DISABLED_TOOLS | speak | 禁用服务器端播放(无音频设备) |
VOICEVOX_PLAYER_EXPORT_ENABLED | false | 禁用导出功能(无法从云端下载文件) |
4.在ChatGPT中添加连接器
转到ChatGPT设置→ 连接器→ 添加MCP服务器URL(https://your-app.onrender.com/mcp).
Using with Claude Web
基本步骤与ChatGPT相同,但 VOICEVOX_PLAYER_DOMAIN 价值是不同的。
Claude Web要求 ui.domain 成为 基于哈希的专用域。使用以下命令计算它:
node -e "console.log(require('crypto').createHash('sha256').update('Your MCP server URL').digest('hex').slice(0,32)+'.claudemcpcontent.com')"示例:如果您的MCP服务器URL为 https://your-app.onrender.com/mcp:
node -e "console.log(require('crypto').createHash('sha256').update('https://your-app.onrender.com/mcp').digest('hex').slice(0,32)+'.claudemcpcontent.com')"
# Example output: 48fb73a6...claudemcpcontent.com将此输出值设置为 VOICEVOX_PLAYER_DOMAIN.
备注:由于ChatGPT和Claude Web需要不同的 VOICEVOX_PLAYER_DOMAIN 值,单个实例不能同时为两个客户端提供服务。为每个实例部署单独的实例,或根据目标客户端切换环境变量。______________________________________________________________________
故障排除
Audio is not playing
1.检查VOICEVOX发动机是否运行
curl http://localhost:50021/speakers2.检查特定平台的播放工具
| OS | 所需工具 |
|---|---|
| Linux | 其中之一 aplay, paplay, play, ffplay |
| macOS | afplay (预装) |
| Windows | PowerShell(预安装) |
Not recognized by MCP client
- 检查软件包安装:
npm list -g @kajidog/mcp-tts-voicevox - 验证配置文件中的JSON语法
- 重新启动客户端
______________________________________________________________________
包结构
| 包装 | 描述 |
|---|---|
@kajidog/mcp-tts-voicevox | MCP服务器 |
@kajidog/voicevox-client | 通用VOICEVOX客户端库(可独立使用) |
@kajidog/player-ui | 基于React的音频播放器用户界面,用于浏览器播放 |
______________________________________________________________________
Developer Information
设置
git clone https://github.com/kajidog/mcp-tts-voicevox.git
cd mcp-tts-voicevox
pnpm install命令
| 命令 | 描述 |
|---|---|
pnpm build | 构建所有包 |
pnpm test | 运行测试 |
pnpm lint | 运行lint |
pnpm dev | 启动开发服务器 |
pnpm dev:stdio | 使用stdio模式开发 |
pnpm dev:bun | 使用Bun启动开发服务器 |
pnpm dev:bun:http | 使用Bun启动HTTP开发服务器 |
______________________________________________________________________
许可证
ISC
