内容
# 文本转语音 MCP 服务器
<!-- mcp-name: io.github.Engr-FaizanAli/text-to-speech -->
文本转语音是一个开源的模型上下文协议(MCP)服务器,允许 AI 助手在用户的计算机上大声朗读文本。在 Windows 上,它默认使用内置的语音 API(SAPI),因此不需要 API 密钥、账户、订阅或云端文本转语音服务。
服务器公开一个模型控制的工具:
```text
speak_text(text: string)
```
可用于用户提供的文本、助手答案、辅助工作流程或代理工作时的语音进度更新。
## 功能
- 默认情况下通过 Windows SAPI 进行本地播放。
- 默认设置下无需云 API 和 API 密钥。
- FIFO 播放:并发请求按顺序逐一播放。
- 阻塞工具完成:每个调用在音频播放完毕后返回。
- 有限的输入和队列大小,以防止资源使用不受限制。
- 默认情况下,临时生成的 WAV 文件在播放后会被删除。
- 通过官方 Python SDK 使用标准 MCP `stdio` 传输。
- 为高级用户提供可选的 Piper、Transformers MMS 和本地 HTTP 后端。
> MCP 服务器源代码在 MIT 许可下开源。Windows SAPI 是随 Windows 提供的专有组件;它不是开源的语音引擎。
## 要求
- 使用零配置 SAPI 后端所需的 Windows 10 或 Windows 11。
- Python 3.10 或更高版本。
- 支持 stdio MCP 服务器的 MCP 客户端。
- 建议使用 `uv`/`uvx` 进行基于包的 MCP 安装。
## 安装
配置 MCP 客户端以运行已发布的 PyPI 包:
```text
uvx text-to-speech-mcp
```
对于支持基于命令的服务器配置的 MCP 客户端,请使用:
```toml
command = "uvx"
args = ["text-to-speech-mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 300
enabled = true
```
某些客户端使用 TOML、JSON 或图形化设置页面。使用 `uvx text-to-speech-mcp` 作为服务器命令,并在更改客户端配置后重启客户端。
### 从源代码安装
```powershell
git clone https://github.com/engr-faizanali/text-to-speech-mcp.git
cd text-to-speech-mcp
python -m pip install .
```
然后配置客户端直接运行 `text-to-speech-mcp`。
## 提示示例
阅读任意文本:
```text
使用文本转语音工具大声朗读:部署成功完成。
```
阅读最终答案:
```text
使用文本转语音工具在显示最终响应之前大声朗读出来。
```
按顺序阅读可见的中间进度更新:
```text
使用 text_to_speech MCP 服务器的 speak_text 工具进行语音进度更新。
对于您显示给我的每个有意义的中间更新:
1. 使用 speak_text 调用并传递您即将显示的确切更新文本。
2. 等待调用完成,然后再生成或语音播放下一个更新。
3. 然后以文本形式显示相同的更新。
还请使用 speak_text 调用并传递确切的最终答案,然后再显示它。 除非我明确要求您大声朗读内容,否则请勿语音朗读隐藏的推理、思维链、机密、凭证、原始工具输出、终端日志或源代码。不要并行调用语音播放。如果工具不可用,请继续正常以文本形式显示,并在一次报告失败。
```
`text_to_speech` 部分是客户端服务器名称的示例。客户端可能会显示不同的命名空间,同时保留工具名称 `speak_text`。
## 工具合约
| 字段 | 值 |
| --- | --- |
| 工具名称 | `speak_text` |
| 输入 | `text`,必填字符串,1-50,000 个字符 |
| 结果 | 本地播放完成后完成消息 |
| 排序 | FIFO,一次一个活动播放 |
| 队列限制 | 32 个待处理请求 |
| 使用 SAPI 的网络 | 无 |
该工具在 MCP 下由模型控制。用户决定何时要求模型调用它,MCP 客户端可能会显示或要求批准工具调用。
## 隐私
使用默认 SAPI 后端时,文本从 MCP 客户端传递到本地 Python 进程,然后传递到 Windows 语音组件。它不会被发送到此项目、外部 API 或云 TTS 提供商。生成的 WAV 文件写入 `%TEMP%\text-to-speech-mcp` 并在播放后删除,除非设置了 `TEXT_TO_SPEECH_KEEP_AUDIO=true`。
请勿要求 AI 助手朗读机密、凭证、私钥、隐藏推理或敏感工具输出。
## 可选后端
默认情况下不需要配置:
```toml
TEXT_TO_SPEECH_BACKEND = "sapi"
```
高级用户可以将 `TEXT_TO_SPEECH_BACKEND` 设置为 `piper`、`transformers_mms` 或 `http`。这些选项需要其自己的本地模型、二进制、Python 依赖项或端点。请参阅 [后端配置](https://github.com/engr-faizanali/text-to-speech-mcp/blob/main/CONFIGURATION.md)。
## 克劳德代码技能
对于克劳德代码用户,[skills/project-tts-responder/SKILL.md](skills/project-tts-responder/SKILL.md) 定义了基于 `speak_text` 的流式、批量和朗读叙述模式。将它复制到项目的 `.claude/skills/` 目录中使用。
## MCP 兼容性
- MCP 传输:`stdio`
- MCP 工具实现:官方 Python MCP SDK
- 注册表元数据:`server.json`,使用 2025-12-11 架构
- 包注册表:PyPI
- 注册表所有权标记:此 README 的 `mcp-name` 评论
- 注册表命名空间:`io.github.Engr-FaizanAli/text-to-speech`
## 许可证
MIT。参见 [LICENSE](LICENSE)。