Parler-TTS は、特定の話者のスタイル (性別、ピッチ、話し方など) で高品質で自然な音声を生成できる軽量のテキスト読み上げ (TTS) モデルです。これは、Stability AI とエディンバラ大学の Dan Lyth と Simon King による論文「合成注釈を備えた高忠実度テキスト読み上げの自然言語ガイダンス」からの著作物の複製です。
他の TTS モデルとは対照的に、Parler-TTS は完全にオープンソースリリースです。すべてのデータセット、前処理、トレーニング コード、重みは寛容なライセンスの下で公開されており、コミュニティが私たちの成果に基づいて構築し、独自の強力な TTS モデルを開発できるようになります。
このリポジトリには、Parler-TTS の推論コードとトレーニング コードが含まれています。これは、データセット アノテーション用の Data-Speech リポジトリに付属するように設計されています。
重要
2024/08/08: 2 つの新しい Parler-TTS チェックポイントをリリースできることを誇りに思います。
これらのチェックポイントは、45,000 時間のオーディオブック データに基づいてトレーニングされています。
さらに、コードはより高速に生成できるように最適化されています。SDPA と Flash Attendant 2 の互換性と、モデルをコンパイルする機能が追加されました。
Parler-TTS には軽量の依存関係があり、1 行でインストールできます。
pip install git+https://github.com/huggingface/parler-tts.git
Apple Silicon ユーザーは、bfloat16 サポート用の夜間の PyTorch (2.4) ビルドを使用するには、フォローアップ コマンドを実行する必要があります。
pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu
ヒント
こちらのインタラクティブなデモで直接試すことができます。
Parler-TTS の使用は、「bonjour」と同じくらい簡単です。ライブラリを一度インストールするだけです。
pip install git+https://github.com/huggingface/parler-tts.git
Parler-TTS は、単純なテキスト プロンプトで制御できる機能を備えた音声を生成するようにトレーニングされています。次に例を示します。
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf
device = "cuda:0" if torch . cuda . is_available () else "cpu"
model = ParlerTTSForConditionalGeneration . from_pretrained ( "parler-tts/parler-tts-mini-v1" ). to ( device )
tokenizer = AutoTokenizer . from_pretrained ( "parler-tts/parler-tts-mini-v1" )
prompt = "Hey, how are you doing today?"
description = "A female speaker delivers a slightly expressive and animated speech with a moderate speed and pitch. The recording is of very high quality, with the speaker's voice sounding clear and very close up."
input_ids = tokenizer ( description , return_tensors = "pt" ). input_ids . to ( device )
prompt_input_ids = tokenizer ( prompt , return_tensors = "pt" ). input_ids . to ( device )
generation = model . generate ( input_ids = input_ids , prompt_input_ids = prompt_input_ids )
audio_arr = generation . cpu (). numpy (). squeeze ()
sf . write ( "parler_tts_out.wav" , audio_arr , model . config . sampling_rate )
世代間で話者の一貫性を確保するために、このチェックポイントは、名前によって特徴づけられた 34 人の話者についてもトレーニングされました。利用可能なスピーカーの完全なリストには、ローラ、ゲイリー、ジョン、リー、カレン、リック、ブレンダ、デビッド、アイリーン、ジョーダン、マイク、ヤン、ジョイ、ジェームズ、エリック、ローレン、ローズ、ウィル、ジェイソン、アーロン、ナオミ、アリサ、パトリック、ジェリー、ティナ、ジェナ、ビル、トム、キャロル、バーバラ、レベッカ、アンナ、ブルース、エミリー。
これを利用するには、テキストの説明を調整して、どのスピーカーを使用するかを指定するだけです。 Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise.
「Jon」を上記のリストの名前のいずれかに置き換えて、さまざまなスピーカーの特性を利用できます。各スピーカーには独自の音声特性があり、特定のニーズに合わせて活用できます。音声の一貫性を伴うスピーカーのパフォーマンスの詳細については、推論ガイドを参照してください。
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf
device = "cuda:0" if torch . cuda . is_available () else "cpu"
model = ParlerTTSForConditionalGeneration . from_pretrained ( "parler-tts/parler-tts-mini-v1" ). to ( device )
tokenizer = AutoTokenizer . from_pretrained ( "parler-tts/parler-tts-mini-v1" )
prompt = "Hey, how are you doing today?"
description = "Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise."
input_ids = tokenizer ( description , return_tensors = "pt" ). input_ids . to ( device )
prompt_input_ids = tokenizer ( prompt , return_tensors = "pt" ). input_ids . to ( device )
generation = model . generate ( input_ids = input_ids , prompt_input_ids = prompt_input_ids )
audio_arr = generation . cpu (). numpy (). squeeze ()
sf . write ( "parler_tts_out.wav" , audio_arr , model . config . sampling_rate )
ヒント:
生成を高速化するために推論ガイドをセットアップしました。 SDPA、torch.compile、ストリーミングについて考えてみましょう。
トレーニング フォルダーには、独自の Parler-TTS モデルをトレーニングまたは微調整するためのすべての情報が含まれています。内容は次のとおりです。
重要
注意:インストール手順に従った後、次のコマンド ラインを使用して Parler-TTS Mini v1 トレーニング レシピを再現できます。
accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json
重要
モノラルスピーカー データセットの例については、この微調整ガイドに従うこともできます。
このライブラリは、多数のオープンソースの巨人の上に構築されており、これらのツールを提供してくださった彼らに心からの感謝の意を表したいと思います。
特別な感謝:
このリポジトリが役立つと思われた場合は、この研究と元の Stability AI 論文を引用することを検討してください。
@misc{lacombe-etal-2024-parler-tts,
author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
title = {Parler-TTS},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/huggingface/parler-tts}}
}
@misc{lyth2024natural,
title={Natural language guidance of high-fidelity text-to-speech with synthetic annotations},
author={Dan Lyth and Simon King},
year={2024},
eprint={2402.01912},
archivePrefix={arXiv},
primaryClass={cs.SD}
}
このプロジェクトには改善と探索のための多くの可能性が秘められているため、貢献は大歓迎です。
つまり、品質と速度の両方を向上させる方法を検討しています。