DiffRhythm:全长歌曲生成工具
功能介绍
DiffRhythm 核心能力包含:
- 文生音乐
- 音乐生音乐
一键整合包
下载地址:百度网盘 安装方式:下载后,选择文件夹中的所有文件(约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
终端使用
文生音乐
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,不需要其他的解释。
提示语原文见 这里
文章的最后,如果您觉得本文对您有用,请打赏一杯咖啡!感谢!
