模型概述
模型特點
模型能力
使用案例
🚀 OuteTTS版本1.0
OuteTTS 1.0版本在語音合成和語音克隆方面帶來了顯著改進,以緊湊的規模提供了更強大、準確且用戶友好的體驗。
🚀 快速開始
安裝
👉 安裝說明
基礎用法
import outetts
# Initialize the interface
interface = outetts.Interface(
config=outetts.ModelConfig.auto_config(
model=outetts.Models.VERSION_1_0_SIZE_1B,
# For llama.cpp backend
backend=outetts.Backend.LLAMACPP,
quantization=outetts.LlamaCppQuantization.FP16
# For transformers backend
# backend=outetts.Backend.HF,
)
)
# Load the default speaker profile
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")
# Or create your own speaker profiles in seconds and reuse them instantly
# speaker = interface.create_speaker("path/to/audio.wav")
# interface.save_speaker(speaker, "speaker.json")
# speaker = interface.load_speaker("speaker.json")
# Generate speech
output = interface.generate(
config=outetts.GenerationConfig(
text="Hello, how are you doing?",
generation_type=outetts.GenerationType.CHUNKED,
speaker=speaker,
sampler_config=outetts.SamplerConfig(
temperature=0.4
),
)
)
# Save to file
output.save("output.wav")
更多配置選項
如需高級設置和自定義,請訪問官方倉庫:
👉 interface_usage.md
✨ 主要特性
1. 提示改進與依賴移除
- 自動單詞對齊:模型現在可在內部執行單詞對齊。只需輸入原始文本,無需預處理,模型會處理其餘操作,簡化工作流程。為獲得最佳效果,請使用規範化、易讀且無換行符的文本(outetts庫會自動進行輕度規範化)。
- 原生多語言文本支持:直接支持多種語言的原生文本,無需羅馬化。
- 增強元數據集成:更新後的提示系統在全局和單詞級別整合了額外的元數據(時間、能量、頻譜質心、音高),改善了說話者的流暢度和合成質量。
- 音頻碼本特殊令牌:新增了c1(碼本1)和c2(碼本2)的特殊令牌。
2. 新音頻編碼器模型
- DAC編碼器:集成了來自ibm-research/DAC.speech.v1.0的DAC音頻編碼器,利用兩個碼本進行高質量音頻重建。
- 性能權衡:提高音頻保真度使令牌生成速率從每秒75個提高到150個。這種權衡優先考慮了質量,特別是對於多語言應用。
3. 語音克隆
- 單樣本語音克隆:通常,模型只需約10秒的參考音頻即可實現準確的語音克隆。
- 提高準確性:新的編碼器和額外的訓練元數據使語音克隆更加自然和精確。
4. 自動文本對齊與數字支持
- 自動文本對齊:即使對於沒有明確邊界的語言(如日語、中文),模型也能根據預處理的訓練數據在單詞級別對齊原始文本。
- 直接數字輸入:內置的多語言數字支持允許在提示中直接使用數字,無需進行文本轉換(模型通常會選擇占主導地位的語言。在單個提示中混合使用多種語言可能會導致錯誤)。
5. 多語言能力
- 支持的語言:OuteTTS根據訓練數據的暴露程度,在多種語言上提供不同水平的熟練度。
- 高訓練數據語言:這些語言經過大量訓練:英語、阿拉伯語、中文、荷蘭語、法語、德語、意大利語、日語、韓語、立陶宛語、俄語、西班牙語。
- 中等訓練數據語言:這些語言經過中等程度的訓練,表現良好,但偶爾會有侷限性:葡萄牙語、白俄羅斯語、孟加拉語、格魯吉亞語、匈牙利語、拉脫維亞語、波斯語、波蘭語、斯瓦希里語、泰米爾語、烏克蘭語。
- 未支持語言:模型可以在未訓練的語言中生成語音,但效果可能不佳。可以嘗試未列出的語言,但結果可能不理想。
📦 安裝指南
👉 安裝說明
💻 使用示例
基礎用法
import outetts
# Initialize the interface
interface = outetts.Interface(
config=outetts.ModelConfig.auto_config(
model=outetts.Models.VERSION_1_0_SIZE_1B,
# For llama.cpp backend
backend=outetts.Backend.LLAMACPP,
quantization=outetts.LlamaCppQuantization.FP16
# For transformers backend
# backend=outetts.Backend.HF,
)
)
# Load the default speaker profile
speaker = interface.load_default_speaker("EN-FEMALE-1-NEUTRAL")
# Or create your own speaker profiles in seconds and reuse them instantly
# speaker = interface.create_speaker("path/to/audio.wav")
# interface.save_speaker(speaker, "speaker.json")
# speaker = interface.load_speaker("speaker.json")
# Generate speech
output = interface.generate(
config=outetts.GenerationConfig(
text="Hello, how are you doing?",
generation_type=outetts.GenerationType.CHUNKED,
speaker=speaker,
sampler_config=outetts.SamplerConfig(
temperature=0.4
),
)
)
# Save to file
output.save("output.wav")
高級用法
如需高級設置和自定義,請訪問官方倉庫:
👉 interface_usage.md
📚 詳細文檔
使用建議
說話者參考
模型設計為使用說話者參考。如果沒有參考,模型會生成隨機的語音特徵,通常會導致輸出質量下降。模型會繼承參考說話者的情感、風格和口音。當使用同一說話者轉錄到其他語言時,可能會發現模型保留了原始口音。
多語言應用
建議使用目標語言創建說話者配置文件,這有助於在該特定語言中獲得最佳效果,包括語調、口音和語言特徵。雖然模型支持跨語言語音,但仍依賴於參考說話者。如果說話者有明顯的口音(如英式英語),其他語言可能也會帶有該口音。
最佳音頻長度
- 最佳性能:單次運行生成約42秒的音頻(約8192個令牌)。建議在生成時不要接近此窗口的限制。通常,最多7000個令牌可獲得最佳效果。
- 使用說話者參考時的上下文減少:如果說話者參考為10秒長,則有效上下文將減少到約32秒。
溫度設置建議
測試表明,溫度設置為0.4是準確性的理想起點(使用以下采樣設置)。然而,某些語音參考可能受益於更高的溫度以增強表現力,或稍低的溫度以實現更精確的語音複製。
驗證說話者編碼
如果克隆語音質量不佳,請檢查編碼後的說話者樣本。
interface.decode_and_save_speaker(speaker=your_speaker, path="speaker.wav")
DAC音頻重建模型是有損的,帶有削波、過大音量或異常語音特徵的樣本可能會引入編碼問題,影響輸出質量。
採樣配置
為獲得此TTS模型的最佳效果,請使用以下采樣設置。
參數 | 值 |
---|---|
溫度 | 0.4 |
重複懲罰 | 1.1 |
重複範圍 | 64 |
前k個 | 40 |
前p個 | 0.9 |
最小p值 | 0.05 |
模型規格
屬性 | 詳情 |
---|---|
訓練數據 | 基於約60000小時的音頻進行訓練 |
上下文長度 | 支持最大8192個令牌的上下文窗口 |
訓練參數
預訓練
屬性 | 詳情 |
---|---|
優化器 | AdamW |
批量大小 | 100萬個令牌 |
最大學習率 | 3e - 4 |
最小學習率 | 3e - 5 |
上下文長度 | 8192 |
微調
屬性 | 詳情 |
---|---|
優化器 | AdamW |
最大學習率 | 1e - 5 |
最小學習率 | 5e - 6 |
數據 | 10000個多樣化、高質量的示例 |
🔧 技術細節
重要採樣注意事項
使用OuteTTS 1.0版本時,務必使用採樣配置部分指定的設置。
重複懲罰實現尤為重要——此模型需要對最近的64個令牌窗口應用懲罰,而不是對整個上下文窗口應用懲罰。對整個上下文進行懲罰會導致模型產生破碎或低質量的輸出。
目前,llama.cpp默認提供最可靠和一致的輸出質量。llama.cpp和EXL2都支持這種窗口化採樣方法,而Transformers不支持。
為解決這一限制,我在OuteTTS庫中為Hugging Face Transformers後端實現了窗口化重複懲罰,這顯著提高了輸出質量並解決了採樣問題,提供了與llama.cpp相當的結果。
📄 許可證
- 初始Llama3.2組件:Llama 3.2社區許可協議
- 我們的持續預訓練、微調及其他組件:CC - BY - NC - SA - 4.0
致謝
- 非常感謝Hugging Face通過其資助計劃提供的持續資源支持!
- 音頻編碼和解碼使用了ibm - research/DAC.speech.v1.0
- OuteTTS基於Llama3.2 - 1B作為基礎模型,並進行了持續的預訓練和微調。
道德使用指南
此文本轉語音模型旨在用於合法應用,以增強可訪問性、創造力和溝通;禁止的用途包括未經同意的模仿、故意創建誤導性內容、生成有害或騷擾性材料、在未適當披露的情況下分發合成音頻、未經許可的語音克隆,以及任何違反適用法律、法規或版權的用途。
⚠️ 重要提示
使用OuteTTS版本1.0時,務必使用採樣配置部分指定的設置。重複懲罰需應用於64個令牌的最近窗口,而非整個上下文窗口,否則會導致輸出質量下降。目前,llama.cpp默認輸出質量最可靠,OuteTTS庫為Hugging Face Transformers後端實現的窗口化重複懲罰可顯著提升輸出質量。
💡 使用建議
建議使用目標語言創建說話者配置文件以獲得最佳多語言效果;單次生成音頻約42秒(約8192個令牌)性能最佳;溫度設置0.4是準確性的理想起點;若克隆語音質量不佳,可檢查編碼後的說話者樣本。




