首页
/ 如何把 TTS 服务作为 Mary-TTS 兼容 HTTP 后端接入现有语音工具?

如何把 TTS 服务作为 Mary-TTS 兼容 HTTP 后端接入现有语音工具?

2026-09-09 12:04:01作者:丁柯新Fawn

如果你的屏幕阅读器、智能家居 HUB 或语音助手已经通过 HTTP 调用 Mary-TTS 接口,现在想换成更自然的神经语音,又不想改工具端的代码,可以把 TTS(Coqui TTS)作为 drop-in 替换:它的内置 demo server 带有一个 Mary-TTS 兼容层,实现了兼容工具通常依赖的三个核心端点 /locales/voices/process。这篇文章覆盖从安装、启动服务到逐端点验证的完整操作路径。前提是你已经装好 TTS,并能拿到一个 TTS 模型(官方发布的模型或自己训练的 checkpoint)。

Mary-TTS 兼容层实现了哪些端点

TTS 服务器不需要实现 Mary-TTS 的全部接口,Mary-TTS 兼容层文档指出兼容工具一般只需要以下三个端点:

  • /locales(GET):返回支持的语言列表,格式为 [locale]\n...,例如 en_USde_DEen
  • /voices(GET):返回音色列表,格式为 [name] [locale] [gender]\n...name 不能含空格,gender 传统上是 fm
  • /process?INPUT_TEXT=[my text]&INPUT_TYPE=TEXT&LOCALE=[locale]&VOICE=[name]&OUTPUT_TYPE=AUDIO&AUDIO=WAVE_FILE(GET/POST):处理输入文本并返回 wav 文件。INPUT_TYPEOUTPUT_TYPEAUDIO 还有其它取值,但兼容工具中通常写死。

准备与安装

安装方式见 安装文档,推理场景推荐 pip 安装:

pip install TTS

该文档给出的 Python 支持范围是 >=3.7 <3.11.0,而 setup.py 中实际声明的是 python_requires=">=3.9.0, <3.12",两处范围不一致,建议以 setup.py 声明的新环境为准。从源码安装(git clonemake system-depsmake install)的说明同样在 安装文档 中。

安装通过 pip 完成后,可以直接使用终端命令 tts-server(由 setup.py 中的 console_scripts 入口点 tts-server = TTS.server.server:main 注册);如果是在源码目录里工作,则直接运行 server 入口脚本

启动服务并绑定 Mary-TTS 端口

先用 --list_models 列出官方发布的 TTS 与 vocoder 模型,再按格式 <language>/<dataset>/<model_name> 选择(来自 server README):

python TTS/server/server.py --list_models

服务器端口的默认值是 5002server.py--port 参数默认值)。而经典 Mary-TTS 服务运行在 59125 端口,已有工具如果按 Mary-TTS 习惯配置了地址,就要在启动时显式把端口改过去:

python TTS/server/server.py \
  --model_name tts_models/en/ljspeech/tacotron2-DCA \
  --vocoder_name vocoder_models/en/ljspeech/multiband-melgan \
  --port 59125

如果不传 --model_name,服务会使用默认模型 tts_models/en/ljspeech/tacotron2-DDC。在有 GPU 的机器上,按 server README 的方式启用 CUDA:

CUDA_VISIBLE_DEVICES="0" python TTS/server/server.py \
  --model_name tts_models/en/ljspeech/tacotron2-DCA \
  --vocoder_name vocoder_models/en/ljspeech/multiband-melgan \
  --use_cuda True \
  --port 59125

服务启动后监听 host="::"(即全部网卡地址),局域网内的工具也能访问;--debug 可开启 Flask 调试模式,仅建议本地开发时使用。

可选分支:用自己的训练模型。server README 给出了用 checkpoint 启动的例子(--tts_checkpoint--tts_config--vocoder_checkpoint--vocoder_config),但当前 server.py 的 argparse 实际定义的是 --model_path--config_path--vocoder_path--vocoder_config_path 以及 --speakers_file_path(多说话人模型用)。两处参数名不一致,以 server.py 中实际存在的参数为准:

python TTS/server/server.py \
  --model_path /path/to/tts/model.pth \
  --config_path /path/to/tts/config.json \
  --vocoder_path /path/to/vocoder/model.pth \
  --vocoder_config_path /path/to/vocoder/config.json \
  --port 59125

其中 /path/to/... 替换为你自己的模型 checkpoint 与 config 文件路径。

逐个端点验证兼容层

服务在 localhost:59125 运行时,用 Mary-TTS 兼容层文档给出的 CURL 请求逐一测试。也可以把同样 URL 输入浏览器查看结果。

  1. 检查语言端点:
curl http://localhost:59125/locales

文档示例返回当前激活模型的 locale,如 en

  1. 检查音色端点:
curl http://localhost:59125/voices

文档示例返回 glow-tts en u:名字取自模型名,locale 取自 --model_name 的语言段,gender 固定为 u(undefined,见下文限制)。

  1. 检查合成端点,生成一个 wav 文件:
curl http://localhost:59125/process?INPUT_TEXT=this+is+a+test > test.wav

返回结果是一个可直接播放的 wav 文件(server.py 中以 mimetype="audio/wav" 发送)。/process 同时支持 POST,请求体按表单参数解析,工具端无论发 GET 还是 POST 都能命中该端点。

三个端点都按预期返回,即可把现有工具里 Mary-TTS 服务的地址指向 http://<服务器地址>:59125

限制与边界

Mary-TTS 兼容层文档明确说明了这套实现是“可接受的妥协”,接入前需要知道:

  • 同一时间只有一个活跃模型:/locales/voices 只返回当前 --model_name 对应的 locale 和模型名(模型名会被当作 "voice"),而不是所有可用选项;
  • /process 只读取 INPUT_TEXT 参数,LOCALEVOICEINPUT_TYPEOUTPUT_TYPEAUDIO 等参数会被忽略,输出始终是 WAV 文件;
  • Coqui 模型没有定义 gender,/voices 中的 gender 恒为 u
  • 文档提到 API 未来可能扩展为同时支持多语言和多音色,当前版本不这样做。如果你的工具依赖按 LOCALE/VOICE 参数切换音色,这个兼容层无法满足。

更多端点细节以及 Mary-TTS 完整 API 的官方文档入口,参见 docs/source/marytts.md;服务器页面与配置示例见 TTS/server/README.mdconf.json

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.14 K
2.76 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
860
1.35 K
docsdocs
暂无描述
Markdown
899
5.83 K
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
925
1.85 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.84 K
1.02 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
533
601
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
1.03 K
525
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.37 K
1.46 K
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
548
395