Colab で Meta の MusicGen を使用して音楽を生成する方法

Colab で Meta の MusicGen を使用して音楽を生成する方法

翻訳者 |李睿

レビュー | Chonglou

人工知能の幅広い分野において、ディープラーニングは自然言語処理、コンピュータービジョン、音声認識など多くの領域に革命をもたらしました。しかし、研究者や音楽愛好家を同様に魅了する魅力的な分野は、人工知能アルゴリズムを使用した音楽の生成です。 MusicGen は、テキスト キューを魅力的な音楽作品にシームレスに変換できる、最も高度な制御可能なテキストから音楽への変換モデルの 1 つです。

MusicGenとは何ですか?

MusicGen は、シンプルさと制御性を備えた音楽生成用に設計された優れたモデルです。 MusicLM などの既存の方法とは異なり、MusicGen は自己教師付きセマンティック表現の必要性を排除することで際立っています。このモデルは、シングルステージの自己回帰トランスフォーマーアーキテクチャを使用し、32kHz エンコーダー トークナイザーを使用してトレーニングされます。注目すべきは、MusicGen が従来の方法とは異なり、一度に 4 つのコードブックすべてを生成できることです。コードブック間にわずかな遅延を導入することで、モデルはそれらを並行して予測する能力を示し、1 秒あたりわずか 50 ステップでオーディオの自己回帰を実現します。この革新的なアプローチにより、音楽生成プロセスの効率と速度が最適化されます。

MusicGen は 20,000 時間のライセンス音楽を使用してトレーニングされました。開発者らは、ShutterStock と Pond5 の音楽データに加え、10,000 曲の高品質音楽トラックの社内データセットでもトレーニングを行いました。

前提条件

公式 MusicGen GitHub リポジトリによると:

  • Python 3.9
  • パイトーチ2.0.0
  • 少なくとも16 GBのメモリを搭載したGPU

利用可能なMusicGenモデル

事前トレーニング済みモデルには次の 4 種類があります。

  • 小型: 300M モデル、テキストから音楽への変換のみ
  • 中規模: 1.5B モデル、テキストから音楽への変換のみ
  • メロディー: 1.5B モデル、テキストから音楽、テキスト + メロディから音楽
  • ラージ: 3.3B モデル、テキストから音楽への変換のみ

実験

以下は、MusicGen 大規模モデルを使用して条件付き音楽を生成した出力です

 Text Input: Jingle bell tune with violin and piano Output: (Using MusicGen "large" model)

以下は MusicGen メロディー モデルの出力です。上記の音声とテキスト入力を使用して、次の音声を生成します

 Text Input: Add heavy drums drums and only drums Output: (Using MusicGen "melody" model)

ColabでMusicGenを設定する方法

推論を高速化するには、GPU を使用していることを確認してください。 CPU を使用して 10 秒のオーディオを生成するには 9 分かかりますが、GPU (T4) を使用すると 35 秒しかかかりません。

始める前に、Colab に Torch と TorchAudio がインストールされていることを確認する必要があります。

Facebook から AudioCraft ライブラリをインストールします。

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

必要なライブラリをインポートします。

 from audiocraft.models import musicgen from audiocraft.utils.notebook import display_audio import torchfrom audiocraft.data.audio import audio_write

モデルをロードします。モデルリストは次のとおりです。

 # | model types are => small, medium, melody, large | # | size of models are => 300M, 1.5B, 1.5B, 3.3B | model = musicgen.MusicGen.get_pretrained('large', device='cuda')

設定パラメータ(オプション) :

 model.set_generation_params(duratinotallow=60) # this will generate 60 seconds of audio.

条件付き音楽生成(テキストを提供することで音楽を生成します)。

 model.set_generation_params(duratinotallow=60) res = model.generate( [ 'Jingle bell tune with violin and piano' ], progress=True) # This will show the music controls on the colab

無条件の音楽生成:

 res = model.generate_unconditional( num_samples=1, progress=True) # this will show the music controls on the screendisplay_audio(res, 16000)

1.音楽の継続を生成する

音楽の続きを作成するには、オーディオ ファイルが必要です。そのファイルをモデルに渡すと、さらに音楽が生成され、追加されます。

 from audiocraft.utils.notebook import display_audio import torchaudio path_to_audio = "path-to-audio-file.wav" description = "Jazz jazz and only jazz" # Load audio from a file. Make sure to trim the file if it is too long! prompt_waveform, prompt_sr = torchaudio.load( path_to_audio ) prompt_duration = 15 prompt_waveform = prompt_waveform[..., :int(prompt_duration * prompt_sr)] output = model.generate_continuation(prompt_waveform, prompt_sample_rate=prompt_sr, descriptinotallow=[ description ], progress=True) display_audio(output, sample_rate=32000)

