🚀 XPhoneBERT : 音素表現のための事前学習済み多言語モデル(テキスト音声合成用)
XPhoneBERTは、テキスト音声合成(TTS)のための音素表現に特化した初の事前学習済み多言語モデルです。XPhoneBERTはBERT-baseと同じモデルアーキテクチャを持ち、RoBERTaの事前学習アプローチを用いて、約100の言語と地域の3億3000万の音素レベルの文章で学習されています。実験結果によると、XPhoneBERTを入力音素エンコーダとして使用することで、強力なニューラルTTSモデルの自然性と韻律の性能が大幅に向上し、限られた学習データでもかなり高品質な音声を生成するのに役立ちます。
XPhoneBERTの一般的なアーキテクチャと実験結果については、INTERSPEECH 2023の論文で確認できます。
@inproceedings{xphonebert,
title = {{XPhoneBERT: A Pre-trained Multilingual Model for Phoneme Representations for Text-to-Speech}},
author = {Linh The Nguyen and Thinh Pham and Dat Quoc Nguyen},
booktitle = {Proceedings of the 24th Annual Conference of the International Speech Communication Association (INTERSPEECH)},
year = {2023},
pages = {5506--5510}
}
XPhoneBERTを使用して公開された結果を生成したり、他のソフトウェアに組み込んだりする場合は、必ず当該論文を引用してください。
詳細情報やリクエストについては、XPhoneBERTのホームページをご覧ください!
🚀 クイックスタート
📦 インストール
transformers
をpipでインストールします: pip install transformers
、またはソースからインストールします。
text2phonemesequence
をインストールします: pip install text2phonemesequence
。
当社のtext2phonemesequence
パッケージは、テキストシーケンスを音素レベルのシーケンスに変換するためのもので、多言語音素レベルの事前学習データの構築に使用されています。text2phonemesequence
は、CharsiuG2Pとsegmentsのツールキットを組み込んで構築されており、それぞれテキストから音素への変換と音素のセグメンテーションを行います。
⚠️ 重要提示
- 各言語の
text2phonemesequence
を初期化するには、対応するISO 639-3コードが必要です。サポートされている言語のISO 639-3コードはこちらで確認できます。
text2phonemesequence
は単語分割されたシーケンスを入力として受け取ります。また、ユーザーはtext2phonemesequence
に入力する前に、単語分割されたシーケンスに対してテキスト正規化を行うこともできます。事前学習データを作成する際、各言語のすべてのテキストドキュメントに対して、ベトナム語を除いてspaCyツールキットを使用して単語と文の分割を行いました。ベトナム語についてはVnCoreNLPツールキットを使用しました。また、英語、ドイツ語、スペイン語、中国語についてはNVIDIA NeMoツールキットのテキスト正規化コンポーネントを、ベトナム語についてはVinormのテキスト正規化パッケージを使用しました。
事前学習済みモデル
プロパティ |
詳細 |
モデル名 |
vinai/xphonebert-base |
パラメータ数 |
88M |
アーキテクチャ |
base |
最大長 |
512 |
事前学習データ |
約100の言語と地域の3億3000万の音素レベルの文章 |
💻 使用例
基本的な使用法
from transformers import AutoModel, AutoTokenizer
from text2phonemesequence import Text2PhonemeSequence
xphonebert = AutoModel.from_pretrained("vinai/xphonebert-base")
tokenizer = AutoTokenizer.from_pretrained("vinai/xphonebert-base")
text2phone_model = Text2PhonemeSequence(language='jpn', is_cuda=True)
sentence = "これ は 、 テスト テキスト です ."
input_phonemes = text2phone_model.infer_sentence(sentence)
input_ids = tokenizer(input_phonemes, return_tensors="pt")
with torch.no_grad():
features = xphonebert(**input_ids)
📄 ライセンス
本プロジェクトはMITライセンスの下で公開されています。