3 ポイント 投稿者 GN⁺ 2023-11-20 | 1件のコメント | WhatsAppで共有
  • 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が動作しない条件を持つ
  • 主な実行条件はPython >= 3.7、requirements.txtのインストール、デモ実行時のphonemizerespeak-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件のコメント

 
GN⁺ 2023-11-20
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が顔や身ぶりを見て長く話しているかを判断する文脈認識も必要に見えます。
    • 実行してみましたが、CUDA 11でしか動かないようで、すでにCUDA 12環境なので、テストのためにCUDA環境を壊すつもりはありません。
    • テスト結果はまちまちでした。C:\ 以外のドライブにインストールするとエラーが出て、C: に移すと正常に動作しました。
      EVGA 3080Ti 12GBでも遅延がかなり大きく、一度しか話していないのに同じ入力を何度も処理しながら、少しずつ違う認識結果を繰り返しているようでした。
      最終的には自分の声を聞いて自分自身に応答する問題も見られました。
    • 12GBが最低要件なのか気になります。8GBではメモリ不足エラーが出ました。
    • Whisperは入力ストリーミングをサポートしていないので、LLMの応答全体が終わらないと文字起こしをトリガーできないのではないかと思います。
  • 先月StyleTTS2をテストし、ローカルインストールする人の役に立ちそうな手順ごとのメモをまとめておきました: https://llm-tracker.info/books/howto-guides/page/styletts-2
    LJSpeechモデルでVITS、XTTSと簡単に速度と品質も比較しましたが、StyleTTS2はかなり良く、非常に高速でした: https://fediverse.randomfoo.net/notice/AaOgprU715gcT5GrZ2

    • 4090でリアルタイム比15〜95倍の推論とはすごいですね。
      インフィルやアウトペインティングに相当する機能も可能なのか気になりますし、この品質の超高速音声合成は、特にインディーや実験的なゲーム開発でさまざまな活用が期待できます。
    • 案内に従っている途中ですが、すでに使っている人でないならmambaはもう推奨されていません
      リンクの #mambaforge アンカーも動作しませんでした。
  • ドキュメントがややまばらで、合わせ込む過程が少し面倒だったが、約20分後には WSL Ubuntu 22.04 で問題なく動作した
    音質は非常に良く、これまで見てきた他のオープンソース音声合成プロジェクトよりずっと優れており、4090 GPU 基準ではものすごく速い
    ElevenLabs の品質に達しているかはまだ分からないが、ElevenLabs の魅力は高品質な音声ライブラリが大きく、簡単に選べるところにある。このライブラリでは、デフォルトの女性音声以外を選ぶ方法はまだ見つけられていない
    ElevenLabs の本当の中核は、5分のサンプル1つだけでほぼ即座にできる音声クローンで、驚くほど、少し不気味なくらい上手くいく。この機能が完全にオープンソースで可能になることを期待している。API サービスは多くの用途には高すぎるし、比較的安価な OpenAI でも数千語の生成に約10セントかかる

    • Ubuntu 22.04 でテストしたインストール手順。Google Drive のダウンロードリンクは、24時間内のダウンロード数が多すぎるとしてブロックされることがあるが、少し待てばまた使えるはず
      git clone https://github.com/yl4579/StyleTTS2.git  
      cd StyleTTS2  
      python3 -m venv venv  
      source venv/bin/activate  
      python3 -m pip install --upgrade pip  
      python3 -m pip install wheel  
      pip install -r requirements.txt  
      pip install phonemizer  
      sudo apt-get install -y espeak-ng  
      pip install gdown  
      gdown https://drive.google.com/uc?id=1K3jt1JEbtohBLUA0X75KLw36TW7U1yxq  
      7z x Models.zip  
      rm Models.zip  
      gdown https://drive.google.com/uc?id=1jK_VV3TnGM9dkrIMsdQ_upov8FrIymr7  
      7z x Models.zip  
      rm Models.zip  
      pip install ipykernel pickleshare nltk SoundFile  
      python -c "import nltk; nltk.download('punkt')"  
      pip install --upgrade jupyter ipywidgets librosa  
      python -m ipykernel install --user --name=venv --display-name="Python (venv)"  
      jupyter notebook  
      
      その後 /Demo に移動して Inference_LJSpeech.ipynb または Inference_LibriTTS.ipynb を開けば動くはず
    • スタイルのクローンでは、高品質に微調整した音声合成の後に RVC パイプラインで出力を「強化」する方法を見たことがある
      音声合成が抑揚と発音を担当し、RVC が声の質感を担当する構成なので、StyleTTS とこのパイプラインを組み合わせれば ElevenLabs に近づけるかもしれない
    • LibriTTS デモは、見たことのない話者の声を5秒程度のクリップだけでクローンする
    • ElevenLabs と StyleTTS の両方で長い発話をテストしてみたのか気になる
      短い音声の合成は音声合成の世界ではほぼ解決済みの問題だが、テキスト音声変換でオーディオブックを作ろうとすると問題が崩れ始める
  • 面白いことに、TTS2 の例は実際の正解音声より良く聞こえる https://styletts2.github.io/
    たとえば “Then leaving the corpse within the house [...]” の例では、正解音声が house を奇妙に、トーンが上がるような感じで発音しているのに対し、TTS2 版のほうが自然に聞こえる
    オーディオブックがない日本のライトノベルなど、複数の ePub ファイルに使いたい。今は Android の Moon+ Reader TTS を使っているが、かなりロボットっぽい

    • 最初の妻はプロの声優なのだが、誰かが「明らかに AI」だとして悪いレビューを残しているのを見た
      2023年には勝ち目がない
    • スピード感はより良いが、個人的にはまだかなりはっきりした金属的なトーンがあり、実際の音声には劣ると感じる
      それでも結果は印象的で、他のあらゆる音声合成より優れている
    • ePub にどう組み込んで使う予定なのか気になる。似た状況なので、電子書籍にこういうものを活用したい
  • 現在の HN タイトルは “StyleTTS2 – open-source Eleven Labs quality Text To Speech” だが、元のタイトルには特定の製品名は入っておらず、そこからリンクされている arXiv 論文も ElevenLabs には言及していない
    このようなタイトル編集は避けるべきだと理解していた

    • ElevenLabs は音声合成のベンチマークであり、それより良いものはまだない
      オープンソースのシステムがその品質に近づくなら非常に注目に値するし、だから多くの人は比較をありがたく思うはず。実際、その比較がきっかけで興味を持った
    • 編集されたタイトルであり、誇張でもある。それでも StyleTTS2 を実際に使ってみると、オープンソース音声合成の中では断然最高なので、HN の上位にしばらくいる資格は十分ある
    • ガイドライン違反であるのは確か。タイトルを見て、新しい研究論文ではなく任意の GitHub プロジェクトだと思った
  • うまく使えた人に聞きたいのだが、この音声クローンは XTTSv2 ともまったく違うし、ElevenLabs にはなおさら及ばない
    抑揚にはあまり気を配っていないようで、音高とリズムはかなりうまく合わせる、という程度
    alpha, beta, embedding scale, diffusion steps の値をいろいろ変えてみたが、速くて音質が悪くない点は認めるとしても、音声クローンはまったくまともにできなかった

    • ElevenLabs は Tortoise-TTS ベースで、すでに数百万時間のデータで事前学習されている一方、このモデルは多くても500時間の LibriTTS でしか学習されていない
      XTTS もおそらく20を超える言語と数百万の話者で学習されているはず
      数百万の声を見ていれば、その中には必ずあなたに似た声があるものなので、結局は学習データの問題。ただし、そのような大規模データを集めて学習させるのは非常に難しい
    • 論文の結論部分を見ると、音声クローンはまだそれほど良くないと認めている
    • alpha, beta をかなり試し、複数のオーディオクリップを上げてみたが、同じ結果に遭遇した
  • 品質が本当に信じられないほど良く、2000年代初頭にはほとんど想像しにくかったレベル
    LLMがキャラクターを演じ、こうした音声合成がNPCに声を与える形で、ゲームにおいて興味深い可能性がある

    • 関心のある分野であるゴルフシミュレーションでは大きな意味がある
      今のゴルフシミュレーターは鳥がさえずり、芝が揺れ、プレイはリアルなのに、人がまったくいないため、少しポストアポカリプス的な雰囲気が残る
      実際のラウンドでの冗談交じりの牽制や、大きな大会の観客の声とはかなり違うので、LLMベースの雑談を追加するのにちょうどよさそう
  • Colabノートブックをさっそく使ってみたところ、品質は非常に良さそうで、音声クローンにも対応している

    • READMEをざっと見たが、実行に必要な最小ハードウェア要件が何なのか気になる。CPUやハードディスクを吹き飛ばすようなものではないのか分からない
    • GitHubをざっと見たものの見つけられなかったが、特定の声にファインチューニングするのにどれくらい時間がかかるのか気になる
  • 試してみたいが、torch依存関係をインストールするために毎回venvを作るのが、そろそろ少し面倒になってきた
    他の人はどう扱っているのか気になる。複数のvenvで共通のtorch環境を共有させる簡単な方法があるのか、手動ではできるとしても、それを支援するツールがあるのか知りたい

    • Python環境構成にはnixを使っており、Pythonのバージョンとpoetry、場合によってはpoetryでインストールしにくいパッケージを固定して、残りはpoetryで処理している
      ワークフローはnix flake init -t github:dialohq/flake-templates#pythonnix develop -c $SHELLで入り、nix開発環境のシェルフックでpoetry installpoetry activateを実行する形
    • こういうものには普通Dockerを使おうとするが、依存関係の把握が難しすぎて、こうしたプロジェクトを見送る主な理由にもなっている
    • 同じ問題を強く感じている。Docker開発コンテナを使い、共通依存関係用のベースイメージを作ったうえで、新しいプロジェクトごとにDockerfileでカスタマイズする方法を考えたが、もっと良い代替案があるのかは分からない
    • 自分も似たような感じ。condaを使っていて、いっそ基本conda環境にPyTorchをインストールする方向を見ている
    • 本当に面倒になり始めているなら、CopilotのようなLLMに代わりに処理させられるべきではないかと思う
  • テキスト音声変換モデル向けにCivitaiのようなLoRAマーケットプレイスができるのか気になる
    https://github.com/microsoft/LoRA