自分のPCにVALL-E Xをインストールして声優の声を真似する

スポンサーリンク

多言語テキスト読み上げ合成と音声クローン作成が可能なVALL-E Xをインストールします。その前に、Pythonの仮想環境とDockerについて、違いを記述します。

Pythonの仮想環境(venv)内でCUDAを直接インストールすることはできません。CUDAはシステムレベルのコンポーネントであり、ホストシステムにインストールする必要があります。

Pythonの仮想環境はPythonパッケージとその依存関係を隔離するために使用されますが、CUDAのようなシステムレベルのソフトウェアやドライバをインストールまたは管理するためには使用できません。

CUDAを使用するためには以下の手順を実行する必要があります:

  1. ホストシステムにCUDAをインストールする: CUDA Toolkitのインストールガイドに従い、ホストシステムにCUDAをインストールします。インストール後、環境変数を適切に設定することで、CUDAツールキットとその依存関係にアクセスできるようになります。
  2. Python仮想環境を作成する: CUDAがインストールされたホストシステムでPythonの仮想環境を作成します。
  3. 仮想環境内でCUDAをサポートするパッケージをインストールする: 仮想環境内で、CUDAを利用するPythonパッケージ(例えば、TensorFlowやPyTorchなど)をインストールします。
  4. CUDAが正しく機能していることを確認する: Pythonスクリプトまたはノートブックを使用して、CUDAが正しく機能していることを確認します。このステップは、特定のディープラーニングフレームワークの公式ドキュメントに記載されているテストスクリプトを使用して実行できます。

このプロセスを終えると、仮想環境内からCUDAを利用できるようになります。

DockerはWSL 2をバックエンドとして利用しており、Linuxディストリビューション上で動作するコンテナは、そのディストリビューションのリソースと機能にアクセスできます。したがって、LinuxディストリビューションにCUDAをインストールすることで、Dockerコンテナ内のアプリケーションもCUDAの機能を利用できるようになります。

以下の手順で進めることができます:

  1. WSL 2にLinuxディストリビューションをインストールする: まず、WSL 2に適切なLinuxディストリビューションをインストールします。
  2. LinuxディストリビューションにCUDAをインストールする: 次に、LinuxディストリビューションにCUDAをインストールします。
  3. DockerをWSL 2モードでセットアップする: Docker Desktop for Windowsをインストールし、WSL 2モードを有効にします。
  4. Dockerコンテナを作成する: あなたのプロジェクトに適したDockerイメージを基にしてDockerコンテナを作成します。
  5. CUDA対応のアプリケーションをコンテナにデプロイする: コンテナにCUDA対応のアプリケーションをデプロイし、CUDA機能を利用してアプリケーションを実行します。

注意点としては、CUDAを利用するためには、DockerコンテナがGPUにアクセスできるようにする必要があります。これは、Dockerの--gpusオプションを使用して行えます(Docker 19.03以降で利用可能)。

Python 仮想環境 (venv)

  • 目的:Pythonパッケージとその依存関係をプロジェクト単位で隔離する。
  • 隔離レベル:Pythonパッケージとそのバージョン。
  • 使用ケース:異なるPythonプロジェクトで異なるパッケージバージョンを管理する。
  • セットアップ:比較的簡単にセットアップできる。

Docker コンテナ

  • 目的:アプリケーションとその依存関係全体(OS、システムライブラリ、環境変数などを含む)を隔離し、ポータブルなコンテナを作成する。
  • 隔離レベル:OSのレベルまで、環境全体をコンテナ内に包含する。
  • 使用ケース:アプリケーションの環境を完全にコントロールし、どのシステムでも同じ動作を保証する。
  • セットアップ:環境の構築と管理がやや複雑になる場合があります。

Python 仮想環境でのCUDA利用:

  • Python仮想環境はホストシステムのリソース(例:CUDAドライバー)を利用できますが、これらのシステムレベルの依存関係を自身内に封じ込めることはできません。

