MeloTTS完整指南:20分钟从零到六语种实时语音合成
【免费下载链接】MeloTTSHigh-quality multi-lingual text-to-speech library by MyShell.ai. Support English, Spanish, French, Chinese, Japanese and Korean.项目地址: https://gitcode.com/GitHub_Trending/me/MeloTTS
MeloTTS 是 MyShell.ai 开源的多语种文本转语音(text-to-speech)库,支持中文、日语、韩语、西班牙语、法语以及 5 种英语口音,纯 CPU 即可实时推理。它解决的是个人和小团队"多语种配音需要东拼西凑多个服务"的痛点。
第一次跑通:裸机到出声只需 3 步
环境卡住了?MeloTTS 的依赖链看着长(requirements.txt 里有 20 多个包),但真正要动手的只有两步:装依赖、下日语词典。
步骤1:克隆并安装依赖
📋官方验证过的环境
| 项 | 推荐值 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 20.04 | 官方在此环境开发测试 |
| Python | 3.9 | 与官方测试版本一致 |
| 硬件 | CPU 即可 | 官方确认 CPU 能实时推理,GPU 非必需 |
克隆并安装,安装脚本会自动进入可编辑模式:
# 克隆仓库 git clone https://gitcode.com/GitHub_Trending/me/MeloTTS cd MeloTTS# 安装依赖 + 下载日语 MeCab 词典(unidic) pip install -e . python -m unidic download💡知识卡片:setup.py 在安装钩子里已经带了一步unidic download,如果你用的是国内网络源,建议手动补跑一次词典下载,避免 WebUI 启动时弹提醒。
✅ 验证一下核心模块能正常导入:
python -c "from melo.api import TTS; print('MeloTTS OK')"步骤2:用 CLI 合成第一条语音
第一次出声建议直接走命令行,比写 Python 快:
# 默认英文、默认音色,合成到 output.wav melo "Text to read" output.wav✅ 验证:确认当前目录生成了output.wav且能正常播放。CLI 完整参数用melo --help查看。
步骤3(可选):Windows/macOS 卡壳时切 Docker
⚠️避坑警示:macOS 和 Windows 上 mecab、gruut 这类含 C 扩展的依赖偶尔编译失败。别死磕,官方给出的绕法就是 Docker,几分钟的事。
# 构建镜像(需已安装 Docker) docker build -t melotts .# 启动并映射 8888 端口;有 GPU 可加 --gpus all docker run -it -p 8888:8888 melotts✅ 验证:浏览器打开http://localhost:8888,看到 WebUI 界面即环境就绪。
4 个高频合成场景与最小代码
跑通之后,下面这 4 个场景覆盖了日常 90% 的需求。
英文多口音切换:1 个模型 5 种说话人
英语模型内置 5 个说话人,同一段文本换个 speaker 就是不同口音:
| Speaker ID | 口音 |
|---|---|
| EN-Default | 默认 |
| EN-US | 美式 |
| EN-BR | 英式 |
| EN_INDIA | 印度口音 |
| EN-AU | 澳式 |
# 同一句话合成美式和英式两种口音 from melo.api import TTS model = TTS(language='EN', device='auto') spk = model.hps.data.spk2id model.tts_to_file("Did you ever hear a folk tale?", spk['EN-US'], 'en-us.wav') model.tts_to_file("Did you ever hear a folk tale?", spk['EN-BR'], 'en-br.wav')中英混读:不用切换语种
💡知识卡片:中文模型实际加载的是ZH_MIX_EN模型(见 melo/api.py),所以中文句子里夹英文单词能直接自然读出来,不用先分词再切换。
# 中英混合文本一次合成 from melo.api import TTS model = TTS(language='ZH', device='cpu') spk = model.hps.data.spk2id model.tts_to_file("我最近在学习 machine learning", spk['ZH'], 'zh.wav')WebUI:无代码出六语种
不想写代码?一条命令拉起 Gradio 界面,语言、音色、语速全在页面上点选:
# 启动 WebUI(六个语种模型会在启动时加载) melo-ui界面里语速滑杆范围是 0.1~10.0,默认 1.0。启动稍慢属正常——它一次加载全部 6 个语种的模型。
从文件批量读 + 指定语速
长文直接喂文件,避免转义引号的问题:
# 从文件读文本,指定中文和 1.5 倍速 melo file.txt out.wav --file -l ZH -s 1.5⚠️避坑警示:--file忘加的话,CLI 会把file.txt当成要朗读的字符串文本,合成出一句"file dot txt"。
调优前必知的 3 类关键参数
合成效果不满意时,先动下面这几个参数,比改模型快得多。
参数速查表
| 参数 | 取值/选项 | 作用 |
|---|---|---|
| device | auto / cpu / cuda / mps | auto 有 GPU 用 GPU,没有自动落回 CPU |
| speed | 0.1 ~ 10.0 | 语速倍率,内部换算为 length_scale=1/speed |
| sdp_ratio | 0~1,默认 0.2 | 声音表现力,调高更灵动但可能不稳 |
| noise_scale | 默认 0.6 | 噪声注入量,越大越自然 |
| noise_scale_w | 默认 0.8 | 音高维度的噪声,影响抑扬顿挫 |
自定义参数写进去
上面五个参数里除 device 外,其余都在tts_to_file的调用里直接传:
# 显式指定音质参数合成 model.tts_to_file(text, spk_id, 'out.wav', sdp_ratio=0.2, noise_scale=0.6, noise_scale_w=0.8, speed=1.0)💡知识卡片:批量出片时先别动参数——默认值就是调校过的平衡点,听完再针对具体语种微调,改一个参数听一遍,别一次全改。
避坑手册:按现象排查
❌ WebUI 启动时提示缺少 unidic
执行一次 `python -m unidic download` 即可。❌ 首次合成卡顿/下载慢
模型是首次 `TTS(language=...)` 时自动下载并本地缓存的(见 [melo/download_utils.py](https://link.gitcode.com/i/a882f8cb2f79a760029ff9670fe8d442)),耐心等第一次,之后就走缓存。❌ 非英语语种传 speaker 无效
speaker 参数只对 `language='EN'` 生效,其他语种自动取模型默认说话人([melo/main.py](https://link.gitcode.com/i/a6228cfb871bc9528a6bd777844a4650) 中有此逻辑)。❌ CLI 读文件提示 FileNotFoundError
确认加了 `--file` 标志,且路径真实存在。❌ macOS/Windows 装依赖反复失败
换 Docker 方案:`docker build -t melotts .` 后 `docker run -it -p 8888:8888 melotts`。❌ 想训自己的音色/语种
走 [docs/training.md](https://link.gitcode.com/i/bf54e98f6aad607e4136d05cfacadc92):准备 44100Hz 音频和 `metadata.list` → `python preprocess_text.py --metadata ...` → `bash train.sh `。❌ 训练时显存不足(CUDA OOM)
编辑预处理生成的 `config.json`,调小 batch size 再重启训练。更多安装细节和全部 API 示例见 docs/install.md,免安装在线体验入口在 docs/quick_use.md。
【免费下载链接】MeloTTSHigh-quality multi-lingual text-to-speech library by MyShell.ai. Support English, Spanish, French, Chinese, Japanese and Korean.项目地址: https://gitcode.com/GitHub_Trending/me/MeloTTS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考