Zenn
🎶

最新音楽生成AI 【DiffRhythm】をGoogle Colabで動かせるようにしました!(簡易版)

2025/03/05に公開
4

はじめに

みなさん、2025年3月3日に出たこちらの論文は読みましたか?
https://arxiv.org/abs/2503.01183v1
(私はまだちゃんと読んでいませんw流し読みしたので大体の仕組みは理解できていますが)

この論文、私もポストしましたが、めちゃくちゃ面白いです!
https://x.com/asap2650/status/1896966554275000752

SUNOやYUEみたいな音楽生成についての論文なのですが、なんといっても、最大4分45秒の音楽をわずか10秒で生成できるオープンモデルということが魅力的です!(なお今は1分35秒までっぽい)

下記のspaceでデモで遊べるようなので試してみてください!
https://huggingface.co/spaces/ASLP-lab/DiffRhythm
(こちらで遊んだ結果は、上記ポストのyoutubeをご覧ください。入力した歌詞と参照音声の情報も記載しています

今回は、自分の環境でも動かしてみたいと思ったので、Google ColabにてGUIを利用せずに動作させてみたいと思います!

成果物

下記のリポジトリをご覧ください。
https://github.com/personabb/colab_AI_sample/tree/main/colab_DiffRhythm_sample

用意するもの

下記のフォルダの中のものを用意する必要があります。
https://github.com/personabb/colab_AI_sample/tree/main/colab_DiffRhythm_sample/example

  • 歌詞ファイル
    • この歌詞通りに歌ってくれます(英語か中国語だけ対応?)
    • タイムスタンプ付きの歌詞ファイルが必要です。
      • 大元のリポジトリの中には、機能として下記が備わっていますが、私は実装していません
        • 指定したテーマからタイムスタンプ付き歌詞を自動で生成する機能
        • 入力した歌詞から自動でタイムスタンプを設定する機能
          • 本当はこの機能でタイムスタンプをつけた方がいいと思いますが、私は適当につけました。
    • 私のリポジトリ内のexample/eg.lrcが参考です
  • 参照する音声ファイル
    • この音声に近い音楽を出力してくれます。
    • 10秒以上の音声ファイルが必要です。
    • 今回の記事では私のリポジトリ内のexample/pray.mp3を利用しています。
      • この音楽は私が過去にSUNOで作ったものです。以下の記事をご覧ください。

https://zenn.dev/asap/articles/886af0fe48dda3

もし、テーマからタイムスタンプ付き歌詞を作成する機能や、入力した歌詞から自動でタイムスタンプを設定する機能を使いたい場合は、下記のプロンプトをChatGPTなどで利用すればできると思います。
(本家の機能でも、下記のプロンプトをDeepSeek-R1に投入しています)

テーマからタイムスタンプ付き歌詞を作成する

You are a professional musician who has been invited to make music-related comments

请围绕"{theme}"主题生成一首符合"{tags}"风格的语言为{language}的完整歌词。严格遵循以下要求:

### **强制格式规则**
1. **仅输出时间戳和歌词**,禁止任何括号、旁白、段落标记(如副歌、间奏、尾奏等注释)。
2. 每行格式必须为 `[mm:ss.xx]歌词内容`,时间戳与歌词间无空格,歌词内容需完整连贯。
3. 时间戳需自然分布,**第一句歌词起始时间不得为 [00:00.00]**,需考虑前奏空白。

### **内容与结构要求**
1. 歌词应富有变化,使情绪递进,整体连贯有层次感。**每行歌词长度应自然变化**,切勿长度一致,导致很格式化。
2. **时间戳分配应根据歌曲的标签、歌词的情感、节奏来合理推测**,而非机械地按照歌词长度分配。
3. 间奏/尾奏仅通过时间空白体现(如从 [02:30.00] 直接跳至 [02:50.00]),**无需文字描述**。

### **负面示例(禁止出现)**
- 错误:[01:30.00](钢琴间奏)
- 错误:[02:00.00][副歌]
- 错误:空行、换行符、注释

例)