DockerでのCUDA利用:

  • Dockerコンテナでは、ホストシステム上またはWSL 2のLinuxディストリビューション上にインストールされたCUDA環境を利用できます。また、特定のNVIDIA GPUドライバーとCUDAバージョンをコンテナ内に封じ込めることも可能です。

以上がpythonの仮想環境とDockerの違いです。下記のGitHubを参考にVALL-E-Xのインストールを進めます。

GitHub - Plachtaa/VALL-E-X: An open source implementation of Microsoft's VALL-E X zero-shot TTS model. Demo is available in https://plachtaa.github.io
An open source implementation of Microsoft's VALL-E X zero-shot TTS model. Demo is available in - GitHub - Plachtaa/...

今回はWindows11にCUDAツールキットをインストールしていないので、pythonの仮想環境で実現します。まずは、GitHubに記載してあるVALL-E-Xが動作する条件を構築します。

Install with pip, recommended with Python 3.10, CUDA 11.7 ~ 12.0, PyTorch 2.0+

以下のページでCUDA Toolkit 11.8をダウンロードして、Windows11にインストールしておきました。11.8をよく見かけるのでこのバージョンにしました。

CUDA Toolkit 11.8 Downloads

次に適当なフォルダ内でクローンを作成します。

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

‘git’ は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

Windows版のgitをインストールしていませんでした。下記のページでダウンロードして、インストールします。

Git for Windows
We bring the awesome Git VCS to Windows

Git CMDを起動して、コマンド入力をします。

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

pythonの仮想環境を作成して、所定のディレクトリに移動します。

python -m venv vall
cd vall
cd Scripts

仮想環境を活性化(アクティベート)します。

activate

仮想環境内で2つ上の階層に戻ります。

(vall) C:\youtube\VALL-E-X\vall\Scripts>cd ..
(vall) C:\youtube\VALL-E-X\vall>cd ..

PyTorchをインストールしますが、ここは重要です。WindowsにCUDA Toolkit 11.8をインストールしてあるので、仮想環境もそれに合わせます。

Start Locally
Start Locally

以下の2つのコマンドは異なる目的を持っています。それぞれのコマンドの目的を理解することで、なぜ両方が必要なのかがわかります。

PyTorchと関連パッケージのインストール:

(vall) C:\youtube\VALL-E-X>pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

このコマンドはPyTorchおよびそれに関連するパッケージを特定のバージョンでインストールします。特定のCUDAバージョン(この場合はCUDA 11.8)に依存する特定のPyTorchビルドを指定しています。

プロジェクトの依存関係のインストール:

(vall) C:\youtube\VALL-E-X>pip install -r requirements.txt

このコマンドは、プロジェクトが動作するために必要なすべてのPythonパッケージとその特定のバージョンをインストールします。これにはtorch, torchvision, torchaudioも含まれる可能性がありますが、他にも多くのパッケージがあります。

したがって、最初のコマンドでPyTorch関連のパッケージをインストールした後、2番目のコマンドでプロジェクトの他の依存関係をインストールします。

ただし、requirements.txtファイルがtorch, torchvision, torchaudioの適切なバージョンを指定している場合は、最初のコマンドは不要になるかもしれません。すなわち、requirements.txt内の指定がCUDA 11.8に対応しているバージョンを指定している場合は、最初のコマンドなしで正しいバージョンがインストールされます。

今回のケースでは、requirements.txtには特定のバージョンが指定されていないようなので、最初に特定のPyTorchビルドをインストールする必要がありました。この後にrequirements.txtを使って残りの依存関係をインストールします。

GPUが使用可能かどうか確認するため、以下のスクリプトを作成しました。test.pyと名前を付けて保存しておきます

import torch

# CUDAが利用可能かどうかを確認します
if torch.cuda.is_available():
    # GPUの詳細を表示します
    print(torch.cuda.get_device_name(0))
else:
    print("CUDA is not available.")
python test.py

仮想環境内のソフトウェアがホストシステムのGPUを正しく利用できると確認が取れました。メインのスクリプトを実行します。

python launch-ui.py

しばらくすると、ブラウザが起動してVALL-E Xが表示されます。

タイトルとURLをコピーしました