使用SongGen生成一首完整歌曲主要包括以下几个关键步骤:
1. 准备输入数据
- 编写歌词文本(必选)
- 添加音乐描述(可选但推荐):包括风格、乐器、情绪等
- 准备参考音频(可选):3秒音频片段用于声音克隆
2. 选择生成模式
SongGen提供两种生成模式:
- 混合模式(一站式输出):
from songgen import SongGenMixedForConditionalGeneration
- 双轨模式(分离人声和伴奏):
from songgen import SongGenDualTrackForConditionalGeneration
3. 执行歌曲生成
基础生成代码流程(以混合模式为例):
# 加载模型 model = SongGenMixedForConditionalGeneration.from_pretrained( ckpt_path, attn_implementation='sdpa').to(device) processor = SongGenProcessor(ckpt_path, device) # 准备输入 lyrics = "你的歌词内容" text = "音乐描述:流行风格,钢琴伴奏" ref_voice_path = 'ref_audio.wav' # 可选 # 生成并保存 model_inputs = processor(text=text, lyrics=lyrics, ref_voice_path=ref_voice_path) generation = model.generate(**model_inputs, do_sample=True) audio_arr = generation.cpu().numpy().squeeze() sf.write("output_song.wav", audio_arr, model.config.sampling_rate)
4. 调整生成参数
可以通过修改生成参数优化结果:
do_sample
: 控制是否使用采样方法temperature
: 调节输出的创造性top_p
: 影响生成多样性
建议初次使用时先保持默认参数,熟悉后再进行参数调优。
本答案来源于文章《SongGen:自动生成歌曲的单阶段自回归Transformer》