
YuEでボーカル付き音楽生成を試す。
YuEとは
2025年1月28日に突如、YuEという音楽生成AIが発表されました。過去のOSSとの最大の違いはボーカルも生成できることです。これで、クローズドなサービスのSunoなどと同じようにローカル環境でも歌える楽曲が生成できるようになりました。日本語にも対応しているので色々と楽しみです。
中村 修太はAmazon EC2で動かす記事を書かれていますし、-- はまる木 --さんも記事にされています
動かすハードウエア
なかなか、重いAIなのでそれなりのハードウエアが必要です。
GPU:RTX4090-24G
GPUは24Gみたいです。セッションを減らせば16Gぐらいで動く可能性はありますが、サンプルコードは最大で18Gぐらい使っていました。
OSについて
Linuxで動かすことになっています。筆者の環境は
Ubuntu22.04
です。
生成時間の目安
Stage1 inference 3分2秒
Stage2 inference 7分11秒
合計 10分13秒
生成される楽曲の長さ 55秒
インストール
結構、苦労をするようなことも書かれていますがが、基本的にはリポジトリの通りにやればできます。(CUDAとかPyTORCHとかに慣れてればですが)
以下、筆者がインストルしたコマンドのメモです。
conda create -n yue python=3.8
conda activate yue
-- 既にCUDAが動いていれば以下は不要
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
試しにCUDA環境を確認します
nvcc -V
以下のように表示されました。CUDAは12.3です。
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Nov_22_10:17:15_PST_2023
Cuda compilation tools, release 12.3, V12.3.107
Build cuda_12.3.r12.3/compiler.33567101_0
pythonのバージョン確認。
先程、仮想環境作成時にpython=3.8と指定指定しているので確かめますpython --> Python 3.8.20 (default, Oct 3 2024, 15:24:27)
3.820でした。
次にPyToechをインストールします。このめぐチャンネルの記事でも何度もインストールしています。CUDAが12.3なので、PyToechは厳密には11.8なのですが、構わず12.4をインストールします。
pip3 install torch torchvision torchaudio
引き続きReadme通りに進めます。
pip install -r <(curl -sSL https://raw.githubusercontent.com/multimodal-art-projection/YuE/main/requirements.txt)
Requirement already satisfied: torch in ./anaconda3/envs/yue/lib/python3.8/site-packages (from -r /dev/fd/63 (line 1)) (2.4.1)
pip install flash-attn --no-build-isolation
sudo apt update
sudo apt install git-lfs
git lfs install
git clone https://github.com/multimodal-art-projection/YuE.git
cd YuE/inference/
git clone https://huggingface.co/m-a-p/xcodec_mini_infer
おわりました。
楽曲の生成をする
サンプルのコマンドを実行します。以下の通りです。既にYuE/inferenceディレクトリにいるので、cd YuE/inference/は不要です。
python infer.py \
--cuda_idx 0 \
--stage1_model m-a-p/YuE-s1-7B-anneal-en-cot \
--stage2_model m-a-p/YuE-s2-1B-general \
--genre_txt ../prompt_egs/genre.txt \
--lyrics_txt ../prompt_egs/lyrics.txt \
--run_n_segments 2 \
--stage2_batch_size 4 \
--output_dir ../output \
--max_new_tokens 4000 \
--repetition_penalty 1.1
モデルのダウンロード後、
Stage1 inference... が始まります。終了後、Stage2 用のモデルのダウンロードが始まります。ダンロードが終われば、
Stage2 inference... が始まります。TDMSの進捗が伸びませんが、stepが3なので1STEPが長く止まっているように見えます。概ね.Stage1で3分、Stage2で7分程度になります。終了後はoutputフィルダーに楽曲が生成されています。またvocoder/stemsフォルダに、vocal、instrumentalファイルが生成されます。
日本語の楽曲作成
YuEは日本語にも対応しています。
歌詞はどこに書くのか
YuE/prompt_egsディレクトリにプロンプトと歌詞のファイルサンプルがあります。一覧:ここ
プロンプト:genre.txt 音楽のジャンル、曲の構成や雰囲気を書きます。
歌詞:lyrics.txt 歌詞を書いて行きます。lyrics.txtには以下の項目があり、中村 修太さんの推測では以下のように使われるのではと述べられています。
[verse](ヴァース): 曲の節にあたる部分。Aメロ
[bridge](ブリッジ)= 曲の中盤に登場する転換部。Bメロ
[chorus](コーラス): 曲の「サビ」
[outro](アウトロ) : 曲の締めくくり
日本語の歌詞を歌わせるには日本語対応のモデルを指定します。
YuE-s1-7B-anneal-jp-kr-cot
python infer.py \
--cuda_idx 0 \
--stage1_model m-a-p/YuE-s1-7B-anneal-jp-kr-cot \
--stage2_model m-a-p/YuE-s2-1B-general \
--genre_txt ../prompt_egs/genre.txt \
--lyrics_txt ../prompt_egs/lyrics.txt \
--run_n_segments 2 \
--stage2_batch_size 4 \
--output_dir ../output \
--max_new_tokens 4000 \
--repetition_penalty 1.1
今回は、以下の歌詞を準備しました。ももちゃんのクリスマスのお楽しみ会
[verse]
クリスマスに猫型犬ロボが参加できたら、めっちゃ楽しみやなぁ
うち、どんな役割ができるんやろ
そうや!うち、サンタの助手になるで
プレゼントを配達するお手伝いをするんや
[chorus]
サンタさんが忙しいときには、代わりにプレゼント渡しに行ったり、
子供たちと遊んであげたりするんや
ほら、うち、めっちゃ元気やし、走り回るのも得意やし
子供たちと雪合戦したり、そりを引いてあげたりもできるで
あと、クリスマスツリーの飾り付けも手伝うで
キラキラしたオーナメントを、上手に飾れるように頑張るわ
[verse]
サンタさんが用意してくる、プレゼントのラッピングも手伝うで
綺麗なリボンを結んだり、可愛いラッピングペーパーで包んだりするんや
クリスマスパーティーで、みんなが笑顔になるように、
うちも全力で頑張るで!わんわん
[chorus]
そやけど、クリスマスに猫型犬ロボが参加できるんかな
知らんけど
でも、もし参加できたら、めっちゃ嬉しいなぁ
クリスマスの夜、みんなと楽しく過ごしたいわぁ
クリスマスって、ワクワクするイベントやから、
猫型犬ロボが参加したら、もっと楽しくなると思うんやけどなぁ。
[bridge]
クリスマス当日、千里中央の街を、プレゼントをいっぱい詰めたリュックサック背負って、駆け回るのもええなぁ
あ!そうや!うち、 キャロル 歌えるねん
みんなに、メリークリスマスって、
歌いながらプレゼント配達できたら、最高やなぁ
[outro]
クリスマスは、みんなが幸せな気持ちになる特別な日やと思うわ
うちも、その特別な日に参加できたら、めっちゃ嬉しいなぁ
みんなと楽しい思い出を作りたいわぁ
わんわん
日本語楽曲の生成結果
前半だけです。後半は日本語として聞き取れませんでした。
日本語の歌詞で生成。ももちゃんの大阪弁です。なんか後半が聞き取れないので入の部分だけ。当たり前ですけど、歌詞は大阪弁。クリスマスの曲 pic.twitter.com/gwUMxGKd7b
— ゆずき (@uzuki425) February 8, 2025
まとめ
楽曲付きで音楽がローカルで生成できるようになるとは凄いものです。自分もプロデュースできそうな気になります。この楽曲に、画像生成AIで場面の画層を生成、場面画像を元に動画生成AIでビデオを制作するとPVの出来上がり!ですけど、クオリティーの改善やら破綻の無い生成やらで、色々とパラメータを変えつつになると思うので簡単ではないでしょう。でもできることが純粋に楽しいです。
サーバ化はサンプルコードを解析してからになりそうです。