Ubuntu22.04のデスクトップ環境でAudioCraftを試したいので、Dockerを使用して実現します。下記のGitHubのクローンを作成して進めます。AudioWEBUIをセットアップすれば、AudioCraftを使用することができるようです。ほかにも、text to speech、RVC、Whisperも含んでいます。
実機(ローカル)にUbuntuはインストールしたばかりですが、DockerとDocker Composeをインストール済みです。さらにGPUをコンテナで使用するため、NVIDIA container toolkitをインストール済みです。
このGitHubの内容はhttps://github.com/gitmylo/audio-webuiを元にしてDockerで実現しています。
git clone https://github.com/LajaSoft/audio-webui-docker.git
プロジェクトに移動して、コンテナを起動します。
cd audio-webui-docker
docker compose up
audio-webui-docker-app-1 | https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license
audio-webui-docker-app-1 |
audio-webui-docker-app-1 | A copy of this license is made available in this container at /NGC-DL-CONTAINER-LICENSE for your convenience.
audio-webui-docker-app-1 |
audio-webui-docker-app-1 | /opt/nvidia/nvidia_entrypoint.sh: line 67: /app/run.sh: Permission denied
audio-webui-docker-app-1 | /opt/nvidia/nvidia_entrypoint.sh: line 67: exec: /app/run.sh: cannot execute: Permission denied
audio-webui-docker-app-1 exited with code 126
エラーメッセージは、/app/run.sh
が実行可能なパーミッションを持っていないことを示しています。これは、コンテナ内の/app/run.sh
ファイルが実行可能なパーミッションを持たないためです。
以下の手順で問題を解決できます。
- ローカルマシン上で、
run.sh
ファイルのパーミッションを確認します。これは、コンテナをビルドする前にローカルで実行する必要があります。 run.sh
に実行パーミッションを付与します。Ubuntuなので、ターミナルで次のコマンドを実行できます。
sudo chmod +x run.sh
しかし権限を変更しても同じエラーがなおりません。
コマンドで権限を変更したにもかかわらず、同じエラーが発生する場合、いくつかの考えられる原因と対処法を調べてきました。
- Docker キャッシュ: 以前にビルドしたイメージがキャッシュされている可能性があります。Docker キャッシュをクリアして、イメージを再ビルドしてみる。
docker compose build --no-cache
docker compose up
- Dockerfile の確認:
Dockerfile
でrun.sh
のパスやコピー方法が正しく設定されているか確認してみる。特にCOPY
コマンドでrun.sh
がコピーされる部分を確認してみる。 - ユーザー権限: コンテナ内でスクリプトを実行するユーザーが
run.sh
を実行する権限を持っているか確認してみる。必要であれば、Dockerfile
でユーザー権限を設定できます。 - エントリーポイント: エントリーポイント (
ENTRYPOINT
インストラクション) でスクリプトを実行する設定がされている場合、その設定が正しいか確認する。 - スクリプトの内容:
run.sh
スクリプトが依存する他のファイルやサービスが正しく設定されているかも確認する。 - デバッグ: より詳細な情報が必要な場合は、
run.sh
スクリプトの冒頭にデバッグ用のコード(例えばls -l /app
やwhoami
など)を追加して、コンテナのログに出力させてみる。
しかし、ほかに重要なコンテナはないので、次のコマンドで未使用、または不要なDockerオブジェクトをシステムから削除します。イメージも削除することにしました。
docker system prune
docker rmi $(docker images -q)
その後、次のコマンドを再実行します。
docker compose up
今度はうまくいきました。ブラウザでアクセスします。
AudioCraftができればいいと思っていましたが、他にも機能があるようです。テキストから音声ファイルを作成するText to Speechや、音声データから、文字起こししてくれるWhisperなどです。PCのスペックは、メモリ16GB、NVIDIAのグラボがGTX1060です。グラボの発売日が、2016年7月で古いパソコンですが動作しました。