YuEを使って音楽生成を始めよう! 🎵

## はじめに

このノートブックでは、オープンソースの音楽生成モデル「YuE(乐)」を使って、歌詞から完全な楽曲を生成する方法を説明します。YuEは歌声トラックと伴奏を含む数分間の完全な楽曲を生成できます。

## 環境のセットアップ

まず必要な環境をセットアップしましょう。Python 3.8以上を推奨します。

```python
# FlashAttention 2のインストール (重要)
!pip install flash-attn --no-build-isolation
```

## CUDA環境の設定

FlashAttentionを使用するために、CUDA環境を正しく設定する必要があります。以下はCUDA 11.8を使用する場合の例です：

```python
# CUDA環境の設定
import os
os.environ['PATH'] = '/usr/local/cuda-11.8/bin:' + os.environ['PATH']
os.environ['LD_LIBRARY_PATH'] = '/usr/local/cuda-11.8/lib64:' + os.environ['LD_LIBRARY_PATH']
```

## YuEのソースコードの取得

Git LFSをインストールしてからリポジトリをクローンします：

```python
# Git LFSのインストール
!apt-get install git-lfs
!git lfs install

# リポジトリのクローン
!git clone https://github.com/multimodal-art-projection/YuE.git


# 必要なパッケージのインストール
!cd YuE && pip install -r requirements.txt

!cd YuE/inference/ && git clone https://huggingface.co/m-a-p/xcodec_mini_infer
```

```python
# 既存のprotobufをアンインストール
!pip uninstall -y protobuf

# 互換性のあるバージョンのprotobufをインストール
!pip install protobuf==3.20.0

# TensorFlowを再インストール
!pip install --upgrade tensorflow
```

```python
# transformersを再インストール
!pip install --upgrade transformers
```

```python
import sys
import tensorflow as tf
from transformers import AutoFeatureExtractor, WhisperModel

print(f"Python version: {sys.version}")
print(f"TensorFlow version: {tf.__version__}")
#print(f"Protobuf version: {tf.version.PROTOBUF_VERSION}")
```

## 基本的な音楽生成

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">オープンソース版Suno「YuE」 動かしました！！！<br>普通にめちゃよいです！！！<br>＊Google colabのノートブックは後ほど展開します！ <a href="https://t.co/hXQWuAGTCq">https://t.co/hXQWuAGTCq</a> <a href="https://t.co/f3KIgYtdh8">pic.twitter.com/f3KIgYtdh8</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1884239191820865795?ref_src=twsrc%5Etfw">January 28, 2025</a></blockquote> 

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">オープンソース版Suno「YuE」 動かしました！！！②<br>BGMとボーカルで分かれて生成されるのがマジでデカい<br>取り回しが良すぎる！！！！<br>＊Google colabのノートブックは後ほど展開します！ <a href="https://t.co/uLd6vZWkpz">https://t.co/uLd6vZWkpz</a> <a href="https://t.co/Au83ilytqL">pic.twitter.com/Au83ilytqL</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1884241014245974251?ref_src=twsrc%5Etfw">January 28, 2025</a></blockquote> 

以下のスクリプトで基本的な音楽生成を行えます：

```python
!cd YuE/inference/ && python infer.py \
    --stage1_model m-a-p/YuE-s1-7B-anneal-en-cot \
    --stage2_model m-a-p/YuE-s2-1B-general \
    --genre_txt prompt_examples/genre.txt \
    --lyrics_txt prompt_examples/lyrics.txt \
    --run_n_segments 2 \
    --stage2_batch_size 4 \
    --output_dir ./output \
    --cuda_idx 0 \
    --max_new_tokens 3000
```

```python
!pwd
```

```python
!ls -al
```

## オーディオプロンプトを使用した生成

<blockquote class="twitter-tweet" data-media-max-width="800"><p lang="ja" dir="ltr">オープンソース版Suno「YuE」 動かしました！！！③<br>音楽を入力として生成してみた！<br>確かに元音楽の面影あるかも！！！！ <a href="https://t.co/x3e5deN6VX">https://t.co/x3e5deN6VX</a> <a href="https://t.co/Wm4J9nmf4G">pic.twitter.com/Wm4J9nmf4G</a></p>&mdash; Maki@Sunwood AI Labs. (@hAru_mAki_ch) <a href="https://twitter.com/hAru_mAki_ch/status/1884254376090648949?ref_src=twsrc%5Etfw">January 28, 2025</a></blockquote> 

既存の音楽をプロンプトとして使用することもできます：

```python
!cd YuE/inference/ && python infer.py \
    --stage1_model m-a-p/YuE-s1-7B-anneal-en-icl \
    --stage2_model m-a-p/YuE-s2-1B-general \
    --genre_txt prompt_examples/genre.txt \
    --lyrics_txt prompt_examples/lyrics.txt \
    --run_n_segments 2 \
    --stage2_batch_size 4 \
    --output_dir ./output \
    --cuda_idx 0 \
    --max_new_tokens 3000 \
    --audio_prompt_path /content/CatSymphony.mp3 \
    --prompt_start_time 0 \
    --prompt_end_time 30
```

## 重要な注意点 ⚠️

1. GPUメモリの使用について:
   - 24GB以下のGPUメモリの場合: 最大2セッション
   - フルソング生成(4セッション以上)の場合: 80GB以上のGPUメモリを推奨

2. 実行時間の目安:
   - H800 GPU: 30秒の音声生成に約150秒
   - RTX 4090 GPU: 30秒の音声生成に約360秒

3. ジャンルタグの設定:
   - 5つの要素を含めることを推奨: ジャンル、楽器、ムード、性別、音色
   - 例: `[Genre] inspiring female uplifting pop airy vocal electronic bright vocal vocal`

4. 歌詞セグメントの長さ:
   - `max_new_tokens=3000`の場合、セグメントの最大長は約30秒
   - 歌詞の長さをこの時間枠に合わせることが重要

これでYuEを使った音楽生成の基本が整いました！実験して素晴らしい音楽を作成してみましょう！



<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>