Skip to content

DiffRhythm:全长歌曲生成工具

功能介绍

DiffRhythm 核心能力包含:

  1. 文生音乐
  2. 音乐生音乐

一键整合包

下载地址:百度网盘 安装方式:下载后,选择文件夹中的所有文件(约14G),右键选择“7-Zip” => “Extract Here”,解压完成后,双击压缩包中的 “启动.bat” 文件即可启动程序。如果想要自行进行安装,继续查看“安装应用”小节。

安装应用

下面以 Windows11 为例,演示安装流程。在 cmd 中依次输入以下命令

shell
git clone https://github.com/ASLP-lab/DiffRhythm
cd DiffRhythm

conda create -n diffRhythm_env python=3.10 -y
conda activate diffRhythm_env

pip install -r requirements.txt
pip uninstall onnxruntime
pip install onnxruntime-gpu

pip uninstall torch
pip uninstall torchvision
pip uninstall torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126

# 缺啥装啥
pip install py3langid

安装 espeak-ng

终端使用

文生音乐

shell
python infer\infer.py --lrc-path infer\example\eg_en.lrc --ref-prompt "classical genres, hopeful mood, piano." --audio-length 95 --repo_id ASLP-lab/DiffRhythm-base --output-dir infer\example\output_en --chunked

说明:

  • --lrc-path:歌词
  • --ref-prompt:提示语
  • --audio-length:音乐长度,单位秒
  • --repo_id:仓库ID
    • ASLP-lab/DiffRhythm-base:生成 1m35s 的模型
    • ASLP-lab/DiffRhythm-full:生成 4m45s 的模型
  • --output-dir:文件输出地址
  • --chunked:优化显存使用

音乐生音乐

shell
python infer\infer.py --lrc-path infer/example/eg_en.lrc --ref-audio-path infer/example/eg_cn.wav --audio-length 95 --repo_id ASLP-lab/DiffRhythm-base --output-dir infer/example/output_en --chunked

说明:

  • --lrc-path:歌词
  • --ref-audio-path:参考音频
  • --audio-length:音乐长度,单位秒
  • --repo_id:仓库ID
    • ASLP-lab/DiffRhythm-base:生成 1m35s 的模型
    • ASLP-lab/DiffRhythm-full:生成 4m45s 的模型
  • --output-dir:文件输出地址
  • --chunked:优化显存使用

需要注意的是:当下 --ref-prompt--ref-audio-path 只允许二传一。

UI 使用

目前可在 huggingFace 上使用:可以借助界面进行 歌词 的生成;歌曲 的生成。

其中歌词的生成使用的是 DeepSeek R1 模型,其提示语如下:

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

提示语原文见 这里

文章的最后,如果您觉得本文对您有用,请打赏一杯咖啡!感谢!