使用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》




























