简体中文 | 日本語
使用 VOICEVOX 的文本转语音 MCP 服务器
@kajidog/voicevox-clientnpm install -g @kajidog/mcp-tts-voicevox
启动 VOICEVOX 引擎并使其等待在默认端口 (http://localhost:50021)。
标准 I/O 模式(推荐):
npx @kajidog/mcp-tts-voicevox
HTTP 服务器模式:
# Linux/macOS
MCP_HTTP_MODE=true npx @kajidog/mcp-tts-voicevox
# Windows PowerShell
$env:MCP_HTTP_MODE='true'; npx @kajidog/mcp-tts-voicevox
speak - 文本转语音将文本转换为语音并播放。
参数:
text: 字符串(多个文本由换行符分隔,角色规格为 "1:text" 格式)speaker(可选):角色IDspeedScale(可选):播放速度immediate(可选):是否立即开始播放(默认值:true)waitForStart(可选):是否等待播放开始(默认值:false)waitForEnd(可选):是否等待播放结束(默认值:false)示例:
// 简单文本
{ "text": "你好\n今天天气不错" }
// 角色规格
{ "text": "你好", "speaker": 3 }
// 每个片段指定角色
{ "text": "1:你好\n3:今天天气不错" }
// 即时播放(绕过队列)
{
"text": "紧急消息",
"immediate": true,
"waitForEnd": true
}
// 等待播放完成(同步处理)
{
"text": "等待此音频播放完成后进行下一步处理",
"waitForEnd": true
}
// 添加到队列但不自动播放
{
"text": "等待手动开始播放",
"immediate": false
}
immediate: true)绕过队列立即播放音频:
waitForEnd: true)等待播放完成以同步处理:
// 示例 1:立即播放紧急消息并等待完成
{
"text": "紧急!请立即检查",
"immediate": true,
"waitForEnd": true
}
// 示例 2:逐步音频指南
{
"text": "步骤 1:请打开文件",
"waitForEnd": true
}
// 下一步处理在上述音频完成后执行
generate_query - 生成语音合成查询synthesize_file - 生成音频文件stop_speaker - 停止播放并清除队列get_speakers - 获取角色列表get_speaker_detail - 获取角色详情在你的 claude_desktop_config.json 文件中添加以下配置:
{
"mcpServers": {
"tts-mcp": {
"command": "npx",
"args": ["-y", "@kajidog/mcp-tts-voicevox"]
}
}
}
如果你需要在 SSE 模式下进行语音合成,你可以使用 mcp-remote 进行 SSE↔Stdio 转换:
Claude Desktop 配置
{
"mcpServers": {
"tts-mcp-proxy": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/sse"]
}
}
}
启动 SSE 服务器
Mac/Linux:
MCP_HTTP_MODE=true MCP_HTTP_PORT=3000 npx @kajidog/mcp-tts-voicevox
Windows:
$env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox
## 环境变量
### VOICEVOX 配置
- `VOICEVOX_URL`: VOICEVOX 引擎 URL(默认值:`http://localhost:50021`)
- `VOICEVOX_DEFAULT_SPEAKER`: 默认角色ID(默认值:`1`)
- `VOICEVOX_DEFAULT_SPEED_SCALE`: 默认播放速度(默认值:`1.0`)
### 播放选项配置
- `VOICEVOX_DEFAULT_IMMEDIATE`: 是否在添加到队列时立即开始播放(默认值:`true`)
- `VOICEVOX_DEFAULT_WAIT_FOR_START`: 是否等待播放开始(默认值:`false`)
- `VOICEVOX_DEFAULT_WAIT_FOR_END`: 是否等待播放结束(默认值:`false`)
**使用示例:**
```bash
# 示例 1:等待所有音频播放完成(同步处理)
export VOICEVOX_DEFAULT_WAIT_FOR_END=true
npx @kajidog/mcp-tts-voicevox
# 示例 2:等待播放开始和结束
export VOICEVOX_DEFAULT_WAIT_FOR_START=true
export VOICEVOX_DEFAULT_WAIT_FOR_END=true
npx @kajidog/mcp-tts-voicevox
# 示例 3:手动控制(禁用自动播放)
export VOICEVOX_DEFAULT_IMMEDIATE=false
npx @kajidog/mcp-tts-voicevox
```
这些选项允许根据应用程序需求精细控制音频播放行为。
### 服务器配置
- `MCP_HTTP_MODE`: 启用 HTTP 服务器模式(设置为 `true` 启用)
- `MCP_HTTP_PORT`: HTTP 服务器端口号(默认值:`3000`)
- `MCP_HTTP_HOST`: HTTP 服务器主机(默认值:`0.0.0.0`)
## 使用 WSL(Windows 子系统 for Linux)
从 WSL 环境连接到 Windows 主机 MCP 服务器的配置方法。
### 1. Windows 主机配置
**使用 PowerShell 启动 MCP 服务器:**
```powershell
$env:MCP_HTTP_MODE='true'; $env:MCP_HTTP_PORT='3000'; npx @kajidog/mcp-tts-voicevox
```
### 2. WSL 环境配置
**检查 Windows 主机 IP 地址:**
```bash
# 从 WSL 获取 Windows 主机 IP 地址
ip route show | grep default | awk '{print $3}'
```
通常格式为 `172.x.x.1`。
**Claude Code .mcp.json 配置示例:**
```json
{
"mcpServers": {
"tts": {
"type": "sse",
"url": "http://172.29.176.1:3000/sse"
}
}
}
```
**重要事项:**
- 在 WSL 中,`localhost` 或 `127.0.0.1` 指向的是 WSL 内部,无法访问 Windows 主机服务
- 使用 WSL 网关 IP(通常是 `172.x.x.1`)来访问 Windows 主机
- 确保端口未被 Windows 防火墙阻止
**连接测试:**
```bash
# 从 WSL 检查连接到 Windows 主机 MCP 服务器
curl http://172.29.176.1:3000
```
如果正常,将返回 `404 Not Found`(因为根路径不存在)。
## 故障排除
### 常见问题
1. **VOICEVOX 引擎未运行**
```bash
curl http://localhost:50021/speakers
```
2. **音频未播放**
- 检查系统音频输出设备
- 检查特定平台的音频播放工具:
- **Linux**: 需要 `aplay`, `paplay`, `play`, `ffplay` 中的一个
- **macOS**: `afplay`(已预安装)
- **Windows**: PowerShell(已预安装)
3. **未被 MCP 客户端识别**
- 检查包安装情况:`npm list -g @kajidog/mcp-tts-voicevox`
- 检查配置文件中的 JSON 语法
## 许可证
ISC
[](https://mseep.ai/app/kajidog-mcp-tts-voicevox)
## 开发者信息
本地开发此仓库的说明。
### 设置
1. 克隆仓库:
```bash
git clone https://github.com/kajidog/mcp-tts-voicevox.git
cd mcp-tts-voicevox
```
2. 安装 [pnpm](https://pnpm.io/)(如果尚未安装)。
3. 安装依赖项:
```bash
pnpm install
```
### 主要开发命令
你可以在项目根目录运行以下命令。
- **构建所有包:**
```bash
pnpm build
```
- **运行所有测试:**
```bash
pnpm test
```
- **运行所有代码检查器:**
```bash
pnpm lint
```
- **在开发模式下启动根服务器:**
```bash
pnpm dev
```
- **在开发模式下启动 stdio 接口:**
```bash
pnpm dev:stdio
```
这些命令还将正确处理工作区内的相关包的处理。