ローカル音楽生成

YuE2ローカル音楽生成ガイド:歌詞からボーカル曲とアレンジを作る

YuE2で歌詞からボーカルと伴奏のある曲を作り、楽譜を修正する手順を紹介します。公式の開始条件はLinux、BF161対応のNVIDIA GPU2、24GB VRAM3です。韓国語の歌唱は短い歌詞で先に確認してください。

実行条件と要点

YuEには旧版v1と、現在のリポジトリ標準であるYuE2があります。このガイドではLinuxと24GBのNVIDIA GPUを使い、YuE2で歌詞から曲を作り、楽譜を直す方法を説明します。v1には日本語・韓国語チェックポイントがあります。YuE2のREADMEは多言語に触れますが、韓国語専用チェックポイントや評価は確認できないため、短い試作から始めてください。

  • リポジトリの現行mainブランチはYuE2です。公式の開始条件はLinux、Python 3.12、BF16対応NVIDIA GPU、24GB VRAMです。
  • fullはメロディーとコード、melodyはメロディーのみを計画し、offは記号的な計画を省きます。生成処理は計画、意味トークン、音響潜在表現、VAEデコードに分かれています。
  • コードとモデル重みのライセンスは異なります。個人制作者に認められた出力の収益化許可も、入力素材・声・肖像などの権利を与えるものではありません。

まずYuE v1と現行YuE2を区別する

リポジトリのURLは同じですが、mainブランチのREADMEはYuE2の説明に切り替わっています。以前のYuEのコード・文書・ライセンスはYuE-v1ブランチに保存されているとREADMEに記載されています。

古い導入記事の依存関係、GPUメモリ要件、チェックポイント4名を現行手順に混ぜないでください。このページのコマンドとAPI5はYuE2向けです。

旧YuEを再現する場合は、YuE-v1ブランチ、日本語・韓国語チェックポイントの系列、重みの利用条件を別途確認してください。

YuE2は歌詞とスタイルから楽譜を計画し、その計画をもとに曲全体を作ります。標準出力はボーカルと伴奏を含む48kHzステレオ音声です。初回にはモデルファイルをダウンロードするため、容量と通信時間を見込んでください。生成した楽譜を自分で直す手順も扱います。

GPUとOSの条件を確認する

公式quick startの前提はLinux、Python 3.12、BF16対応NVIDIA GPU、24GB VRAMです。READMEでは量子化6なしで48kHzステレオを生成すると説明されています。導入前にGPUの型番とVRAMを確認し、システムRAM7とストレージにも余裕を持たせてください。24GB未満のカードは文書で案内された標準構成の範囲外です。メモリ不足による失敗は、モデル品質や速度のベンチマーク結果ではありません。

公式READMEとHugging Faceのquick startはNVIDIA CUDA8経路を説明しています。Apple SiliconのMetal、AMD ROCm、Windowsネイティブ実行は対応する導入先として記載されていません。別の端末で試す場合は最新のupstream文書を確認し、個別構成として扱ってください。

Python環境を分けて導入し、最初の曲を作る

Python 3.12を用意し、新しい仮想環境9に公式リポジトリを導入します。PyTorch10やCUDAの依存関係が他の音楽ツールのパッケージと衝突する可能性があるため、環境を分けると管理しやすくなります。以下はリポジトリREADMEのquick startに沿ったコマンドです。導入後、付属のリクエスト例で最初の生成を試します。モデル重みはパッケージに含まれず、初回実行時にダウンロードされます。

リクエストファイルを指定しない基本CLI11は、リポジトリの既定リクエストを使います。前の結果を上書きしないよう、新しい出力先を指定してください。初回のダウンロードが終わったらaudio.flacを聴きます。出力フォルダにはscore.abc12、設定、途中の生成物も保存されます。途中で止まったりtruncatedと記録されたりした場合は、完成した曲と誤認しないよう状態を残してください。

YuE2を取得してインストール
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 .
Linuxで新しい仮想環境を有効にして実行します。
最初の曲を生成
python examples/generate.py --output outputs/first-song
初回実行ではモデル重みも取得するため、通信と空き容量が必要です。

歌詞曲・ボーカル曲とインスト生成の範囲

YuE2の主な生成例では、歌詞とスタイルからボーカルと伴奏のある曲全体を作ります。スタイルにはジャンル、楽器、ボーカルの特徴、言語、テンポを簡潔に書き、歌詞には[Verse]や[Chorus]などのタグで構成を示します。

「ソウルフルな低めのリード、ゆっくりしたネオソウル、Rhodesとベース、82 BPM13」のように矛盾しない手がかりを与えると意図を確認しやすくなります。ただし、声質やテンポの指定に正確に従うことや、歌詞を一語も落とさず歌うことは保証されません。

