Let's VALL-E-X Windows / Mac

やってますか?VALL-E-X。

3秒ルール、という言葉が相応しい、コイツがリリースされていて、ローカルマシンに環境作りたい、作ってむふふしたい!という諸兄がいることでしょう。

安心して下さい。作れますよ。

 

1.WindowsでVALL-E-X

  • 前提

うちのゲーミングPCで環境作ってみた。スペックは以下。

OS:Windows10home 多分11でも動くのではないか。

CPU:Core i5 10400  2.90GHz 12コア

MEM:16GB

グラボ: Nvidia GeForce RTX 3060 Ti 8GB

Nvidiaがあると、サンプル音声からMakePromptで作成するnpzファイルの作成が爆速。後述のMacだと数十秒のところ、Nvidiaは数秒。

 

  • インストール方法

自力ではできず。以下参考にさせてもらってインストールした。

https://www.kkaneko.jp/ai/win/vall_e_x.html

 

ありがたやー。

 

  • WebUI

参考サイトの実行はpyファイルを作成して実行しているが、我ら素人はWebUIを使いたい。

なので、python launch-ui.py で実行しよう。

すると、ブラウザが上がってくる、、、といいたいところだが、launch-ui.pyの実行途中でモジュールが足らないとエラーがでるはず。なので、不足モジュールはpipでインストールすればOK。

モジュール不足が解消されると、python launch-ui.py実行時にブラウザが上がってきて、WebUIで試行錯誤ができる!やったね👍

 

  • Make Promptの音声秒数について

Generateする際、空きメモリのコントロールが必要となる。

どうやら、

npzファイル作成の元となるサンプル音声秒数 × しゃべらせたい文字数 

が必要メモリに影響する模様。

 

うちのNvidia RTX 3060 Ti 8GBだと、WebUI立ち上げた時点で、GPUメモリは6〜7GBほど消費していた。

色々試した所、npzファイル作成のためのサンプル音声秒数は15秒までだと、WebUI立ち上げ後のGPU空きメモリ1〜2GBに収まる感じ。

なお、しゃべらせたい文字数が多い場合、WebUIのinfer long textタブで実行するのが良い。Generate時に、「。、!?」などで文を自動的に区切ってGenerateして結合されるので、個々の生成は短文だから先ほどのGPU空きメモリでやりくりできるはず。

でも、長文だと文字数、センテンスに比例してGenerate時間は増える。軽く試す文字数だと、数十秒から数分といったところ。

 

  • サンプル音声について

サンプル音声にノイズがあると、Generate後の音声もノイズ込みでしゃべるので、サンプル音声は純粋な音声のみが良い。もしくはDavinci Resolveなどでノイズ除去すると良いかも。ノイズ除去は以下を参考にさせてもらった。

https://vook.vc/n/5068

自動にして、さらにドライ/ウェットつまみを右にするといい感じかも。

 

また、イントネーションがついた芝居込みの音声だと、Generate時不自然になりやすいっぽい。

Make promptの際に、サンプル音声の本来のテキストはこうあるべき、というのも指定できるが、結果的に不自然になりがちなので、まずは指定せずにMake promptして、音声から自動認識された際のテキストがうまく認識される音声サンプルを使用するのが良さげ。

 

 

2.MacでVALL-E-X

  • 前提

うちのMacBookAir 2020で環境作ってみた。スペックは以下。

OS:Ventura 13.5.1

CPU:M1  8コア

MEM:8GB

Nvidiaはないので、音声からMakePromptで作成するnpzファイルの作成が数十秒ほどかかる。まぁ許容範囲内か。

 

  • インストール方法

試行錯誤したので、ざっくり思い出したメモ。参考に。

 

gitをインストールする。

ターミナルで以下コマンド実行。

git clone https://github.com/Plachtaa/VALL-E-X.git

 

もしcommandline developer tool install 求められたらインストールする。

ダウンロードとインストールに時間かかった。

インストール後再度実行。

git clone https://github.com/Plachtaa/VALL-E-X.git

 

 

 

pythonを インストールする。

以下参考にさせてもらった。

https://www.python.jp/install/macos/install.html

c言語環境部分は不要。gitの時に同様の対応しているはず。

 

その後finderで「Install Certificates.command」 を検索し、 ダブルクリックでSSL署名書をインストールする。これをしないと、VALL-E-Xを起動する時に通信ができないとエラーがでる。

 

pipをインストールする。

以下を参考にさせてもらった。

https://yumarublog.com/python/pip-install/

 

なお、pythonコマンドはpytho3として実行。

 

 

