文本转语音服务器

Cheema Text-to-Voice是一款开源的MCP服务器,为AI助手提供本地化文本转语音功能,支持多语言和即时语音克隆,无需云服务或API密钥。

  • by MuhammadTayyabIlyas
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 MuhammadTayyabIlyas/CHeema-Text-to-Voice-MCP-Server

使用说明

Cheema文本转语音MCP服务器

Cheema Text-to-Voice是一个免费的开源MCP服务器,为任何兼容MCP的AI助手,包括Claude Desktop、Claude Code和n8n,提供真实的语音。它在您自己的CPU或GPU上本地运行NeuTTS文本到速度模型,因此没有API键可配置,循环中没有云服务,也没有每个角色的计费:文本进入,WAV文件出来,完全在您的机器上。让你的助手说话,它会用四种语言的五种内置语音合成自然语音,或者在几秒钟内从短录音中克隆出一个新的语音。


链接

由...建造 塔亚布·伊利亚斯巴塞罗那的AI代理工程师。


它能做什么?

只需让你的人工智能助手说话,它就会处理剩下的事情:

“用朱丽叶的声音用法语打招呼”

“将此段落转换为语音并将其另存为intro.wav”

“从这段录音中克隆我的声音,并用它来阅读我的文章”

特征:

  • 4种语言的5种内置语音:英语(jo,dave),德语(greta),法语(juliette),西班牙语(mateo)
  • 即时语音克隆 从3-15秒的WAV样本开始,在重启过程中持续存在
  • 5个MCP工具 (tts_help, tts_list_speakers, tts_list_models, tts_synthesize, tts_add_speaker)加上2个现成的提示模板
  • 3运输:stdio用于Claude Desktop和Claude Code,SSE和Streamable HTTP用于n8n和其他远程客户端
  • 可更换的NeuTTS骨干模型,包括较小的量化GGUF变体,可选CUDA加速
  • 100%本地:没有API密钥,没有云调用,没有每个角色的计费

快速开始

1.安装先决条件

你需要 Python 3.10+ 和 具体的:

# Ubuntu / Debian
sudo apt install espeak-ng

# macOS
brew install espeak-ng

# Windows
choco install espeak-ng

2.克隆和安装

git clone https://github.com/MuhammadTayyabIlyas/CHeema-Text-to-Voice-MCP-Server.git
cd CHeema-Text-to-Voice-MCP-Server

python -m venv venv
source venv/bin/activate        # Linux/macOS
# venv\Scripts\activate          # Windows

pip install -e .
pip install "mcp[cli]"

3.连接到您的AI助手

选择您的平台并按照以下步骤操作。


按平台设置

克劳德桌面版

将以下内容添加到您的配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "cheema-tts": {
      "command": "/full/path/to/CHeema-Text-to-Voice-MCP-Server/venv/bin/python",
      "args": ["/full/path/to/CHeema-Text-to-Voice-MCP-Server/mcp_server.py"],
      "env": {}
    }
  }
}

重新启动克劳德桌面。您将看到TTS工具出现在工具菜单中。

克劳德代码

claude mcp add cheema-tts -- /full/path/to/venv/bin/python /full/path/to/mcp_server.py

然后让克劳德在任何对话中生成语音。

n8n

以SSE模式启动服务器:

cd CHeema-Text-to-Voice-MCP-Server
source venv/bin/activate
python mcp_server.py --transport sse --host 127.0.0.1 --port 8000

在n8n工作流程中:

  1. 添加一个 AI 代理 节点与a MCP客户端工具
  2. 将连接类型设置为 上海证券交易所
  3. 输入URL: http://127.0.0.1:8000/sse
  4. 代理现在可以调用任何TTS工具

任何其他MCP客户端

使用您偏好的传输方式启动服务器:

# SSE (for web platforms and remote clients)
python mcp_server.py --transport sse --host 0.0.0.0 --port 8000

# Streamable HTTP
python mcp_server.py --transport streamable-http --host 0.0.0.0 --port 8000

将您的MCP客户端连接到:

  • 上海证券交易所: http://<your-host>:8000/sse
  • 超文本传输协议: http://<your-host>:8000/mcp

可用声音

语音 语言 描述
乔 英语 默认:清晰自然的女声
戴夫 英语 男声
格蕾塔 德语 德国女声
朱丽叶 法语 法国女声
马修 西班牙语 西班牙男声

使用 tts_list_speakers 查看所有声音,包括您添加的任何自定义声音。


语音克隆

从短音频样本中克隆任何语音:

  1. 录制或查找WAV文件:3到15秒的干净演讲
  2. 了解成绩单:录音中说出的确切单词
  3. 问你的AI助手:

“在/path/to/recording.wav中添加一个名为'alex'的新发言人,并附上文字记录‘这是我在录音中说的话’”

或者直接调用该工具:

tts_add_speaker(name="alex", wav_path="/path/to/recording.wav", ref_text="This is what I said in the recording")

自定义语音将永久保存,并在重新启动时可用。

最佳效果提示:

  • 单声道音频,16-44kHz采样率
  • 3-15秒连续自然语音
  • 最小背景噪声

