🚀 マッシブマルチリンガルスピーチ (MMS): ラトビア語のテキスト読み上げ
このリポジトリには、ラトビア語 (lav) のテキスト読み上げ (TTS) モデルのチェックポイントが含まれています。
このモデルは、Facebookの マッシブマルチリンガルスピーチ プロジェクトの一部で、多様な言語に対応した音声技術を提供することを目的としています。サポートされている言語とそのISO 639-3コードの詳細は、MMS言語カバレッジ概要 で確認でき、すべてのMMS-TTSチェックポイントはHugging Face Hubの facebook/mms-tts で見ることができます。
MMS-TTSは、🤗 Transformersライブラリのバージョン4.33以降で利用可能です。
📚 ドキュメント
モデルの詳細
VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech) は、入力されたテキストシーケンスに基づいて音声波形を予測するエンドツーエンドの音声合成モデルです。これは、事後エンコーダ、デコーダ、および条件付き事前分布から構成される条件付き変分オートエンコーダ (VAE) です。
Transformerベースのテキストエンコーダと複数のカップリングレイヤーから構成されるフローベースのモジュールによって、一連のスペクトログラムベースの音響特徴が予測されます。スペクトログラムは、HiFi-GANボコーダと同じスタイルで、転置畳み込みレイヤーのスタックを使用してデコードされます。同じテキスト入力を複数の方法で話すことができるというTTS問題の1対多の性質に着想を得て、このモデルには確率的な持続時間予測器も含まれており、同じ入力テキストから異なるリズムの音声を合成することができます。
このモデルは、変分下限と敵対的トレーニングから導出される損失の組み合わせを用いてエンドツーエンドで学習されます。モデルの表現力を向上させるために、条件付き事前分布に正規化フローが適用されます。推論時には、テキストエンコーディングは持続時間予測モジュールに基づいてアップサンプリングされ、その後、フローモジュールとHiFi-GANデコーダのカスケードを使用して波形にマッピングされます。持続時間予測器の確率的な性質により、このモデルは非決定論的であり、同じ音声波形を生成するには固定シードが必要です。
MMSプロジェクトでは、各言語に対して個別のVITSチェックポイントが学習されています。
🚀 クイックスタート
MMS-TTSは、🤗 Transformersライブラリのバージョン4.33以降で利用可能です。このチェックポイントを使用するには、まずライブラリの最新バージョンをインストールします。
pip install --upgrade transformers accelerate
次に、以下のコードスニペットを使用して推論を実行します。
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("facebook/mms-tts-lav")
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-lav")
text = "some example text in the Latvian language"
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)
💻 使用例
基本的な使用法
from transformers import VitsModel, AutoTokenizer
import torch
model = VitsModel.from_pretrained("facebook/mms-tts-lav")
tokenizer = AutoTokenizer.from_pretrained("facebook/mms-tts-lav")
text = "some example text in the Latvian language"
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)
📚 BibTex引用
このモデルは、Meta AIのVineel Pratapらによって開発されました。このモデルを使用する場合は、MMSの論文を引用することを検討してください。
@article{pratap2023mms,
title={Scaling Speech Technology to 1,000+ Languages},
author={Vineel Pratap and Andros Tjandra and Bowen Shi and Paden Tomasello and Arun Babu and Sayani Kundu and Ali Elkahky and Zhaoheng Ni and Apoorv Vyas and Maryam Fazel-Zarandi and Alexei Baevski and Yossi Adi and Xiaohui Zhang and Wei-Ning Hsu and Alexis Conneau and Michael Auli},
journal={arXiv},
year={2023}
}
📄 ライセンス
このモデルは、CC-BY-NC 4.0 ライセンスで提供されています。