ボーカルなしの伴奏が必要なら、まずこの違いを理解してください。READMEと標準例は歌詞からボーカル曲を作ることに焦点を当てています。「instrumental」とスタイルに書けば常に声が消えるのか、歌詞なし専用モードが公式対応なのかはREADMEで明記されていません。純粋なインストが必要なら、短い曲で声が混ざらないか確認してください。無声であることが制作要件なら、ボーカル分離や別の専用生成経路も用意します。

歌詞シートの横にジャンル・テンポ・楽器・ボーカルの特徴を書いたスタイルメモがある作業机
歌詞とスタイルを分けて書くと、歌う内容と編曲の方向を個別に確認できます。

韓国語テキストの受付と歌唱品質を分けて確かめる

YuE2のREADME冒頭には「All languages」とあり、公開例には英語と中国語の曲があります。一方、モデルカードの言語タグは中国語と英語で、韓国語専用チェックポイントや品質評価は確認できません。多言語という案内やタグだけでは、韓国語歌唱の品質は確定できません。旧YuE v1には日本語・韓国語チェックポイントがあります。版を混同せず、YuE2では短い歌詞で発音や音節の長さを試聴してください。

長い曲ではなく、韓国語歌詞を1~2行から試します。文字の脱落や置き換え、終声と連音の聞こえ方、拍に合わせて母音が伸びたり音節がまとまったりするかを記録します。同じ試験に英語や中国語の例を混ぜると、確認したい点が分かりにくくなります。韓国語が必須要件なら、音域やテンポを変えて何度も聴き、利用前に人が確認して必要な同意を得てください。

完成したステレオ波形と、ボーカル・伴奏を別トラックに分けたミキサー画面を対比する概念図
YuE2の標準出力はボーカルと伴奏を合わせた音源であり、ステム分離機能とは異なります。

full・melody・offと生成段階を理解する

標準のfullモードは編集可能なメロディーとコードの計画を作り、その計画から曲を生成します。melodyモードはメロディーだけを計画し、新しいスタイルに伴奏を合わせるカバー用途として公式文書が推奨しています。offは楽譜計画を使わず、歌詞とスタイルから直接生成します。abc入力で自作の楽譜も渡せますが、リポジトリが対応するABC形式である必要があります。別のABC記法は変換が必要になる場合があります。

段階APIはplan() → generate_semantic() → synthesize() → decode14()です。計画段階ではscore.abcと計画ファイルを保存し、semantic段階で音楽を表すトークン15を生成します。

synthesize段階で音響潜在表現16を計算し、YuE2-Vae17デコーダーが最終的なステレオ波形を復元します。YuE2は旧YuE v1で別々に呼ばれるStage 1/Stage 2チェックポイントや、XCodec Miniによる再構成・vocoder経路を使いません。

旧版では7BのStage 1が歌詞・音声プロンプトを処理し、1BのStage 2が音声コード列を生成し、XCodec Miniがコードを波形に戻します。メモリや処理時間の値を比べる際は版を区別してください。

どちらの処理段階も、ボーカルと伴奏を分離したステムを書き出す機能とは異なります。

歌詞とスタイル指示がスコア計画、音楽トークン、音声レンダリングを経てステレオ曲になる�工程図
YuE2は計画と音声生成を複数段階に分けて確認できます。

スコアのコピーを編集して曲を直す

生成フォルダのscore.abcを保存し、コピーを編集してください。メロディーの音高やリズム、コード進行、セクションの長さを変える場合は、まず一つの変更から試聴します。YuE2の特徴は作曲内容を確認できるスコアですが、元の波形の一部を残したまま塗り替える音声編集ソフトではありません。修正した楽譜を入力すると曲全体を再生成します。元音声、元スコア、修正版は別フォルダで保管してください。

Pythonでは生成段階を分けて呼び出せます。公式generationガイドの例では計画を保存して読み込み直し、semanticトークン生成から続けます。編集するときは保存済みplanを直接変更せず、score.abcのコピーを修正し、新しいリクエストのabc引数に渡してください。save_artifacts()が保存する設定、モデル識別情報、トークン、latent、truncated状態を残すと、後から生成条件を追いやすくなります。

計画と中間生成物を保存
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)
GPU環境で使う公式Pythonパイプラインの形式です。

生成時間とメモリ値は測定条件と一緒に読む

公式READMEは24GB VRAMのNVIDIA GPUを開始構成として推奨し、利用可能なシステムRAMも24GBと案内しています。モデルが小さく見えても、音声デコーダーや生成中の状態にもメモリが必要です。他のGPU作業を止め、まず標準の曲長と設定で試してください。短い入力でもモデル初期化や重み読み込みには別途時間がかかります。READMEの数値や別の端末の結果を自分の処理時間とみなさないでください。

Hugging FaceのモデルカードにはRTX 4090の公式測定値があります。PyTorch 2.10・Transformers 4.57.6、CUDA graphs18FlashAttention19、量子化なし、BF16 AR/NAR20FP3221 VAE・標準YuE2-Vaeの条件で、fullは214.85秒の音声を71.04秒で生成しVRAMピーク11.18GiB、melodyは214.67秒を68.68秒で生成(11.02GiB)、offは196.88秒を57.91秒で生成(11.09GiB)しました。

