自分のPCに音楽生成AIのAudiocraft(MusicGen)をインストール

本日は、以下のGitHubのページを参考に、Audiocraftをインストールします。pythonの仮想環境を使用するので、パソコンがぐちゃぐちゃになる心配はありません。
Pythonの仮想環境(venvvirtualenvなど)を使用する主な目的は、ホスト環境を「ぐちゃぐちゃ」にしないためです。仮想環境を使用すると、以下の利点が得られます:

  1. 環境の分離:仮想環境は、それぞれのプロジェクトやタスクごとに独立したPython環境を提供します。これにより、異なるプロジェクトで異なるライブラリのバージョンを使用する場合でも、それらが互いに干渉することなく動作します。
  2. ホスト環境の保護:システム全体のPython環境やライブラリを変更することなく、プロジェクトごとの依存関係を管理できます。これにより、システムのPython環境が「汚れる」ことを防ぎます。
  3. バージョンの問題の回避:特定のプロジェクトで古いライブラリのバージョンが必要な場合や、新しいバージョンのライブラリをテストする場合に、仮想環境を使うと容易にそれらのバージョンをインストール・管理できます。
  4. 移植性と再現性requirements.txtを使って仮想環境の依存関係をエクスポートすることで、他のマシンやチームメンバーとの間で環境を共有・再現することが容易になります。

したがって、仮想環境を適切に使用することで、ホスト環境を乱雑にすることなく、プロジェクトの依存関係を管理できます。

https://github.com/FurkanGozukara/Stable-Diffusion/blob/main/Tutorials/AI-Music-Generation-Audiocraft-Tutorial.md

Pythonのバージョンも重要になります。
Pythonについてvenvの仮想環境では、Pythonのバージョンはホストと同じですか?

上のお問いに対する回答は次になります。venvを使ってPythonの仮想環境を作成する場合、その仮想環境のPythonバージョンは通常、仮想環境を作成する際に使ったpythonコマンドのバージョンと同じになります。

たとえば、システムにPython 3.8とPython 3.9がインストールされている場合、どちらのバージョンでvenvを使うかによって仮想環境内のPythonバージョンが異なります。

現状では3.11.4がインストールされていました。venvを使用して仮想環境を作成する場合、その仮想環境内のPythonバージョンは、仮想環境作成時に使用したPythonのバージョンと同じになります。従って、ホストシステムでPython 3.11がインストールされている状態でvenvを使用すると、その仮想環境内でもPython 3.11が使用されます。

というわけで、pythonをダウングレードすることにします。インストーラーを使用してインストールした場合、現行のバージョンはWindows11では「インストールされているアプリ」から削除できます。

特定のバージョンのpythonを入手するため、以下の公式ページにいきます。

https://www.python.org/downloads/

Windowsのインストーラー版は、バージョンが3.10.11のものがあったので、こちらをダウンロードします。Recommendedと表示のある64bit版にしました。
インストール手順は割愛しますが、「add python.exe to path」にチェックを入れないと環境変数へ追加をしてくれないのであとあと困ります。PythonのWindowsインストーラーで「Add Python.exe to Path」というオプションにチェックを入れない場合、Pythonの実行ファイルへのパスはシステムの環境変数PATHに自動的に追加されません。この結果、コマンドプロンプトやPowerShellからpythonpipといったコマンドを直接実行することができなくなります。

さらにFFmpegがインストールされている必要があります。

https://minokamo.tokyo/2023/09/02/6129/

インストール完了後に、facebookresearch公式のGitHubのリポジトリのクローンをします。

https://github.com/facebookresearch/audiocraft

わかりやすいように、Cドライブ直下にフォルダを作成することにしました。作成したフォルダ内でクローンを作成します。ここではPowerShellを使用しました。

git clone https://github.com/facebookresearch/audiocraft

git: The term 'git’ is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Windows版のgitをインストールしていませんでした。次の方法で直接ファイルをダウロードします。ダウンロードしたファイルを解凍します。先に作成したフォルダに、解凍して現れたフォルダごと移動します。

