YuE2:編集可能なスコアとAIエージェントによるオープンな音楽生成
YuE2は、歌詞とスタイルプロンプトを編集可能な楽譜に変換し、最先端品質の楽曲、ゼロショット・カバー、エージェント主導の改訂を実現します。
YuE2:編集可能なスコアとAIエージェントによるオープンな音楽生成
多くのAI音楽生成サービスは、作曲プロセスを単一のプロンプトから音声を生成する処理の背後に隠しています。便利である一方、制御は難しくなります。ハーモニーが合わない、メロディーがずれる、アレンジを変更したいといった場合、通常はすべてを再生成し、より良い結果を期待するしかありません。
YuE2は、異なるアプローチを取ります。まず、メロディーとコードの情報を含む、明示的で編集可能な音楽プランを作成し、その後、そのプランを完全なステレオ録音にレンダリングします。その結果、単なる作曲だけでなく、ゼロショット・カバー、スコアベースの編集、エージェントによるワークフローにも対応した、オープンな音楽生成システムが実現します。
YuE2の特徴
YuE2は、相互に関連する3つのワークフローをサポートします。
- 作曲: 歌詞とスタイルプロンプトを入力し、スコアと完成した楽曲を生成します。
- カバー生成: 元の録音を採譜し、メロディーを保持したまま新しいスタイルで再解釈します。
- エージェントによる編集: 人間またはAIエージェントが、別のバージョンをレンダリングする前に、ハーモニー、メロディー、歌詞、テンポ、楽器編成、曲構成を改訂できます。
中心にあるのは、ホワイトボックス型の音楽パイプラインという考え方です。音声を不透明な最終成果物として扱うのではなく、YuE2は中間の作曲データを公開し、確認、再生、変更、再生成できるようにします。
リポジトリの報告によると、YuE2はWildSongBenchにおいてSuno v5およびv6と競合できる性能を示しています。best-of-8設定では 6.9632 SongBench Avg に到達し、評価された設定の中で最高の平均値となっています。ベンチマークには192個のプロンプトが含まれますが、著者らは上位システム間の差が小さいため、統計的有意性は確立されていないと述べています。
歌詞から編集可能なスコアへ
アーキテクチャは、自己回帰/非自己回帰混合型のTransformerバックボーンに、フローマッチングと変分オートエンコーダーを組み合わせています。
- モデルは、記号的なプランと意味的な音楽トークンを自己回帰的に予測します。
- 音響潜在表現はフローマッチングで生成されます。
- VAEがそれらの潜在表現を48 kHzのステレオ音声にデコードします。
段階的なAPIによって、これらの処理が可視化されます。
plan() → generate_semantic() → synthesize() → decode()
この分離は開発者にとって便利です。正確なプランを再利用したり、デコーダーを選択したり、中間成果物を保持したり、作曲データ自体を破棄せずに複数の音声出力を比較したりできます。
作曲、カバー、編集の違いは、主にスコアの出所にあります。
- YuE2は歌詞とスタイルからスコアを生成します。
- SheetSage2は元の録音をメロディースコアに採譜します。
- ユーザーまたはエージェントは既存のABC形式の楽曲を編集します。
YuE2をローカルでインストールして実行する
現在のクイックスタート環境は、Linux、Python 3.12、BF16をサポートする24 GB VRAMのNVIDIA GPUを対象としています。モデルファイルは初回使用時にHugging Faceからダウンロードされ、デフォルトのパイプラインは非量子化の48 kHzステレオ音声を生成します。
git clone https://github.com/multimodal-art-projection/YuE.git
cd YuE
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install .
python examples/generate.py \
--output outputs/first-song
生成されたディレクトリは、単なる音声出力ではありません。スコア、意味トークン、音響潜在表現、生成設定、モデルの識別情報が保持されます。これらの成果物を保持することで、実験の再現性が高まり、後から編集するための素材にもなります。
Pythonインターフェースも同様に簡潔です。
import json
from pathlib import Path
from yue2 import YuE2Pipeline
request = json.loads(
Path("examples/song.json").read_text(encoding="utf-8")
)
with YuE2Pipeline.from_pretrained(
"m-a-p/YuE2-3B",
device="cuda",
) as pipe:
song = pipe(**request)
song.save_artifacts("outputs/my-song")
print(song.truncated)
適切な生成モードを選ぶ
YuE2は、記号的なプランニングの量を制御するcot設定を公開しています。
| 設定 | 動作 |
|---|---|
cot="full" |
編集可能なメロディーとコードのプランを生成します。新しい曲ではこれがデフォルトです。 |
cot="melody" |
メロディープランを使用し、伴奏は自由に生成します。カバーに推奨されます。 |
cot="off" |
歌詞とスタイルから直接生成します。 |
abc=...を使ってABCスコアを指定することもできます。フルスコア生成ではハーモニーをより細かく制御できる一方、メロディーのみの条件付けでは、伴奏を対象スタイルに合わせて自由に適応させられます。
ゼロショット・カバーを生成する
カバーワークフローは採譜から始まります。SheetSage2を使って元のメロディーをABC記譜法で抽出し、採譜結果を確認したうえで、新しい歌詞や異なる対象スタイルをYuE2に入力します。
カバーでは、リポジトリはcot="melody"とコード記号を含まないスコアを推奨しています。これにより本質的なメロディーを維持しながら、YuE2は指定されたジャンルに合う新しい伴奏を作成できます。
from pathlib import Path
from yue2 import YuE2Pipeline
with YuE2Pipeline.from_pretrained(
"m-a-p/YuE2-3B",
device="cuda",
) as pipe:
cover = pipe(
style=(
"English, jazz-funk, warm lead vocal, Rhodes, "
"bass and drums"
),
lyrics=Path("cover-lyrics.txt").read_text(encoding="utf-8"),
abc=Path("cover-score/score.abc").read_text(encoding="utf-8"),
cot="melody",
seed=42,
)
cover.save_artifacts("outputs/cover")
報告されているゼロショット・カバー評価は注目に値します。948作品を対象とした評価で、フルスコアのYuE2は 0.647 CLEWS mAP に到達したのに対し、スコアなしでは 0.006 でした。これはカバー専用にファインチューニングされたモデルではなく、汎用の生成モデルによって実現されています。メロディーのみのカバーは、アレンジを変更する自由度が高い代わりに、元音源への忠実度が一部低下します。
SheetSage2は別の環境で実行され、MERT2エンコーダーを自動的に読み込みます。リポジトリには、完全な採譜・生成ガイドに加え、録音を処理せずにスコア条件付き生成を行うためのオリジナルメロディーの例も含まれています。
無闇に再生成せず作曲を編集する
記号化されたスコアは、YuE2における開発者向けの最も重要なインターフェースです。まずプランを出力します。
import json
from pathlib import Path
from yue2 import YuE2Pipeline
request = json.loads(
Path("examples/song.json").read_text(encoding="utf-8")
)
with YuE2Pipeline.from_pretrained(
"m-a-p/YuE2-3B",
device="cuda",
) as pipe:
plan = pipe.plan(**request)
plan.save("outputs/plan")
outputs/plan/score.abcをedited.abcなどの編集可能なファイルにコピーします。その後、ハーモニー、メロディー、テンポ、楽器編成、曲構成を手動またはエージェントで変更できます。変更したスコアは、次のようにレンダリングします。
python examples/generate.py \
--request examples/song.json \
--abc-file edited.abc \
--cot full \
--output outputs/edited
これは波形を保持した編集ではありません。YuE2は編集された作曲データから新しい完全な録音を生成し、記号上の変更以外の元音声を保持するわけではありません。これは、プロダクションワークフローを設計したり、バージョンを比較したりする際に重要な違いです。
エージェントによる音楽編集
リポジトリには、SKILL.md形式のスキルディレクトリをサポートするエージェント向けに、skills/yue2-music/パッケージが含まれています。このパッケージはエージェントに次の操作を教えます。
- 歌詞とスタイルプロンプトから曲を生成する。
- 録音を採譜してカバーを作成する。
- ABCスコアを編集する。
- 音楽的な不変条件を確認する。
- 試聴比較を整理する。
Pythonランタイムはpip install .で別途インストールします。スキルパッケージをインストールしても、モデル環境の代わりにはなりません。
エージェントへの有用な依頼例は次のとおりです。
yue2-musicスキルを使って、英語のピアノポップ曲を作成してください。元の音声とスコアは保持してください。ジャズハーモニーを使った2つ目のバージョンを作り、ボーカルメロディーと歌詞の順序を維持し、比較できるように両方のバージョンを提示してください。
プロジェクトでは、The Last Trainを使ってこのような対話を実演しています。9つの編集ステップと14のバージョンを通じて、中国語ポップから英語ジャズへと変化し、新しいハーモニーとサックスソロも加えられています。各バージョンは、会話、スコア、プロンプト、歌詞と並べて試聴できます。
WildSongBenchの結果
報告されたベンチマークでは、192個のWildSongBenchプロンプトとベンチマーク用デコーダーYuE2-Vae-legacyが使用されています。標準のYuE2は2候補から選択し、best-of-8は8候補から選択します。
| システム/設定 | SongBench Avg | AudioBox PQ | MuLan | PER |
|---|---|---|---|---|
| YuE2 best-of-8 | 6.9632 | 8.2714 | 0.5051 | 9.79% |
| Mureka 9 | 6.9377 | 8.0226 | 0.4394 | 11.69% |
| Suno v5 | 6.8721 | 8.1698 | 0.5428 | 8.10% |
| YuE2 | 6.7316 | 8.2598 | 0.5068 | 8.44% |
| Suno v5.5 | 6.7150 | 8.1955 | 0.5089 | 5.96% |
| Suno v4.5 | 6.6995 | 8.2541 | 0.5022 | 5.80% |
| Suno v6 | 6.5562 | 8.1296 | 0.4916 | 7.58% |
| Suno v6 Wild | 6.4195 | 8.1785 | 0.4999 | 7.45% |
| LeVo 2 | 6.3247 | 8.3966 | 0.3542 | 26.12% |
| MiniMax Music 2.6 | 6.3222 | 8.1711 | 0.4251 | 24.55% |
| MiniMax Music 3 | 6.2830 | 8.2825 | 0.3928 | 6.27% |
| HeartMuLa | 6.2483 | 8.2933 | 0.3823 | 10.71% |
| Muse | 6.0349 | 8.0517 | 0.3937 | 33.42% |
| ACE-Step 1.5 | 6.0118 | 8.0518 | 0.4372 | 7.46% |
| DiffRhythm 2 | 5.2428 | 7.9782 | 0.3782 | 18.41% |
| YuE 1 | 4.9165 | 7.8683 | 0.2623 | 36.38% |
| SongBloom | 4.2350 | 8.1539 | 0.2697 | 19.19% |
この表は、単一のランキングではなく、複数指標による比較として読むべきです。SongBench AvgではYuE2 best-of-8が有利ですが、個別の指標では他のシステムが上回っています。著者らは、ランキングや小さな差を統計的有意性の証拠として扱うべきではないと明確に注意しています。
関連モデルとリソース
YuE2は、より広範な音楽AIスタックの一部です。
- YuE2-3B: 生成、記号的プランニング、カバー、編集。
- YuE2-Vae: デフォルトの生成および試聴用デコーダー。
- YuE2-Vae-legacy: 報告されたベンチマークプロトコルで使用されたデコーダー。
- SheetSage2: 音声からスコアへの採譜。
- MERT-v2-FullSong: SheetSage2で使用されるフルソング表現。
- MERT-v2-30s: 短い録音用の表現。
- WildSongBench: 評価用プロンプトとベンチマークリソース。
通常の生成ではMERT2の特徴抽出は任意です。YuE2では、別途MERT2モデルをダウンロードする必要はありません。
ライセンスと実用上の考慮事項
現在のリポジトリに含まれる公式コード、ドキュメント、エージェントスキルは、Apache 2.0でライセンスされています。モデルの重みは別途 CC BY-NC 4.0でライセンスされ、サードパーティ製コンポーネントにはそれぞれの元のライセンスが適用されます。アーカイブされたYuE-v1ブランチには元のライセンスが保持され、古いyue2-v0.1.6アーカイブにも同梱ライセンスが残されています。
この区分は、商用展開において重要です。Apache 2.0はソースコードを対象としますが、モデルの重みやサードパーティ製アセットの商用利用権を自動的に付与するものではありません。製品を出荷したり、生成コンテンツを配布したりする前に、適用されるすべてのライセンスを確認してください。
YuE2が重要な理由
YuE2の主な貢献は、単なる新しいテキスト・トゥ・ソングのチェックポイントではありません。生成音楽のための、より制御しやすい抽象化を提案している点にあります。つまり、記号で作曲し、音で表現するという考え方です。スコアによってシステムの確認が容易になり、決定論的または半決定論的な実験が可能になり、人間とエージェントに共通のインターフェースが提供されます。
開発者にとって、これはいくつかの実用的なワークフローを開きます。アレンジのバリエーションを一括レンダリングすること、音楽的な不変条件に照らして編集を評価すること、対話型のソングライティングツールを構築すること、各音声バージョンの背後にある推論の成果物を保持することなどです。24 GBのBF16対応GPUと公開モデルがあれば、YuE2は歌詞プロンプトから編集可能で再現性のある音楽制作へ至る、非常にオープンな道筋を提供します。