🚀 VITS:用於端到端文本轉語音的帶對抗學習的條件變分自編碼器
VITS是一個端到端的語音合成模型,它能根據輸入的文本序列預測語音波形。該模型為條件變分自編碼器(VAE),由後驗編碼器、解碼器和條件先驗組成。此倉庫包含在VCTK數據集上訓練的官方VITS檢查點的權重。
🚀 快速開始
VITS自🤗 Transformers庫4.33版本起可用。若要使用此檢查點,需先安裝該庫的最新版本:
pip install --upgrade transformers accelerate
接著,使用以下代碼片段進行推理:
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("kakao-enterprise/vits-vctk")
tokenizer = AutoTokenizer.from_pretrained("kakao-enterprise/vits-vctk")
text = "Hey, it's Hugging Face on the phone"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform
生成的波形可以保存為 .wav
文件:
import scipy
scipy.io.wavfile.write("techno.wav", rate=model.config.sampling_rate, data=output)
或者在Jupyter Notebook / Google Colab中展示:
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)
✨ 主要特性
- 端到端語音合成:根據輸入文本序列直接預測語音波形。
- 條件變分自編碼器架構:由後驗編碼器、解碼器和條件先驗組成。
- 隨機時長預測器:考慮到TTS問題的一對多性質,允許模型從相同輸入文本合成不同節奏的語音。
- 兩種訓練數據集變體:分別在LJ Speech和VCTK數據集上訓練。
📦 安裝指南
要使用VITS檢查點,需先安裝最新版本的🤗 Transformers庫和 accelerate
:
pip install --upgrade transformers accelerate
💻 使用示例
基礎用法
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("kakao-enterprise/vits-vctk")
tokenizer = AutoTokenizer.from_pretrained("kakao-enterprise/vits-vctk")
text = "Hey, it's Hugging Face on the phone"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform
高級用法
保存為 .wav
文件
import scipy
scipy.io.wavfile.write("techno.wav", rate=model.config.sampling_rate, data=output)
在Jupyter Notebook / Google Colab中展示
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)
📚 詳細文檔
模型細節
VITS(端到端文本轉語音的帶對抗學習的變分推理)是一個端到端的語音合成模型,它能根據輸入的文本序列預測語音波形。該模型為條件變分自編碼器(VAE),由後驗編碼器、解碼器和條件先驗組成。
基於流的模塊會預測一組基於頻譜圖的聲學特徵,該模塊由基於Transformer的文本編碼器和多個耦合層組成。頻譜圖使用一系列轉置卷積層進行解碼,與HiFi - GAN聲碼器的風格非常相似。考慮到TTS問題的一對多性質,即相同的文本輸入可以有多種發音方式,該模型還包含一個隨機時長預測器,這使得模型能夠從相同的輸入文本合成不同節奏的語音。
該模型通過結合變分下界和對抗訓練得出的損失進行端到端訓練。為提高模型的表達能力,對條件先驗分佈應用了歸一化流。在推理過程中,文本編碼會根據時長預測模塊進行上採樣,然後通過流模塊和HiFi - GAN解碼器的級聯映射到波形。由於時長預測器的隨機性,該模型是非確定性的,因此需要固定種子才能生成相同的語音波形。
VITS模型有兩個變體:一個在LJ Speech數據集上訓練,另一個在VCTK數據集上訓練。LJ Speech數據集包含13100個單說話者的短音頻片段,總時長約24小時。VCTK數據集包含約44000個由109位具有不同口音的英語母語者說出的短音頻片段,音頻片段的總時長約為44小時。
BibTex引用
該模型由Kakao Enterprise的Jaehyeon Kim等人開發。如果使用該模型,請考慮引用VITS論文:
@inproceedings{kim2021conditional,
title={"Conditional Variational Autoencoder with Adversarial Learning for End-to-end Text-to-speech"},
author={Kim, Jaehyeon and Kong, Jungil and Son, Juhee},
booktitle={International Conference on Machine Learning},
pages={5530--5540},
year={2021},
organization={PMLR}
}
📄 許可證
該模型採用MIT許可證。