StyleTTS2 - style diffusionと大規模SLMの敵対的学習に基づくテキスト音声変換
(github.com/yl4579)- StyleTTS2は、style diffusionと大規模speech language model(SLM)ベースの敵対的学習を活用し、人間レベルのTTS合成を目指すテキスト音声変換モデル
- スタイルをdiffusion modelの潜在確率変数としてモデル化し、reference speechなしでテキストに適したスタイルを生成し、diffusion modelの多様な音声合成を活用する効率的なlatent diffusionを使用
- WavLMのような大規模事前学習SLMをdiscriminatorとして使用し、微分可能なduration modelingを適用して、end-to-end学習と音声の自然さの改善を実現
- LJSpeech単一話者データセットでは、native English speakerの評価基準でhuman recordingsを上回り、VCTK多話者データセットではhuman recordingsと同等で、LibriTTS学習モデルはzero-shot speaker adaptationで既存のpublicly available modelsより高い性能を示す
- 学習と推論のワークフローは、単一話者LJSpeech、多話者VCTK・LibriTTS、事前学習済み多話者モデルベースの新規話者fine-tuningを扱う
- 第1段階の学習は
accelerate launch train_first.py --config_path ./Configs/config.yml、第2段階の学習はpython train_second.py --config_path ./Configs/config.ymlを使用 train_second.pyのDDP版は動作しないため現在はDPを使用しており、fine-tuningスクリプトもDDPが動作しない条件を持つ
- 第1段階の学習は
- 主な実行条件はPython >= 3.7、
requirements.txtのインストール、デモ実行時のphonemizerとespeak-ngのインストール、LJSpeechデータの24 kHzへのアップサンプリング - 事前学習モジュールは、テキストaligner用ASR、pitch extractor用JDC、PL-BERTで構成
- ASR alignerはEnglish(LibriTTS)、Japanese(JVS)、Chinese(AiShell)コーパスで事前学習済み
- JDC pitch extractorはEnglish(LibriTTS)コーパスでのみ事前学習済み
- PL-BERTはEnglish(Wikipedia)コーパスでのみ事前学習されているため、他言語ではその言語向けのPL-BERTが必要であり、multilingual PL-BERTは14言語をサポート
- 推論は単一話者向け
Inference_LJSpeech.ipynbと多話者向けInference_LibriTTS.ipynbを通じて提供され、LJSpeechとLibriTTSの事前学習モデルはHugging Faceからダウンロード可能 - コードライセンスはMIT Licenseであり、事前学習モデルの使用時には合成音声であることを聞き手に知らせるか、音声使用権限のある話者の音声のみを公開的に合成する条件に従う
1件のコメント
Hacker Newsのコメント
StyleTTS2、Whisper、OpenHermes2-Mistral-7B のようなオープンソースの部品で、100%ローカルの音声チャットボットを作りました。ChatGPTよりはるかに速く応答します。
ほかの音声アシスタントのような硬いSiri式のやり取りではなく、実際の会話に近い形でやり取りできるので面白いです。
12GBのNvidia GPUを搭載したWindowsゲーミングPC、テスト基準では3060 12GBなら、PythonやCUDAを触る必要なく一度のインストールで会話できます: https://apps.microsoft.com/detail/9NC624PBFGB7
デモはヘッドホンが必要で、コンソールアプリとして実行されるなど粗い部分はありますが、オープンソースの組み合わせだけで近いうちに一般的なゲーミングPCで可能になりそうなことを先取りして見せている感じで、まだ取り込めていない改善モデルもいくつかあります。
特に相手が長く話しすぎたらこちらが割り込んで止めたり、こちらが話している途中にAIが短く相づちを打ったりするような、発話の遮りや割り込みが普通の会話のようにできるといいです。
速度がリアルタイムより速くなるレベルなら、理論上はそうした機能を始められそうですし、完全に自然な会話には、AIが顔や身ぶりを見て長く話しているかを判断する文脈認識も必要に見えます。
EVGA 3080Ti 12GBでも遅延がかなり大きく、一度しか話していないのに同じ入力を何度も処理しながら、少しずつ違う認識結果を繰り返しているようでした。
最終的には自分の声を聞いて自分自身に応答する問題も見られました。
先月StyleTTS2をテストし、ローカルインストールする人の役に立ちそうな手順ごとのメモをまとめておきました: https://llm-tracker.info/books/howto-guides/page/styletts-2
LJSpeechモデルでVITS、XTTSと簡単に速度と品質も比較しましたが、StyleTTS2はかなり良く、非常に高速でした: https://fediverse.randomfoo.net/notice/AaOgprU715gcT5GrZ2
インフィルやアウトペインティングに相当する機能も可能なのか気になりますし、この品質の超高速音声合成は、特にインディーや実験的なゲーム開発でさまざまな活用が期待できます。
リンクの
#mambaforgeアンカーも動作しませんでした。ドキュメントがややまばらで、合わせ込む過程が少し面倒だったが、約20分後には WSL Ubuntu 22.04 で問題なく動作した
音質は非常に良く、これまで見てきた他のオープンソース音声合成プロジェクトよりずっと優れており、4090 GPU 基準ではものすごく速い
ElevenLabs の品質に達しているかはまだ分からないが、ElevenLabs の魅力は高品質な音声ライブラリが大きく、簡単に選べるところにある。このライブラリでは、デフォルトの女性音声以外を選ぶ方法はまだ見つけられていない
ElevenLabs の本当の中核は、5分のサンプル1つだけでほぼ即座にできる音声クローンで、驚くほど、少し不気味なくらい上手くいく。この機能が完全にオープンソースで可能になることを期待している。API サービスは多くの用途には高すぎるし、比較的安価な OpenAI でも数千語の生成に約10セントかかる
/Demoに移動してInference_LJSpeech.ipynbまたはInference_LibriTTS.ipynbを開けば動くはず音声合成が抑揚と発音を担当し、RVC が声の質感を担当する構成なので、StyleTTS とこのパイプラインを組み合わせれば ElevenLabs に近づけるかもしれない
短い音声の合成は音声合成の世界ではほぼ解決済みの問題だが、テキスト音声変換でオーディオブックを作ろうとすると問題が崩れ始める
面白いことに、TTS2 の例は実際の正解音声より良く聞こえる https://styletts2.github.io/
たとえば “Then leaving the corpse within the house [...]” の例では、正解音声が
houseを奇妙に、トーンが上がるような感じで発音しているのに対し、TTS2 版のほうが自然に聞こえるオーディオブックがない日本のライトノベルなど、複数の ePub ファイルに使いたい。今は Android の Moon+ Reader TTS を使っているが、かなりロボットっぽい
2023年には勝ち目がない
それでも結果は印象的で、他のあらゆる音声合成より優れている
現在の HN タイトルは “StyleTTS2 – open-source Eleven Labs quality Text To Speech” だが、元のタイトルには特定の製品名は入っておらず、そこからリンクされている arXiv 論文も ElevenLabs には言及していない
このようなタイトル編集は避けるべきだと理解していた
オープンソースのシステムがその品質に近づくなら非常に注目に値するし、だから多くの人は比較をありがたく思うはず。実際、その比較がきっかけで興味を持った
うまく使えた人に聞きたいのだが、この音声クローンは XTTSv2 ともまったく違うし、ElevenLabs にはなおさら及ばない
抑揚にはあまり気を配っていないようで、音高とリズムはかなりうまく合わせる、という程度
alpha,beta,embedding scale,diffusion stepsの値をいろいろ変えてみたが、速くて音質が悪くない点は認めるとしても、音声クローンはまったくまともにできなかったXTTS もおそらく20を超える言語と数百万の話者で学習されているはず
数百万の声を見ていれば、その中には必ずあなたに似た声があるものなので、結局は学習データの問題。ただし、そのような大規模データを集めて学習させるのは非常に難しい
alpha,betaをかなり試し、複数のオーディオクリップを上げてみたが、同じ結果に遭遇した品質が本当に信じられないほど良く、2000年代初頭にはほとんど想像しにくかったレベル
LLMがキャラクターを演じ、こうした音声合成がNPCに声を与える形で、ゲームにおいて興味深い可能性がある
今のゴルフシミュレーターは鳥がさえずり、芝が揺れ、プレイはリアルなのに、人がまったくいないため、少しポストアポカリプス的な雰囲気が残る
実際のラウンドでの冗談交じりの牽制や、大きな大会の観客の声とはかなり違うので、LLMベースの雑談を追加するのにちょうどよさそう
Colabノートブックをさっそく使ってみたところ、品質は非常に良さそうで、音声クローンにも対応している
試してみたいが、torch依存関係をインストールするために毎回
venvを作るのが、そろそろ少し面倒になってきた他の人はどう扱っているのか気になる。複数の
venvで共通のtorch環境を共有させる簡単な方法があるのか、手動ではできるとしても、それを支援するツールがあるのか知りたいワークフローは
nix flake init -t github:dialohq/flake-templates#python、nix develop -c $SHELLで入り、nix開発環境のシェルフックでpoetry installとpoetry activateを実行する形テキスト音声変換モデル向けにCivitaiのようなLoRAマーケットプレイスができるのか気になる
https://github.com/microsoft/LoRA