AI个人学习
和实操指南
TRAE

Muyan-TTS:个性化播客语音训练与合成

综合介绍

Muyan-TTS 是一个专为播客场景设计的开源文本转语音(TTS)模型。它通过超过10万小时的播客音频数据预训练,支持零样本语音合成,生成高质量的自然语音。模型基于 Llama-3.2-3B 构建,结合 SoVITS 解码器,提供高效的语音生成能力。Muyan-TTS 还支持通过几十分钟的单人语音数据进行个性化语音定制,适合特定音色的需求。项目以 Apache 2.0 许可证发布,提供完整训练代码、数据处理流程和模型权重,托管在 GitHub、Hugging Face 和 ModelScope 上,鼓励开发者二次开发和社区贡献。

Muyan-TTS:高质量播客语音合成开源工具-1


 

功能列表

  • 零样本语音合成:无需额外训练即可生成高质量播客风格语音,适应多种音色输入。
  • 个性化语音定制:通过几十分钟单人语音数据微调,生成特定 speaker 的语音。
  • 高效推理速度:单块 NVIDIA A100 GPU 上每秒音频生成约0.33秒,优于多种开源 TTS 模型。
  • 开源训练代码:提供从基础模型到微调模型的完整训练流程,支持开发者定制。
  • 数据处理管道:集成 Whisper、FunASR 和 NISQA,清洗和转录播客音频数据。
  • API 部署支持:提供 API 工具,方便集成到播客或其他语音应用中。
  • 模型权重开放:Muyan-TTS 和 Muyan-TTS-SFT 模型权重可在 Hugging Face 和 ModelScope 下载。

 

使用帮助

安装流程

Muyan-TTS 的安装需要在 Linux 环境下完成,推荐使用 Ubuntu 系统。以下是详细步骤:

  1. 克隆仓库
    打开终端,运行以下命令克隆 Muyan-TTS 仓库:

    git clone https://github.com/MYZY-AI/Muyan-TTS.git
    cd Muyan-TTS
  1. 创建虚拟环境
    使用 Conda 创建 Python 3.10 的虚拟环境:

    conda create -n muyan-tts python=3.10 -y
    conda activate muyan-tts
    
  2. 安装依赖
    运行以下命令安装项目依赖:

    make build
    

    注意:需要安装 FFmpeg。在 Ubuntu 上可运行:

    sudo apt update
    sudo apt install ffmpeg
    
  3. 下载预训练模型
    从以下链接下载模型权重:

    pretrained_models
    ├── chinese-hubert-base
    ├── Muyan-TTS
    └── Muyan-TTS-SFT
    
  4. 验证安装
    确保所有依赖和模型文件正确安装后,可进行推理或训练。

使用基础模型(零样本语音合成)

Muyan-TTS 的基础模型支持零样本语音合成,适合快速生成播客风格语音。操作步骤如下:

  1. 准备输入文本和参考音频
    准备一段文本(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."
    
  2. 运行推理命令
    使用以下命令生成语音,指定 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

  3. 更换参考音频
    零样本模式下,ref_wav_path 可替换为任意 speaker 的语音,模型会模仿其音色生成新语音。

使用 SFT 模型(个性化语音定制)

SFT 模型通过单人语音数据微调,适合生成特定音色。操作步骤如下:

  1. 准备训练数据
    收集至少几十分钟的单人语音数据,保存为 WAV 格式。使用 LibriSpeech 的 dev-clean 数据集为例,可下载:

    wget --no-check-certificate https://www.openslr.org/resources/12/dev-clean.tar.gz
    

    解压后,在 prepare_sft_dataset.py 中指定 librispeech_dir 为解压路径。

  2. 生成训练数据
    运行以下命令处理数据,生成 data/tts_sft_data.json

    ./train.sh
    

    数据格式如下:

    {
    "file_name": "path/to/audio.wav",
    "text": "对应的文本内容"
    }
    
  3. 调整训练配置
    编辑 training/sft.yaml,设置学习率、批次大小等参数。
  4. 开始训练
    train.sh 会自动执行以下命令启动训练:

    llamafactory-cli train training/sft.yaml
    

    训练完成后,模型权重保存在 pretrained_models/Muyan-TTS-new-SFT

  5. 复制 SoVITS 权重
    将基础模型的 sovits.pth 复制到新模型目录:

    cp pretrained_models/Muyan-TTS/sovits.pth pretrained_models/Muyan-TTS-new-SFT
    
  6. 运行推理
    使用 SFT 模型生成语音,需保持 ref_wav_path 和训练时使用的 speaker 一致:

    python tts.py --model_type sft
    

通过 API 部署

Muyan-TTS 支持 API 部署,方便集成到应用。操作步骤如下:

  1. 启动 API 服务
    运行以下命令启动服务,默认端口为 8020:

    python api.py --model_type base
    

    服务日志保存在 logs/llm.log

  2. 发送请求
    使用以下 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万美元)。

 

应用场景

  1. 播客内容创作
    Muyan-TTS 可将播客脚本快速转为自然语音,适合独立创作者生成高质量音频。用户只需输入文本和参考语音,即可生成播客风格语音,降低录音成本。
  2. 有声书制作
    通过 SFT 模型,创作者可定制特定角色的语音,生成有声书章节。模型支持长音频生成,适合长篇内容。
  3. 语音助手开发
    开发者可通过 API 将 Muyan-TTS 集成到语音助手,提供自然且个性化的语音交互体验。
  4. 教育内容生成
    学校或培训机构可将教学材料转为语音,生成听力练习或课程讲解音频,适合语言学习或视障人士使用。

 

QA

  1. Muyan-TTS 支持哪些语言?
    当前仅支持英语,因训练数据以英语播客音频为主。未来可通过扩展数据集支持其他语言。
  2. 如何提高 SFT 模型的语音质量?
    使用高质量、清晰的单人语音数据,避免背景噪音。确保训练数据与目标场景的语音风格一致。
  3. 推理速度慢怎么办?
    确保使用支持 vLLM 加速的 GPU 环境。通过 nvidia-smi 检查显存使用情况,确认模型正确加载到 GPU。
  4. 是否支持商业用途?
    Muyan-TTS 以 Apache 2.0 许可证发布,支持商业用途,但需遵守许可证条款。
  5. 如何获取技术支持?
    可通过 GitHub 提交问题(Issues)或加入 Discord 社区(Discord)获取支持。
未经允许不得转载:首席AI分享圈 » Muyan-TTS:个性化播客语音训练与合成
zh_CN简体中文