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