🎼

Stable Audio Open 1.0を使ってみた

2024/06/17に公開

キービジュアル

はじめに

StabilityAIが新しい音声生成モデルをリリースしたようなので早速使ってみました。

https://huggingface.co/stabilityai/stable-audio-open-1.0

このモデルを利用して「スタバのBGMのような、リラックスムードの曲を作って」とお願いして作ってもらったのが以下の音声です。
わりとリラックスムードのBGMになっていると思います。

今回作成するのに利用したGoogle Colabも公開しています。さっと試したい方はリンクから試してみてください。

環境

  • Google Colab T4(Free)

開発手順

今回実装(というほどのものでもないけど・・)した内容を紹介します。

パッケージのインストール

まずは必要なパッケージをインストールします。インストールはシンプルに以下のコマンドを実行するだけです。

stable-audio-toolsのインストール
!pip install stable-audio-tools

Hugging Faceのログイン

まずは必要なパッケージをインストールします。

huggingface_hubのインストール
!pip install huggingface_hub

次に、実際にログインを行います。

Hugging Faceへのlogin
import os

from huggingface_hub import login
from google.colab import userdata

# Hugging Faceにログイン
hugging_face_token = userdata.get('HUGGING_FACE_TOKEN')
login(token=hugging_face_token)

トークンが正常に設定されると無事にログインが完了します。

モデルのダウンロード

モデルカードのコード例に従ってモデルをダウンロードします。

モデルのダウンロード
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
from huggingface_hub import login

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)

音声の生成

モデルのダウンロードが終わったらいよいよ音声を生成することができます。プロンプトには作ってもらいたい内容を記載して実行してください。

音声の生成
prompt = "Playing relax mood BGM like Starbacks coffee store." # @param {type:"string"}

# Set up text and timing cooditioning
conditioning = [{
    'prompt': prompt,
    'seconds_start': 0,
    'seconds_total': 20
}]

# 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 というファイルが生成されます。ファイルをダブルクリックするとダウンロードできるので、ダウンロードして聞いてみてください。

生成されたファイル

最後に

Google Colabも無料枠ですし、生成AIのモデルも無料です。全部無料で、品質もそれなりにあるBGMが作れてしまうのは驚きですね。
最近登場したLuma Dream Machineの動画生成もすごかったですし、今後こうした生成AIが登場してくると初期のモックなどのイメージ固めはかなり高速になりそうです。

ぜひみなさんも色々触ってみてください!

エンジニア絶賛募集中!

MESONではUnityエンジニアを絶賛募集中です! XRのプロジェクトに関わってみたい! 開発したい! という方はぜひご応募ください!
また最近ではAIの活用も積極的に進めており、XR x AIに興味があるエンジニアの方もぜひご応募ください!

MESONのメンバーページからご応募いただくか、TwitterのDMなどでご連絡ください。

書いた人

えど

比留間 和也(あだな:えど)

カヤック時代にWEBエンジニアとしてリーダーを務め、その後VRに出会いコロプラに転職。 コロプラでは仮想現実チームにてXRコンテンツ開発に携わる。 DAYDREAM向けゲーム「NYORO THE SNAKE & SEVEN ISLANDS」をリリース。その後、ARに惹かれてMESONに入社。 MESONではARエンジニアとして活躍中。
またプライベートでもAR/VRの開発をしており、インディー部門でTGSに出展など公私関わらずAR/VRコンテンツ制作に精を出す。プライベートな時間でも開発しているように、新しいことを学ぶことが趣味で、最近は英語を学んでいる。

GitHub / Twitter

MESON Works

MESONの制作実績一覧もあります。ご興味ある方はぜひ見てみてください。

MESON Cases

Discussion