メロディー条件生成を生成します:

 model = musicgen.MusicGen.get_pretrained('melody', device='cuda') model.set_generation_params(duratinotallow=20) melody_waveform, sr = torchaudio.load("path-to-audio-file.wav") melody_waveform = melody_waveform.unsqueeze(0).repeat(2, 1, 1) output = model.generate_with_chroma( descriptinotallow=['Add heavy drums'], melody_wavs=melody_waveform, melody_sample_rate=sr,progress=True) display_audio(output, sample_rate=32000)

オーディオ ファイルをディスクに書き込みます。

Colab からファイルをダウンロードする場合は、ディスクに WAV ファイルを書き込む必要があります。以下は、WAV ファイルをディスクに書き込む関数です。モデル出力を最初の入力として受け取り、ファイル名を 2 番目の入力として受け取ります。

 def write_wav(output, file_initials): try: for idx, one_wav in enumerate(output): audio_write(f'{file_initials}_{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True) return True except Exception as e: print("error while writing the file ", e) return None # this will write a file that starts with bollywood write_wav(res, "audio-file")

2.完全な実装(Google Colab ファイル リンク)

Meta の MusicGen ライブラリの完全な実装は、Colab ファイルに記載されています。音楽を自由に探索し、作成するために使用します。

結論は

要約すると、Audiocraft の MusicGen は強力で制御可能な音楽生成モデルです。将来的には、Audiocraft は AI 生成音楽の将来の発展に向けて刺激的な可能性を秘めています。ミュージシャンでも AI 愛好家でも、Audiocraft の MusicGen は創造性の世界を広げます。

原題: Colab で Meta の MusicGen を使用して音楽を生成する、著者: Mittal Patel

<<:  テーラーメイド:ChatGPTカスタム指示がAIパーソナライゼーション革命をリード

>>:  通信ネットワーク運用イベントのナレッジグラフの構築

ブログ    

推薦する

...

...

7.4K スター! わずか数分で機械学習モデル用の美しいインタラクティブ インターフェースを生成できます

Gradio は、機械学習やデータ サイエンス関連のデモや Web アプリケーションを構築するための...

RPAは人工知能の究極の発展方向でしょうか?

ロボティック・プロセス・オートメーション (RPA) は、単調で反復的なタスクを排除するのでしょうか...

Twitter が名前を X に変更し、マスク氏が X の世界を爆発させた! AIから宇宙探査まで、ユニバーサルアプリが形になりつつある

今、ボス・マーの「Xユニバース」がまた成長しました。それ以来、Twitter は単なるソーシャル ネ...

...

ジェネレーティブ AI とクラウド ネイティブは期待が膨らんでいる時期にあります。これらは企業の変革よりも重要ですか?

今年、業界内では「AI 記者会見でない記者会見はない」というジョークが飛び交っています。まさにその通...

...

ドローンは「緊急産業」がインテリジェンスの時代に移行するのに大いに役立つ

私の国は、世界で最も深刻な災害に見舞われる国の一つです。自然災害は一般的に、種類が多く、被害地域が広...

ディープラーニングは、データが不足している場合、無力なのでしょうか?ここにいくつかの良いアイデアがあります!

ディープラーニングは、データが大量にある場合、どんなに複雑な問題でも問題ありません。しかし、データが...

...

プログラマーは「自殺」している。人工知能が進化し続ける中、人間は何をすべきか?

中国、日本、韓国の囲碁名人数十人がこのゲームに挑み、アルファ碁は1敗もせずに60連勝した。その後、世...

ML 向け勾配降下法アルゴリズム 機械学習初心者向け勾配降下法アルゴリズム

[[197951]]基本概念このセクションでは、勾配降下法をより一般化するために、機械学習アルゴリズ...

ディープラーニングを活用してネットワークセキュリティを実現する方法

[[240276]]著者: ゲストブログ翻訳:張玲校正:丁南雅この論文では、ディープラーニングとそれ...

現時点で最も包括的なPythonの採用方針

Pythonは、コンパイル速度が超高速なオブジェクト指向プログラミング言語です。誕生から25年が経ち...