音楽生成AIは、近年急速に発展を遂げています。
その中でもStability AIが開発したStable Audio Open 1.0は注目に値するオープンソースモデルです。
このモデルは、テキストプロンプトから最長47秒のステレオオーディオを生成することができます。
短いオーディオサンプルやサウンドエフェクト、プロダクション要素の生成に最適化されています。
本記事では、Stable Audio Open 1.0のインストール方法と動作確認について解説します。
本記事の内容
- Stable Audio Open 1.0とは?
- Stable Audio Open 1.0のインストール
- Stable Audio Open 1.0の動作確認
それでは、上記に沿って解説していきます。
Stable Audio Open 1.0とは?
Stable Audio Open 1.0は、Stability AIが開発したオープンソースの音楽生成AIモデルです。
このモデルは、テキストプロンプトから最長47秒のステレオオーディオを44.1kHzで生成します。
システムは3つの主要コンポーネントで構成されています。
まず、オートエンコーダが波形を圧縮し、扱いやすいシーケンス長にします。
次に、T5ベースのテキスト埋め込みを用いてテキストを条件付けします。
最後に、トランスフォーマーベースの拡散(DiT)モデルがオートエンコーダの潜在空間で動作します。
このモデルは短いオーディオサンプルやサウンドエフェクト、プロダクション要素の生成に最適化されています。
なお、Stable Audio 2.0は有料版のサービスとなります。
商用利用のライセンスやより長いオーディオクリップの生成など、追加の高度な機能を提供します。
Stable Audio 2.0はプロフェッショナル向けに設計されており、商業的なプロジェクトに適しています。
Stable Audio Open 1.0のインストール
PyTorchとstable-audio-toolsが必要となっています。
PyTorchに関しては、GPU版のインストールが推奨されています。
今回は、以下のコマンドでGPU版PyTorchをインストールしています。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
そして、stable-audio-toolsは以下のコマンドでインストール可能です。
pip install stable-audio-tools
インストールは、これだけとなります。
モデルに関しては、動作確認時に自動的にダウンロードされます。
Stable Audio Open 1.0の動作確認
上記ページにサンプルコードが記載されています。
それを実行して、動いた人はラッキーです。
ImportError: cannot import name 'packaging' from 'pkg_resources'
私の環境(Windows、Python 3.10)では、上記のエラーが出ました。
そのメッセージの中にclip.pyが出てくるはずです。
このファイルを以下のように修正します。
clip/clip.py内でのインポート修正
# 変更前 from pkg_resources import packaging # 変更後 import packaging
再度、実行しましょう。
それで動いたらラッキーです。
サンプルコード自体に問題があるようです。
仕方がないので、ChatGPTに修正してもらいました。
その結果が、以下。
import torch import torchaudio from einops import rearrange from stable_audio_tools import get_pretrained_model from stable_audio_tools.inference.generation import generate_diffusion_cond device = "cuda" if torch.cuda.is_available() else "cpu" # Download model model, model_config = get_pretrained_model("stabilityai/stable-audio-open-1.0") sample_rate = model_config["sample_rate"] sample_size = model_config["sample_size"] model = model.to(device) # Set up text and timing conditioning conditioning = [{ "prompt": "128 BPM tech house drum loop", "seconds_start": 0, "seconds_total": 30 }] # Generate stereo audio output = generate_diffusion_cond( model, steps=100, cfg_scale=7, conditioning=conditioning, sample_size=sample_size, sigma_min=0.3, sigma_max=500, sampler_type="dpmpp-3m-sde", device=device ) # Rearrange audio batch to a single sequence output = rearrange(output, "b d n -> d (b n)") # Peak normalize, clip, convert to int16, and save to file output = output.to(torch.float32).div(torch.max(torch.abs(output))).clamp(-1, 1).mul(32767).to(torch.int16).cpu() torchaudio.save("output.wav", output, sample_rate)
上記コードを実行すると、同じディレクトリ上にoutput.wavが作成されます。
このファイルを確認できれば、動作成功と言えます。
No module named 'flash_attn'
上記のモジュールがないと言われますが、12秒程度で音声が作成されます。
なお、GPUメモリが24GBのマシンで動かしています。