综合介绍
Muyan-TTS 是一个专为播客场景设计的开源文本转语音(TTS)模型。它通过超过10万小时的播客音频数据预训练,支持零样本语音合成,生成高质量的自然语音。模型基于 Llama-3.2-3B 构建,结合 SoVITS 解码器,提供高效的语音生成能力。Muyan-TTS 还支持通过几十分钟的单人语音数据进行个性化语音定制,适合特定音色的需求。项目以 Apache 2.0 许可证发布,提供完整训练代码、数据处理流程和模型权重,托管在 GitHub、Hugging Face 和 ModelScope 上,鼓励开发者二次开发和社区贡献。
功能列表
- 零样本语音合成:无需额外训练即可生成高质量播客风格语音,适应多种音色输入。
- 个性化语音定制:通过几十分钟单人语音数据微调,生成特定 speaker 的语音。
- 高效推理速度:单块 NVIDIA A100 GPU 上每秒音频生成约0.33秒,优于多种开源 TTS 模型。
- 开源训练代码:提供从基础模型到微调模型的完整训练流程,支持开发者定制。
- 数据处理管道:集成 Whisper、FunASR 和 NISQA,清洗和转录播客音频数据。
- API 部署支持:提供 API 工具,方便集成到播客或其他语音应用中。
- 模型权重开放:Muyan-TTS 和 Muyan-TTS-SFT 模型权重可在 Hugging Face 和 ModelScope 下载。
使用帮助
安装流程
Muyan-TTS 的安装需要在 Linux 环境下完成,推荐使用 Ubuntu 系统。以下是详细步骤:
- 克隆仓库
打开终端,运行以下命令克隆 Muyan-TTS 仓库:git clone https://github.com/MYZY-AI/Muyan-TTS.git cd Muyan-TTS
- 创建虚拟环境
使用 Conda 创建 Python 3.10 的虚拟环境:conda create -n muyan-tts python=3.10 -y conda activate muyan-tts
- 安装依赖
运行以下命令安装项目依赖:make build
注意:需要安装 FFmpeg。在 Ubuntu 上可运行:
sudo apt update sudo apt install ffmpeg
- 下载预训练模型
从以下链接下载模型权重:- Muyan-TTS: Hugging Face, ModelScope
- Muyan-TTS-SFT: Hugging Face, ModelScope
- chinese-hubert-base: Hugging Face
将下载的模型文件放入pretrained_models
目录,目录结构如下:
pretrained_models ├── chinese-hubert-base ├── Muyan-TTS └── Muyan-TTS-SFT
- 验证安装
确保所有依赖和模型文件正确安装后,可进行推理或训练。
使用基础模型(零样本语音合成)
Muyan-TTS 的基础模型支持零样本语音合成,适合快速生成播客风格语音。操作步骤如下:
- 准备输入文本和参考音频
准备一段文本(text
)和参考语音(ref_wav_path
)。例如: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."
- 运行推理命令
使用以下命令生成语音,指定model_type
为base
: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}")
生成的语音保存在
logs/tts.wav
。 - 更换参考音频
零样本模式下,ref_wav_path
可替换为任意 speaker 的语音,模型会模仿其音色生成新语音。
使用 SFT 模型(个性化语音定制)
SFT 模型通过单人语音数据微调,适合生成特定音色。操作步骤如下:
- 准备训练数据
收集至少几十分钟的单人语音数据,保存为 WAV 格式。使用 LibriSpeech 的 dev-clean 数据集为例,可下载:wget --no-check-certificate https://www.openslr.org/resources/12/dev-clean.tar.gz
解压后,在
prepare_sft_dataset.py
中指定librispeech_dir
为解压路径。 - 生成训练数据
运行以下命令处理数据,生成data/tts_sft_data.json
:./train.sh
数据格式如下:
{ "file_name": "path/to/audio.wav", "text": "对应的文本内容" }
- 调整训练配置
编辑training/sft.yaml
,设置学习率、批次大小等参数。 - 开始训练
train.sh
会自动执行以下命令启动训练:llamafactory-cli train training/sft.yaml
训练完成后,模型权重保存在
pretrained_models/Muyan-TTS-new-SFT
。 - 复制 SoVITS 权重
将基础模型的sovits.pth
复制到新模型目录:cp pretrained_models/Muyan-TTS/sovits.pth pretrained_models/Muyan-TTS-new-SFT
- 运行推理
使用 SFT 模型生成语音,需保持ref_wav_path
和训练时使用的 speaker 一致:python tts.py --model_type sft
通过 API 部署
Muyan-TTS 支持 API 部署,方便集成到应用。操作步骤如下:
- 启动 API 服务
运行以下命令启动服务,默认端口为 8020:python api.py --model_type base
服务日志保存在
logs/llm.log
。 - 发送请求
使用以下 Python 代码发送请求:import requests payload = { "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.", "temperature": 0.6, "speed": 1.0, } url = "http://localhost:8020/get_tts" response = requests.post(url, json=payload) with open("logs/tts.wav", "wb") as f: f.write(response.content)
注意事项
- 硬件要求:推理推荐使用 NVIDIA A100(40GB)或同等性能 GPU。
- 语言限制:因训练数据以英语为主,当前仅支持英语输入。
- 数据质量:SFT 模型的语音质量依赖训练数据的清晰度和一致性。
- 训练成本:预训练总成本约5万美元,包括数据处理(3万美元)、LLM 预训练(1.92万美元)和解码器训练(0.134万美元)。
应用场景
- 播客内容创作
Muyan-TTS 可将播客脚本快速转为自然语音,适合独立创作者生成高质量音频。用户只需输入文本和参考语音,即可生成播客风格语音,降低录音成本。 - 有声书制作
通过 SFT 模型,创作者可定制特定角色的语音,生成有声书章节。模型支持长音频生成,适合长篇内容。 - 语音助手开发
开发者可通过 API 将 Muyan-TTS 集成到语音助手,提供自然且个性化的语音交互体验。 - 教育内容生成
学校或培训机构可将教学材料转为语音,生成听力练习或课程讲解音频,适合语言学习或视障人士使用。
QA
- Muyan-TTS 支持哪些语言?
当前仅支持英语,因训练数据以英语播客音频为主。未来可通过扩展数据集支持其他语言。 - 如何提高 SFT 模型的语音质量?
使用高质量、清晰的单人语音数据,避免背景噪音。确保训练数据与目标场景的语音风格一致。 - 推理速度慢怎么办?
确保使用支持 vLLM 加速的 GPU 环境。通过nvidia-smi
检查显存使用情况,确认模型正确加载到 GPU。 - 是否支持商业用途?
Muyan-TTS 以 Apache 2.0 许可证发布,支持商业用途,但需遵守许可证条款。 - 如何获取技术支持?
可通过 GitHub 提交问题(Issues)或加入 Discord 社区(Discord)获取支持。