可用工具

工具 它做什么
tts_help 显示完整的使用指南和示例(从这里开始)
tts_synthesize 将文本转换为语音,保存WAV文件
tts_list_speakers 列出所有可用的声音
tts_list_models 显示活动模型和备选方案
tts_add_speaker 从音频样本中克隆新语音

tts_synthese参数

参数 必填 默认 说明
text 是 无 要转换为语音的文本
speaker 没有 "jo" 使用哪种声音
output_filename 否 自动生成 WAV输出的自定义文件名

MCP提示(模板)

提示 描述
quick_speech 快速语音生成:只需提供文本和可选扬声器
voice_clone_guide 添加新语音的分步演练

这些内容会自动出现在Claude Desktop的提示选择器中。


模型

默认模型(neutts-nano)在CPU上运行良好。较大的模型可以产生更高的质量,但需要更多的资源。

型号 语言 尺寸 备注
neuphonic/neutts-nano 英语 ~229M 默认:速度快,质量好
neuphonic/neutts-air 英语 ~552M 质量更高,速度更慢
neuphonic/neutts-nano-german 德语 ~229M 德语
neuphonic/neutts-nano-french 法语 ~2.29亿 法语
neuphonic/neutts-nano-spanish 西班牙语 ~229M 西班牙语
neuphonic/neutts-*-q4-gguf 变化 更小 量化:更快,内存更少
neuphonic/neutts-*-q8-gguf 变化 中等 量化:平衡

使用环境变量切换模型:

NEUTTS_BACKBONE="neuphonic/neutts-air" python mcp_server.py

配置

所有设置都是可选的。默认值开箱即用。

变量 默认值 描述
NEUTTS_BACKBONE neuphonic/neutts-nano HuggingFace模型仓库
NEUTTS_BACKBONE_DEVICE cpu cpu 或 cuda GPU
NEUTTS_CODEC neuphonic/neucodec 音频编解码器型号
NEUTTS_CODEC_DEVICE cpu cpu 或 cuda GPU
NEUTTS_OUTPUT_DIR ./output WAV文件保存的位置
NEUTTS_SAMPLES_DIR ./samples 内置扬声器示例
NEUTTS_SPEAKERS_DIR ./speakers 自定义语音数据
NEUTTS_TRANSPORT stdio stdio, sse,或 streamable-http
NEUTTS_HOST 127.0.0.1 绑定地址(仅限SSE/HTTP)
NEUTTS_PORT 8000 绑定端口(仅限SSE/HTTP)

GPU加速

为了在NVIDIA GPU上实现更快的合成:

NEUTTS_BACKBONE_DEVICE=cuda NEUTTS_CODEC_DEVICE=cuda python mcp_server.py

需要支持CUDA的PyTorch。


作为服务运行

对于生产使用,创建一个systemd服务,使其自动启动:

# /etc/systemd/system/cheema-tts.service
[Unit]
Description=Cheema Text-to-Voice MCP Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/path/to/CHeema-Text-to-Voice-MCP-Server
ExecStart=/path/to/venv/bin/python mcp_server.py --transport sse --host 127.0.0.1 --port 8000
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now cheema-tts

要通过HTTPS公开它,请在前面放置一个Nginx或Caddy反向代理,并为SSE设置以下关键设置:

  • 禁用代理缓冲(proxy_buffering off)
  • 设置较长的读取超时时间(proxy_read_timeout 86400)
  • 添加 X-Accel-Buffering: no 头球

故障排除

服务器无法启动?

  • Esperanza检查: espeak-ng --version
  • 检查依赖关系: pip list | grep -E "mcp|neutts|torch|soundfile"

没有音频输出?

  • 检查 output/ WAV文件目录
  • 使用验证扬声器名称 tts_list_speakers

第一次跑慢?

  • 正常:第一次运行从HuggingFace下载模型权重(约200-500MB)。在那之后被缓存。

想要GPU加速?

  • 集 NEUTTS_BACKBONE_DEVICE=cuda 和 NEUTTS_CODEC_DEVICE=cuda

运作原理

  1. 服务器在启动时加载NeuTTS骨干模型和音频编解码器
  2. 扬声器声纹(.pt 文件)被加载到内存中
  3. 当您请求语音时,文本会被音素化并与说话者的语音参考相结合
  4. 该模型生成语音令牌,解码为24kHz波形
  5. 输出保存为标准WAV文件

项目结构

CHeema-Text-to-Voice-MCP-Server/
├── mcp_server.py       # MCP server entry point
├── neutts/             # NeuTTS engine
├── samples/            # Built-in speaker voices (.wav, .pt, .txt)
├── speakers/           # Custom cloned voices (auto-created)
├── output/             # Generated audio files (auto-created)
└── examples/           # Usage examples

学分


作者

塔亚布·伊利亚斯博士研究员兼EdTech创始人

为教育工作者和研究人员构建基于人工智能的工具。


许可证

MIT许可证。底层NeuTTS模型有自己的许可证。请参阅 NeuTTS存储库 了解详情。


Cheema Text-to-Voice MCP Server
Give your AI assistant a voice.