音楽生成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のマシンで動かしています。
 
  
  
  
  