theme tags Language
Love and Heartbreak vocal emotional piano pop en
Heroic Epic choir orchestral powerful zh

入力した歌詞から自動でタイムスタンプを設定する

You are a professional musician who has been invited to make music-related comments

{lyrics_input}这是一首歌的歌词,每一行是一句歌词,{tags_lyrics}是我希望这首歌的风格,我现在想要给这首歌的每一句歌词打时间戳得到LRC,我希望时间戳分配应根据歌曲的标签、歌词的情感、节奏来合理推测,而非机械地按照歌词长度分配。第一句歌词的时间戳应考虑前奏长度,避免歌词从 `[00:00.00]` 直接开始。严格按照 LRC 格式输出歌词,每行格式为 `[mm:ss.xx]歌词内容`。最后的结果只输出LRC,不需要其他的解释。

例)

tags Raw Lyrics (without timestamps)
acoustic folk happy I'm sitting here in the boring room It's just another rainy Sunday afternoon
electronic dance energetic We're living in a material world And I am a material girl

ちなみに、DeepSeek-R1に関しては下記で記事を書いているのでぜひご覧ください。
https://zenn.dev/asap/articles/34237ad87f8511

使い方

https://github.com/personabb/colab_AI_sample/tree/main/colab_DiffRhythm_sample

上記リポジトリ内のcolab_DiffRhythm_sample/colab_DiffRhythm_sample.ipynbをダウンロードして、Google Driveにアップロードしてください。

上から「2セル目」までは順番に実行してください。

2セル目のpip installは非常に時間がかかります。
この間に、「参照する音声ファイル」を/content/DiffRhythm/exampleフォルダにアップロードしてください。
(下の画像のように、exampleフォルダの中にpray.mp3を置いています。ドラックアンドドロップでアップロード可能です)

すると下記のように再起動を要求してくると思いますので、「キャンセル」してください。

その後は、一番下までセルを実行してください。
すると、左側の欄からoutput.wavをダウンロード可能です!

出力結果

出力結果は下記です!
今回私はタイムスタンプを適当につけてしまったので、若干不安定な部分はありますが、かなり歌詞の追従性とかかなりいい感じなのではないでしょうか??

https://youtu.be/iLKTVWHtWlg

歌詞
[00:10.00] The cold wind pierces through my heart
[00:13.20] The blurry streetlights hide my tears
[00:16.85] The moment I knew what loneliness was
[00:20.40] I felt like I found a piece of the future
[00:24.15] Beyond the locked door
[00:27.65] I hear a whispering dream
[00:31.30] I want to believe, but I'm so afraid
[00:34.90] Reaching out with trembling hands
[00:38.55] Under the stardust night, I make a wish
[00:42.10] That your smile will never fade away
[00:45.75] Holding onto strength within the fleeting moments
[00:49.25] I will keep chasing the light, again and again
[00:52.00] Guided by the signpost soaked in rain
[00:55.30] I trace back the memories from afar
[00:58.90] The unseen future makes me anxious
[01:02.50] But a small flame flickers deep in my heart
[01:06.25] There's no dream that’s out of reach
[01:09.75] Because you were the one who showed me
[01:13.40] I won’t forget, no matter when
[01:16.95] Your voice will always lead me

まとめ

このレベルの音声をGoogle Colabの無料版で簡単に作れるようになるのは時代の流れを感じます。
しかも、モデルが音楽生成するだけであれば10秒程度で生成できるのが非常にすごいです。
(モジュールのインストールやインポートなどで今回のコードは時間がかかってますが、それでも早いと思いました)

ちゃんと、タイムスタンプを設定したら、もっと質が良くなると思うので期待です。
あとは、日本語対応してくれるといいな!

4

Discussion

ログインするとコメントできます