文本转语音服务

一个功能丰富的微软Edge文本转语音模型上下文协议服务器,支持300多种声音和50多种语言,无需API密钥和配置。

  • by CatVinci-Studio
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 CatVinci-Studio/better-tts-mcp

使用说明

更好的tts-mcp

英语 | 中文

用于Microsoft Edge文本到语音的功能丰富的MCP(模型上下文协议)服务器。 不需要API密钥。50多种语言的300多种声音。零配置。


特性

  • 列出声音 --浏览50多种语言的300多种声音,按语言和性别过滤
  • 文本转语音 --将文本转换为MP3,可自定义速率、音量和音高
  • 字幕 --在音频旁边生成SRT字幕文件
  • 批处理 --在一次通话中合成多条文本
  • 多语音合成 --在一个输出MP3中混合多个声音 [voice]text 标记物

快速开始

安装

# Using uvx (recommended)
uvx better-tts-mcp

# Or install via pip
pip install better-tts-mcp

克劳德代码

claude mcp add edge-tts -- uvx better-tts-mcp

克劳德桌面

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "edge-tts": {
      "command": "uvx",
      "args": ["better-tts-mcp"]
    }
  }
}

如果克劳德桌面找不到 uvx,它可能使用不同的 PATH 从您的终端。

运行:

which uvx

然后更换 "command": "uvx" 使用命令输出的绝对路径,例如:

{
  "mcpServers": {
    "edge-tts": {
      "command": "/Users/yourname/.local/bin/uvx",
      "args": ["better-tts-mcp"]
    }
  }
}

可用工具

list_voices

列出具有可选过滤功能的可用Edge TTS语音。

参数 类型 必填 说明
language string 否 按语言代码筛选,例如。 "zh", "en"
gender string 否 按性别筛选: "Male" 或 "Female"

text_to_speech

将文本转换为语音并另存为MP3。

参数 类型 必填 默认 说明
text string 是 -- 要转换的文本
voice string 否 zh-CN-XiaoxiaoNeural 语音名称
rate string 否 -- 速度,例如。 "+50%", "-30%"
volume string 否 -- 音量,例如。 "+20%", "-50%"
pitch string 否 -- 音高,例如。 "+10Hz", "-5Hz"
output_dir string 否 . (当前目录) 输出目录

text_to_speech_with_subtitles

参数与 text_to_speech。生成MP3和SRT文件。

batch_text_to_speech

将多个文本转换为语音,每个文本另存为单独的MP3文件。

参数 类型 必填 默认 说明
texts string[] 是 -- 要转换的文本列表
voice string 否 zh-CN-XiaoxiaoNeural 语音名称(所有文本共享)
rate string 否 -- 速度(共享)
volume string 否 -- 卷(共享)
pitch string 否 -- 音高(共享)
output_dir string 否 . (当前目录) 输出目录

text_to_speech_multi_voice

将带有语音标记的文本转换为一个合并的MP3文件。

格式示例:

[zh-CN-XiaoxiaoNeural]你好。[en-US-AriaNeural]Hello.
参数 类型 必填 默认 说明
text string 是 -- 输入可选文本 [voice] 标记
default_voice string 否 zh-CN-XiaoxiaoNeural 没有标记时使用的语音
rate string 否 -- 速度调节
volume string 否 -- 音量调节
pitch string 否 -- 音高调整
output_dir string 否 . (当前目录) 输出目录

MCP集成合同(适用于外部呼叫者)

此服务器遵循标准MCP客户端使用的MCP工具调用流程:

  • initialize ->能力谈判
  • tools/list ->发现工具名称和JSON模式
  • tools/call ->按名称和参数调用工具

运输:

  • 默认传输方式为 stdio (入口点: better-tts-mcp)

工具调用示例(tools/call)

{
  "method": "tools/call",
  "params": {
    "name": "text_to_speech",
    "arguments": {
      "text": "Hello from MCP",
      "voice": "en-US-AriaNeural",
      "rate": "+0%",
      "volume": "+0%",
      "pitch": "+0Hz",
      "output_dir": "./outputs"
    }
  }
}

典型成功结果文本:

Audio saved to: /absolute/path/to/outputs/20260307_123456_Hello_from_MCP.mp3

返回值约定

  • 所有工具都返回人类可读的文本 content.
  • 所有工具也返回机器可读 structuredContent 有稳定的田地(ok, message等)以实现稳健的LLM/工具集成。
  • 合成工具返回的路径是绝对路径。
  • text_to_speech_with_subtitles 返回两行(音频路径+字幕路径)。
  • batch_text_to_speech 返回摘要标头以及每个项目的一个输出路径。

错误行为

  • 格式错误的请求(JSON-RPC或模式级别)是协议错误。
  • 输入验证和业务/运行时失败将作为工具执行错误返回 isError: true,因此LLM客户端可以自我更正并重试。
  • 错误有效载荷包括 error_code, error_message,以及 retryable 在 structuredContent.

常见错误代码:

  • EMPTY_TEXT
  • EMPTY_TEXTS
  • EMPTY_TEXT_ITEM
  • EMPTY_TEXT_SEGMENTS
  • INVALID_RATE
  • INVALID_VOLUME
  • INVALID_PITCH
  • SYNTHESIS_FAILED

API消费者稳定性说明

  • 工具名称被视为稳定的API表面:
    • list_voices
    • text_to_speech
    • text_to_speech_with_subtitles
    • batch_text_to_speech
    • text_to_speech_multi_voice
  • 在未来的版本中,可以添加新的可选参数,而不会中断现有的调用者。

需求

  • Python>=3.10
  • 互联网连接(用于访问Microsoft Edge TTS服务)

许可证

麻省理工学院