やること&結論
- MusicGenをノートパソコンのCPUで動かし、音楽を生成する。モデルを量子化してみる。
- 量子化する意味はなかった。10秒の音楽で生成時間100秒。30秒の音楽は5分くらいかかる。
使用したモデル
環境
CPU: Ryzen 5 5500U, Mem: 16GB
Win11, Python 3.10.6, torch 2.4.1
コード
ソース元そのままです。必ず仮想環境を作ること。適当な空のフォルダを作り、一行ずつコマンドプロンプトに張り付け実行する
python -mvenv venv
venv\scripts\activate.bat
pip install --upgrade pip
pip install --upgrade transformers scipy
python run.py
from transformers import pipeline
import scipy
import torch
import time
start = time.time()
synthesiser = pipeline("text-to-audio", "facebook/musicgen-small")
# モデルを量子化する意味はない
#synthesiser.model = torch.quantization.quantize_dynamic(
# synthesiser.model, {torch.nn.Linear}, dtype=torch.qint8
#)
music = synthesiser(
"lo-fi music with a soothing melody",
forward_params={"do_sample": True, "max_length":512} #256: 5秒、512:10秒、デフォルト30秒
)
scipy.io.wavfile.write("musicgen_out.wav", rate=music["sampling_rate"], data=music["audio"])
print(time.time() - start)
実行時は仮想環境に入って
C:\Users\user\Desktop\music_gen>venv\scripts\activate.bat
(venv) C:\Users\user\Desktop\music_gen>python run.py
時間
forward_paramsのmax_lengthを指定しない場合30秒の音声ファイルが5分程度で出力される。
"max_length":512おおよそ10秒の音声ファイルの出力に108秒
"max_length":256おおよそ5秒の音声ファイルの出力に41秒
量子化しても1秒も変わらなかった。これはSmallモデルなのですでに量子化されているのか、プログラムに誤りがあるのか何なのか不明。
出力
Qiitaはwav,mp3,webmをアップロードできないらしい。