4090の値は各モード32回のウォームアップ後リクエストの平均で、初回モデル読み込みと保存時間を除きます。これはモデルカードの結果であり、このサイトで測定した値ではありません。

重みのライセンスと出力の権利を別々に確認する

YuE2のコードと文書はApache 2.0、モデル重みは追加許可付きのCC BY-NC 4.0です。公式条件では、個人として活動する制作者や音楽家がモデルを使って作った出力を公開・配布・販売・ライセンスし、収益化することを別途認めています。

企業がモデル重みを業務で商用利用するには、商用ライセンスについて問い合わせる必要があります。コードのライセンスが重みの利用まで認めると解釈しないでください。

チェックポイント、外部ツール、データセットには個別の条件が適用される場合があります。

モデルの利用許可は、他者の歌詞・作曲・録音、特定歌手の声や人格を利用する権利まで与えるものではありません。カバーを作る場合は、原曲の楽譜・歌詞・音源の権利、ボーカルサンプルの同意と利用条件を別々に確認してください。出力が著作権の要件を満たすか、各プラットフォームで配信できるかは、適用法とサービス規約によって異なります。これは法的判断の代わりではありません。商用リリース前に権利者と専門家へ確認してください。

用語の注釈

  1. BF16モデルの数値を保存・計算する16ビット浮動小数点形式です。利用可否はハードウェアと実行環境によります。

    本文に戻る
  2. GPU多くの計算を並列に処理するプロセッサーです。AIモデルの実行ではモデル計算を担います。

    本文に戻る
  3. VRAMグラフィックカードのGPUが使うメモリです。モデルの重みや計算途中の値を置き、システムRAMとは区別されます。

    本文に戻る
  4. チェックポイント学習済みモデルの重みなどを保存したファイルです。同じモデル系列でも、版や用途によって異なるチェックポイントを使うことがあります。

    本文に戻る
  5. API別のコードからプログラムの機能を呼び出すための決められたインターフェースです。APIという言葉だけで外部サーバーへの送信を意味するわけではありません。

    本文に戻る
  6. 量子化モデルの数値を少ないビット数で表す方法です。メモリ使用量のほか、精度や実行速度も変わることがあり、影響は形式と実装によります。

    本文に戻る
  7. システムRAMプログラムの実行中にデータを一時保存するシステムメモリです。ストレージや独立GPUのVRAMとは異なります。

    本文に戻る
  8. CUDANVIDIA GPUで汎用計算を行うソフトウェア基盤です。CUDA向けのプログラムが他のGPUでそのまま動くとは限りません。

    本文に戻る
  9. Python仮想環境プロジェクトごとにPythonパッケージを分けて導入する環境です。版の衝突を減らすもので、仮想マシンとは異なります。

    本文に戻る
  10. PyTorchAIモデルを作成・実行するソフトウェアフレームワークです。モデルと合わせて、対応するPyTorchの版やハードウェアも確認します。

    本文に戻る
  11. CLICommand-Line Interfaceの略です。ターミナルにコマンドを入力してプログラムを操作する方式です。

    本文に戻る
  12. ABC記譜法音高や拍などを文字で記す楽譜表記法です。音声ファイルではなく、ツールによって対応範囲が異なります。

    本文に戻る
  13. BPMBeats Per Minuteの略で、1分あたりの拍数を示すテンポの指標です。

    本文に戻る
  14. デコードLLMでは入力処理後に出力トークンを生成する段階です。VAEやオーディオコーデックでは、圧縮表現や符号化データから元の形式を復元する処理を指すことがあります。

    本文に戻る
  15. トークンモデルが入力や出力を分けて処理する単位です。1トークンが1文字や一定の時間に相当するわけではありません。

    本文に戻る
  16. 潜在表現モデルが入力情報を圧縮して表した中間データです。画像や音声など元の出力に戻すには、通常デコーダーが必要です。

    本文に戻る
  17. VAEVariational Autoencoderの略です。入力を圧縮した潜在表現に変換したり、その表現から出力を復元したりします。

    本文に戻る
  18. CUDA GraphsGPU処理の順序を記録して再利用するCUDA機能です。処理を送る負担を減らせますが、モデル自体を小さくするものではありません。

    本文に戻る
  19. FlashAttentionAttention計算のメモリアクセスを効率化する実装です。利用可否や効果はハードウェア、モデル、実行環境によって異なります。

    本文に戻る
  20. AR / NARAR(自己回帰)は先行出力を条件に順番に生成し、NAR(非自己回帰)はより並列的に生成する方式です。

    本文に戻る
  21. FP3232ビット浮動小数点形式です。BF16より値あたりのメモリを多く使い、数値をより細かく表現できます。

    本文に戻る