初めに
Sunoなど多くの楽曲生成サービスが出ていますが、ローカルで同じくらいの精度のものが出てきたということで触ってみます
ライセンスが学術目的のみ使用可能で商用利用は禁止されているため、注意が必要です。 対応言語は英語と中国のみです
開発環境
- Mac OS M4
- uv 0.9.x
環境構築
まずは uvの環境を作っていきます
uv python pin 3.12
次に pyproject.tomlを作成します
[project] name = "songbloom" version = "0.1.0" description = "Coherent Song Generation via Interleaved Autoregressive Sketching and Diffusion Refinement" readme = "README.md" requires-python = ">=3.10,<3.13" dependencies = [ "cn2an==0.5.22", "descript-audio-codec==1.0.0", "einops==0.8.0", "g2p-en==2.1.0", "huggingface-hub==0.24.6", "jieba-fast==0.53", "lightning==2.2.1", "nltk==3.8.1", "num2words==0.5.13", "numpy<2", "omegaconf==2.2.0", "pypinyin==0.51.0", "spacy==3.7.4", "torch==2.2.0", "torchaudio==2.2.0", "transformers==4.44.1", "vector-quantize-pytorch==1.14.8", "wordsegment==1.3.1", ] [[tool.uv.index]] url = "https://download.pytorch.org/whl/cpu"
依存関係をインストールします
uv sync
実行
推論は以下のようなコマンドで実行します
# 環境変数を設定 export PYTORCH_ENABLE_MPS_FALLBACK=1 export DISABLE_FLASH_ATTN=1 # 推論実行(float32必須、bfloat16は非対応) source set_env.sh uv run python infer.py --input-jsonl example/test.jsonl --device mps --dtype float32
実行する際にモデルを指定できますが、モデルは以下の通りです
| Name | Size | Max Length | Prompt type | 🤗 |
|---|---|---|---|---|
| songbloom_full_150s | 2B | 2m30s | 10s wav | link |
| songbloom_full_150s_dpo | 2B | 2m30s | 10s wav | link |
| songbloom_full_240s$^{[1]}$ | 2B | 4m | 10s wav | link |
| ... |