Webインターフェイスを使用する:

  • GitHubなどのWebインターフェイスで、リポジトリのメインページに行き、「Code」ボタンをクリックします。
  • その後、「Download ZIP」というオプションをクリックして、リポジトリのZIPアーカイブをダウンロードします。
  • ZIPファイルをローカルで展開すれば、リポジトリの全ファイルにアクセスできます。

ただし、これらの方法はリポジトリの現在のスナップショットのみを取得します。Gitの強力なバージョン管理や履歴の追跡などの機能をフルに利用するには、Gitをインストールするのがベストです。

解凍して現れた、audiocraft-mainというフォルダ内で下記のコマンドを実行して仮想環境を作成します。

python -m venv test0

その後、フォルダの下の階層に移動します。

cd test0
cd Scripts

Pythonのvenvモジュールで作成された仮想環境をアクティベートします。

activate

しかし、下記のエラーが発生しました。

PS C:youtubeaudiocraft-maintest0Scripts> activate
activate: The term 'activate’ is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Suggestion [3,General]: The command activate was not found, but does exist in the current location. PowerShell does not load commands from the current location by default. If you trust this command, instead type: “.activate". See “get-help about_Command_Precedence" for more details.

PowerShellではコマンドが少し違うようです。以下のようにします。

PS C:youtubeaudiocraft-maintest0Scripts> .Activate

. を使用して、現在のディレクトリの Activate スクリプトを実行します。
もし、コマンドプロンプト (cmd) を使用していた場合は、以下のようにアクティベートできます。

C:youtubeaudiocraft-maintest0Scripts> activate

仮想環境を使用する前にactivateすることが必要です。このコマンドにより、仮想環境内のPythonインタープリタとパッケージがコマンドラインから利用されるようになります。

仮想環境のactivateコマンドの呼び出し方は、使用しているシェルやOSによって異なります。以下は一般的な方法です:

Windowsのcmd.exeの場合:

pathtoenvScriptsactivate

WindowsのPowerShellの場合:

.pathtoenvScriptsActivate

LinuxやmacOSのbash/shellの場合:

source path/to/env/bin/activate

これらのコマンドを実行することで、仮想環境がアクティベートされ、その環境内のPythonインタープリタとライブラリがデフォルトで使用されるようになります。そして、この状態でpip installなどのコマンドを実行すると、インストールされるパッケージは仮想環境内に格納されます。

アクティベートした仮想環境をデアクティベート(終了)する場合は、どのシェル・OSでもdeactivateコマンドを使用します。

次は、2つ上の階層に移動します。

(test0) PS C:youtubeaudiocraft-maintest0Scripts> cd ..
(test0) PS C:youtubeaudiocraft-maintest0> cd ..

バッチファイルは自分で作成することにしました。これをC:youtubeaudiocraft-maintest0に保存します。ファイル名は「test0.bat」としました。記述内容は以下の通りです。

@echo off

echo Installing packages
pip install -e .
pip uninstall torch -y
pip uninstall torchvision -y
pip uninstall torchaudio -y
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

echo Installing xformers
pip install -U --pre xformers

echo Activating Virtual Environment and Running Python Script
call .test0Scriptsactivate.bat
python .demosmusicgen_app.py --inbrowser

pause

test0内に、作成したバッチファイルがあるので、これを実行します

(test0) PS C:youtubeaudiocraft-main> test0.bat

しかし、エラーが発生しました。

test0.bat: The term 'test0.bat’ is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Suggestion [3,General]: The command test0.bat was not found, but does exist in the current location. PowerShell does not load commands from the current location by default. If you trust this command, instead type: “.test0.bat". See “get-help about_Command_Precedence" for more details.

PowerShellではデフォルトで現在のディレクトリからスクリプトや実行可能ファイルを直接実行することができません。PowerShellでは先のエラーと同様に、以下のコマンドを入力します。

.test0.bat

以下のメッセージが表示されますが、そのまま処理を待ちます。

DEPRECATION: ffmpy is being installed using the legacy 'setup.py install’ method, because it does not have a 'pyproject.toml’ and the 'wheel’ package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '–use-pep517’ option.

しばらくすると既定のブラウザが起動してMusicGenの画面が表示されます。

教育

Posted by admin