Muyan-TTS:沐言智语发布的开源、可训练的TTS模型,专为播客而设计
Muyan-TTS是什么?
Muyan-TTS 是一由北京沐言智语发布的开源、可训练的TTS模型,专为播客而设计,预算控制在 5 万美元以内。Muyan-TTS用超过 100,000 小时的播客音频数据进行预训练,支持零样本 TTS 合成,能够生成高质量语音,还支持通过几十分钟的目标语音进行说话人自适应调整。
Muyan-TTS模型特点
大规模预训练:Muyan-TTS 基于 Llama-3.2-3B 模型,使用超过 10 万小时的播客音频数据进行预训练,能够实现零样本文本到语音ai合成,生成高质量的语音。
支持说话人适应:通过几十分钟的目标说话人语音数据,Muyan-TTS 可以进一步适应特定说话人的声音特征,从而实现高度定制化的语音合成。
架构设计:Muyan-TTS 采用 GPT-SoVITS 的两阶段结构,语言模型部分以 Llama-3.2-3B 为 backbone 继续预训练,解码器部分使用 SoVITS 架构,结合了 LLM 的语义建模能力和 VITS 模型的音素到音素(G2P)特性,有效减少了幻觉现象。
数据处理:构建了包含超过 100,000 小时高质量语音和对应转录的并行语料库,适用于播客等长音频场景的 TTS 训练。
开源与训练
开源信息:Muyan-TTS 完全开源,提供了完整的数据收集和处理流程、详细的训练方法以及优化的推理框架。其代码和模型可在 GitHub 上找到。
训练成本:在训练成本方面,假设 A10 和 A100 GPU 的租赁价格分别为每小时 0.5 美元和 1 美元,Muyan-TTS 的总训练成本约为 50,540 美元。
性能表现
零样本合成:在 LibriSpeech 数据集上,Muyan-TTS 的零样本合成性能表现出色,其词错误率仅次于 CosyVoice2,且平均意见得分高于 Spark-TTS 和 GPT-SoVITS v3。
监督微调模型:经过监督微调的 Muyan-TTS-SFT 在语音质量和说话人相似度上优于基础模型,但在 WER 上略有下降。
推理速度:Muyan-TTS 的推理速度在所有测试模型中最快,仅需 0.33 秒即可合成 1 秒的语音,适合实时语音生成场景。
Muyan-TTS应用场景
Muyan-TTS 适用于多种音频内容形式,比如主持人旁白、访谈复刻、语音摘要等。兼顾合成质量、个性化能力和运行效率,适合播客等长音频场景。
限制
依赖于解码器中的 G2P 模块,需要完整的音素序列才能进行合成,无法实现流式推理。
训练数据主要为英语,多语言语音合成能力有限。
由于训练语料中缺乏指令级标注,Muyan-TTS 目前不支持指令跟随 TTS 任务。
Muyan-TTS安装与使用
安装步骤
1. 克隆仓库并创建虚拟环境:
git clone https://github.com/MYZY-AI/Muyan-TTS.git cd Muyan-TTS conda create -n muyan-tts python=3.10 -y conda activate muyan-tts make build
2. 安装 FFmpeg(Ubuntu 系统):
sudo apt update sudo apt install ffmpeg
3. 下载模型:
Muyan-TTS 和 Muyan-TTS-SFT 模型可从 Hugging Face 或 ModelScope 下载。
还需要下载 chinese-hubert-base 的权重。
将所有下载的模型放在 pretrained_models 目录下。
使用方法
运行以下命令进行语音合成:
python tts.py
核心推理代码如下:
async def main(model_type, model_path): tts = Inference(model_type, model_path, enable_vllm_acc=False) wavs = await tts.generate( ref_wav_path="assets/Claire.wav", prompt_text="Although the campaign was not a complete success, it did provide Napoleon with valuable experience and prestige.", text="Welcome to the captivating world of podcasts, let's embark on this exciting journey together." ) output_path = "logs/tts.wav" with open(output_path, "wb") as f: f.write(next(wavs)) print(f"Speech generated in {output_path}")
github仓库:https://github.com/MYZY-AI/Muyan-TTS