VALL-E-Xの起動

ターミナルを起動する。ホームディレクトリにVALL-E-Xがクローンされてるはずなので以下を実行。

 

cd VALL-E-X

pip install -r requirements.txt

 インストールされるのでそこそこ時間かかる

python3 launch-ui.py

 

初回はチェックポイントをダウンロードしろといわれるので、ダウンロードする。

https://drive.google.com/uc?id=10gdQWvP-K_e1undkvv0p2b7SU6I4Eghttps://drive.google.com/uc?id=10gdQWvP-K_e1undkvv0p2b7SU6I4Egy 

ダウンロードしたファイルをVALL-E-Xのcheckpointsフォルダに配置する。

 

再度実行。

python3 launch-ui.py

起動に必要なものインストールがされる。

モジュール不足でエラーになったら、pipでインストールする。

gradioとかは求められたような気がする。

 

エラーがでなくなるまでpipでインストール繰り返したら、再度実行。

python3 launch-ui.py

 

以下メッセージがターミナルに出たら、ブラウザが立ち上がってVall-e-xが使える。

unning on local URL:  http://127.0.0.1:7860

 

To create a public link, set `share=True` in `launch()`.

これでWebUIで試行錯誤ができる!やったね👍

 

  • Make Promptの作成秒数について

環境にも記載したが、うちのMacBookAirちゃんにはNvidiaはないので、音声からMakePromptで作成するnpzファイルの作成が数十秒ほどかかる。

数十分とかならきついけど、数十秒なら許容範囲内。

良い感じのnpzファイルが作成できたら、npzファイル指定してしゃべらせるから毎回MakePromptしなくてよいので。

 

  • Make Promptの音声秒数について

Windowsの時と同様に、Generateする際、空きメモリのコントロールが必要となる。

どうやら、npzファイル作成のサンプル音声秒数 × しゃべらせたい文字数 が必要メモリに影響する模様。

 

うちのMacBookAirちゃんは物理メモリ8GB。

WebUI立ち上げた時点で、物理メモリは6〜7GBほど消費していた。

色々試した所、npzファイル作成のためのサンプル音声秒数は15秒までだと、WebUI立ち上げ後のGPU空きメモリ1〜2GBに収まる感じ。

なお、しゃべらせたい文字数が多い場合、WebUIのinfer long textタブで実行するのが良い。Generate時に、「。、!?」などで文を自動的に区切ってGenerateして結合されるので、個々の生成は短文だから先ほどのGPU空きメモリでやりくりできるはず。

でも、長文だと文字数、センテンスに比例してGenerate時間は増える。軽く試す文字数だと、数十秒から数分といったところ。

そこそこの長文だと20分とかかかりました。

Generate中、WindowsだとCPUがMAX負荷だったけど、M1だとさほどCPUは負荷がかかっていなかった。M1の計算性能が良いのか、M1の性能を使い切るほど最適化できてないのか。

しっかり計測したわけでは無いがWindows with Nvidiaの方がGenerate早い印象。

でもまあ、MacbookAirで気軽にVALL-E-Xできるのは良い。

 

  • サンプル音声について

サンプル音声にノイズがあると、Generate後の音声もノイズ込みでしゃべるので、サンプル音声は純粋な音声のみが良い。もしくはDavinci Resolveなどでノイズ除去すると良いかも。ノイズ除去は以下を参考にさせてもらった。

https://vook.vc/n/5068

自動にして、さらにドライ/ウェットつまみを右にするといい感じかも。

 

また、イントネーションがついた芝居込みの音声だと、Generate時不自然になりやすいっぽい。

Make promptの際に、サンプル音声の本来のテキストはこうあるべき、というのも指定できるが、結果的に不自然になりがちなので、まずは指定せずにMake promptして、音声から自動認識された際のテキストがうまく認識される音声サンプルを使用するのが良さげ。

それでは、良きVALL-E-Xライフを!

 

2023.09.11追記

------------------------

公式サイトで更新があった。

2023.09.10

  • Added AR decoder batch decoding for more stable generation result.
  • より安定した生成結果を得るために、ARデコーダバッチデコードを追加しました。

同じ言葉繰り返して出力されたりしてた結果はあったので、そのあたり修正されてたりするのだろうか?

gitの更新方法がぱっとわからなかったので、必要な作成物は対比して、vall-e-xフォルダを削除して、以下実行。

git clone https://github.com/Plachtaa/VALL-E-X.git
cd VALL-E-X
python3 launch-ui.py

チェックポイントファイルは個別でダウンロードしなくても入った。

------------------------