🚀 VITS: エンドツーエンドテキスト-to-音声合成の敵対的学習を用いた条件付き変分オートエンコーダ
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)
✨ 主な機能
VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)は、入力テキストシーケンスに基づいて音声波形を予測するエンドツーエンドの音声合成モデルです。これは、事後エンコーダ、デコーダ、および条件付き事前分布から構成される条件付き変分オートエンコーダ(VAE)です。
Transformerベースのテキストエンコーダと複数のカップリング層から構成されるフローベースのモジュールによって、スペクトログラムベースの音響特徴量のセットが予測されます。スペクトログラムは、HiFi - GANボコーダと同じスタイルで、転置畳み込み層のスタックを使用してデコードされます。同じテキスト入力を複数の方法で話すことができるTTS問題の1対多の性質に着想を得て、モデルには確率的持続時間予測器も含まれており、これによりモデルは同じ入力テキストから異なるリズムの音声を合成することができます。
モデルは、変分下限と敵対的学習から導出される損失の組み合わせを用いてエンドツーエンドで学習されます。モデルの表現力を向上させるために、正規化フローが条件付き事前分布に適用されます。推論時には、持続時間予測モジュールに基づいてテキストエンコーディングがアップサンプリングされ、次にフローモジュールとHiFi - GANデコーダのカスケードを使用して波形にマッピングされます。持続時間予測器の確率的性質により、モデルは非決定的であり、同じ音声波形を生成するには固定シードが必要です。
VITSモデルには2つのバリエーションがあります。1つはLJ Speechデータセットで学習されたもので、もう1つはVCTKデータセットで学習されたものです。LJ Speechデータセットは、1人の話者の13,100個の短い音声クリップで構成され、合計長は約24時間です。VCTKデータセットは、様々なアクセントを持つ109人のネイティブ英語話者によって発話された約44,000個の短い音声クリップで構成され、音声クリップの合計長は約44時間です。
📦 インストール
VITSを使用するには、まず🤗 Transformersライブラリの最新バージョンをインストールする必要があります。
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
高度な使用法
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ライセンスの下で提供されています。