🚀 VITS:用於端到端文本轉語音的對抗學習條件變分自編碼器
VITS是一種端到端的語音合成模型,它能根據輸入的文本序列預測語音波形。該模型是一個條件變分自編碼器(VAE),由後驗編碼器、解碼器和條件先驗組成。此倉庫包含在LJ Speech數據集上訓練的官方VITS檢查點的權重。
🚀 快速開始
VITS自🤗 Transformers庫4.33版本起可用。要使用此檢查點,首先需安裝該庫的最新版本:
pip install --upgrade transformers accelerate
然後,使用以下代碼片段進行推理:
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("kakao-enterprise/vits-ljs")
tokenizer = AutoTokenizer.from_pretrained("kakao-enterprise/vits-ljs")
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聲碼器類似。考慮到文本轉語音問題的一對多性質,即相同的文本輸入可以有多種發音方式,該模型還包含一個隨機時長預測器,這使得模型能夠從相同的輸入文本合成不同節奏的語音。
該模型通過結合變分下界和對抗訓練產生的損失進行端到端訓練。為了提高模型的表現力,對條件先驗分佈應用了歸一化流。在推理過程中,文本編碼會根據時長預測模塊進行上採樣,然後通過流模塊和HiFi - GAN解碼器的級聯映射到波形。由於時長預測器的隨機性,該模型是非確定性的,因此需要固定種子才能生成相同的語音波形。
VITS模型有兩個變體:一個在LJ Speech數據集上訓練,另一個在VCTK數據集上訓練。LJ Speech數據集包含13100個單說話者的短音頻片段,總時長約24小時。VCTK數據集包含約44000個由109位具有不同口音的英語母語者說出的短音頻片段,音頻片段總時長約44小時。
檢查點 |
訓練時長(小時) |
說話者數量 |
[vits - ljs](https://huggingface.co/kakao - enterprise/vits - ljs) |
24 |
1 |
[vits - vctk](https://huggingface.co/kakao - enterprise/vits - vctk) |
44 |
109 |
💻 使用示例
基礎用法
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("kakao-enterprise/vits-ljs")
tokenizer = AutoTokenizer.from_pretrained("kakao-enterprise/vits-ljs")
text = "Hey, it's Hugging Face on the phone"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
output = model(**inputs).waveform
高級用法
import scipy
scipy.io.wavfile.write("techno.wav", rate=model.config.sampling_rate, data=output)
from IPython.display import Audio
Audio(output, rate=model.config.sampling_rate)
📚 詳細文檔
此模型由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許可協議。