MeloTTS:一句话切换语言时也不会磕绊的模型
在一句原本流畅的中文中间插入一个英文品牌名,大多数 TTS 模型要么会把英文单词念得面目全非,要么会在它前后强行停顿,听起来很不自然。MeloTTS 由 MIT 与 MyShell.ai 联合开发,正是为处理这种情况而打造——它的中文声音模型能自然朗读中英文混合文本,像真正的双语使用者一样在句子中途切换发音,而不是把这种现象当成需要绕开的边缘情况。
什么是 MeloTTS?
MeloTTS 是一个采用 MIT 许可证的开源多语言文字转语音库,以 VITS 和 VITS2 架构为基础,并加入基于 BERT 的语言特征,以更自然地捕捉韵律和措辞节奏。它覆盖英语、西班牙语、法语、中文、日语和韩语;对于这样规模的项目尤其值得注意的是,它还提供五种不同的英语口音变体:美式、英式、印度式、澳大利亚式以及通用默认口音。这些变体都来自同一个底层项目,无需为每种口音分别使用不同模型。
基于 BERT 的语言特征提取不只是一条技术注脚,理解它很有价值:MeloTTS 并非完全依赖基于规则的音素转换器把文本转为发音单元,而是从 BERT 风格的模型中引入上下文语言理解。这也是它的韵律和措辞节奏往往比仅依赖简单字素到音素转换的 TTS 系统更自然的部分原因。
原生中英语码转换
这是 MeloTTS 最鲜明的能力,也解决了一个确实常见、确实令人困扰的问题。双语或混合语码内容——例如中文句子里出现英文产品名、技术术语或引用短语——很容易难住大多数 TTS 系统。这些系统通常希望输入始终使用同一种语言,要么把外语片段读错,要么要求你拆成多次生成。MeloTTS 的中文说话人模型能直接处理混合中英文文本,在同一句话、同一次生成中自然切换发音,无需你手动添加语言标签或拆分文本。
CPU 实时性能
如果你比较过这一领域的方案,还会遇到另外几款值得了解的轻量模型;与它们相似,MeloTTS 也能只靠 CPU 舒适运行——项目自己的文档明确说明,CPU 足以进行实时推理,而 GPU 支持(cuda、cuda:0,或 Apple Silicon 上的 mps)只是可选加速手段,并非必要条件。对于希望获得多语言覆盖、又不想部署 GPU 基础设施的团队而言,这让 MeloTTS 成为真正可行的替代方案。不过值得注意的是,与 Piper 这类用多语言广度换取极致轻量、面向资源受限边缘硬件的模型相比,MeloTTS 更看重更广泛的语言和口音覆盖,而不是把体积压到绝对最小。
MeloTTS 入门
- 克隆仓库并安装依赖。 从 GitHub
git clonemyshell-ai/MeloTTS项目,按照文档中的安装步骤完成配置,再运行任何推理代码。 - 使用简洁的 Python API 完成基础生成。 先执行
from melo.api import TTS,再用语言代码(EN、ES、FR、ZH、JP、KR,或较新的EN_NEWEST变体)和设备设置(cpu、cuda、cuda:0、mps,或者用auto让它自动选择)进行实例化。 - 如有需要,选择具体的英语口音。 MeloTTS 分别提供美式、英式、印度式和澳大利亚式英语变体,因此应选择与目标受众相符的一种,而不是直接使用通用英语模型。
- 根据内容调整速度参数。 生成速度可以在 API 调用中直接调节,便于让旁白节奏配合视频时长或个人偏好,无需额外的后期处理步骤。
- 使用社区贡献的 WebUI 或 CLI 更快测试。 两者都是社区贡献者在核心库之上添加的工具,无需为每次实验都编写 Python 脚本,也能测试声音和语言。
- 如果目标语言不在原生支持范围内,查看地区版本和社区扩展版本。 社区分支已经把 MeloTTS 的方法扩展到一些具有特殊音系特征、原始音素转换器无法处理的语言;专门的越南语版本就是一例,越南语有六个声调。
获得更好效果的技巧
- 有意识地发挥混合语言能力。 如果内容本来就包含双语表达——产品名、技术术语、外语引用短语——就把它作为一个混合语言句子整体输入,而不是按语言拆成多次调用;这正是 MeloTTS 中文模型所针对的工作流。
- 一开始就为受众选对英语口音。 面向英国的项目选择英式英语,面向印度市场则选择印度式英语,通常会比默认使用偏美式的通用模型、再期待它听起来中性更贴合受众。
- 在认定需要 GPU 之前,先用实际目标硬件测试 CPU 推理。 既然项目明确以 CPU 实时运行为设计目标,就值得先在计划部署的机器上确认性能,再决定是否配置可能并不需要的 GPU 资源。
- 如果需要核心六种语言之外的语言,先查看社区分支。 与其强行让不受支持的语言通过 MeloTTS 默认音素转换器,不如搜索已有的社区扩展——其中有多个项目正是因为默认文本处理流水线无法直接正确处理每种语言的音系而出现。
- 如果英语内容以质量为先,使用较新的
EN_NEWEST变体。 英语专用版本的迭代发布(v2、v3)表明这个语言一直在单独优化——值得把它与原始EN模型实际对比,而不是假定两者可以互换。
MeloTTS 与其他 CPU 友好多语言模型的比较
| MeloTTS | Piper | Kokoro-82M | |
|---|---|---|---|
| 背后组织 | MIT + MyShell.ai | Rhasspy / Open Home Foundation | 独立开发者(hexgrad) |
| 核心语言 | 6 种(另有 5 种英语口音变体) | 35+ | 8 |
| 架构 | VITS/VITS2 + BERT 语言特征 | VITS + ONNX + espeak-ng | StyleTTS 2 + ISTFTNet |
| 混合语言(语码转换) | 支持,中文模型原生具备 | 不是专门功能 | 不是专门功能 |
| CPU 实时运行 | 支持 | 支持,包括 Raspberry Pi | 支持 |
| 声音克隆 | 不支持,固定声音阵容 | 不支持,固定声音阵容 | 不支持,固定声音阵容 |
| 许可证 | MIT | MIT(原项目)/ GPL-3.0(当前分支) | Apache 2.0 |
在对 CPU 友好、又不提供克隆功能的 TTS 方案中,MeloTTS 的特定定位,是在一个明确方向上以深度换广度:它支持的语言总数少于 Piper,但在已经支持的语言中提供了真正成熟的语言学处理——基于 BERT 的韵律和原生语码转换——尤其适合中英双语内容。
常见问题
MeloTTS 是谁开发的?
MeloTTS 由 MIT 与 MyShell.ai 联合开发,项目于 2023 年首次发布,此后一直在 GitHub 和 Hugging Face 上积极维护。
为什么 MeloTTS 特别适合中英文内容?
它的中文说话人模型原生支持中英文混合文本,能在同一句话、同一次生成中正确切换发音——大多数 TTS 系统如果不手动按语言拆分,就无法处理这种情况。
MeloTTS 需要 GPU 吗?
不需要。它明确为 CPU 实时推理而设计,GPU 只是可选的加速方式,并非必要条件。
MeloTTS 能克隆某个特定人物的声音吗?
不能。它使用按语言和口音划分的一组固定说话人声音,而不是根据参考音频进行零样本声音克隆。
MeloTTS 可以免费用于商业用途吗?
可以。它采用 MIT 许可证,允许免费用于商业和非商业用途。
在浏览器中把文字转换为语音
如果你希望完成相近的“文字 → 单人语音”流程,可以使用 Echora 的文字转语音。输入最多 5,000 个字符,选择内置音色或已保存的自定义音色,按需添加支持的表达标签并调整语音稳定度,然后试听结果并下载生成的 MP3。