[MusicGen] AIでテキストから音楽を生成する

2023年9月11日月曜日

Artificial Intelligence

本記事では、MusicGenと呼ばれる機械学習手法を用いて、テキストから音楽を生成する方法をご紹介します。

EyeCatch

MusicGen

概要

MusicGenは、Meta社が公開したText to Musicモデルです。テキストプロンプトに即した音楽を生成します。

AudioCraftと呼ばれるオーディオ生成スイートの一機能に属しており、MusicGenの他に、テキストで指定したオーディオを生成するAudioGenが存在します。

詳細はこちらのAudioCraftの公式サイトをご参照ください。

本記事では上記手法を用いて、テキストから音楽を生成していきます。

デモ(Colaboratory)

それでは、実際に動かしながらText to Musicを動かしていきます。
ソースコードは本記事にも記載していますが、下記のGitHubでも取得可能です。
GitHub - Colaboratory demo

また、下記から直接Google Colaboratoryで開くこともできます。
Open In Colab

なお、このデモはPythonで実装しています。
Pythonの実装に不安がある方、Pythonを使った機械学習について詳しく勉強したい方は、以下の書籍やオンライン講座などがおすすめです。

環境セットアップ

それではセットアップしていきます。 Colaboratoryを開いたら下記を設定しGPUを使用するようにしてください。

「ランタイムのタイプを変更」→「ハードウェアアクセラレータ」をGPUに変更

初めににライブラリをインストールします。

!pip install -U git+https://github.com/facebookresearch/audiocraft#egg=audiocraft

最後にライブラリをインポートします。

from audiocraft.models import musicgen
from audiocraft.utils.notebook import display_audio

import torch
device = 'cuda' if torch.cuda.is_available() else "cpu"
print("using device is", device)

以上で環境セットアップは完了です。

学習済みモデルのセットアップ

ここでは、HuggingFaceからモデルをダウンロードし、メモリにロードします。

'''
small: 300M model, text to music only - 🤗 Hub
medium: 1.5B model, text to music only - 🤗 Hub
melody: 1.5B model, text to music and text+melody to music - 🤗 Hub
large: 3.3B model, text to music only - 🤗 Hub
'''

model = musicgen.MusicGen.get_pretrained('medium', device=device)

Text to Music

それでは、テキストから音楽を生成をします。

初めに生成する音楽の時間を設定します。

duration = 10

model.set_generation_params(duration=duration)

続いて、テキストプロンプトを設定します。

prompts = [
    "Solid sound that makes you feel Japanese tradition",
    "crazy piano jazz"
]

Text to musicを実行します。

res = model.generate(
    prompts,
    progress=True)

生成結果は以下の通りです。

display_audio(res, 32000)

まとめ

本記事では、MusicGenを用いてテキストから音楽を生成する方法をご紹介しました。

また本記事では、機械学習を動かすことにフォーカスしてご紹介しました。
もう少し学術的に体系立てて学びたいという方には以下の書籍などがお勧めです。ぜひご一読下さい。


また動かせるだけから理解して応用できるエンジニアの足掛かりに下記のUdemyなどもお勧めです。

参考文献

1.  Home - AudioCraft

2. GitHub - facebookresearch/audiocraft

AIで副業ならココから!

まずは無料会員登録

プロフィール

メーカーで研究開発を行う現役エンジニア
組み込み機器開発や機会学習モデル開発に従事しています

本ブログでは最新AI技術を中心にソースコード付きでご紹介します


Twitter

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology