AI个人学习
和实操指南
资源推荐1

SongGen:自动生成歌曲的单阶段自回归Transformer

综合介绍

SongGen 是一个开源的单阶段自回归Transformer模型,专为文本到歌曲的生成任务设计。该模型能够从文本输入生成包含人声和伴奏的歌曲。SongGen 提供了对多种音乐属性的细粒度控制,包括歌词、乐器描述、音乐风格、情绪和音色等。此外,用户还可以选择使用三秒钟的参考音频片段进行声音克隆。SongGen 支持两种输出模式:混合模式直接生成包含人声和伴奏的混合音轨,双轨模式则分别生成人声和伴奏音轨,以便于后续应用。该项目还提供了自动化的数据预处理管道和高效的质量控制机制,旨在促进社区参与和未来研究。

SongGen:自动生成歌曲的单阶段自回归Transformer-1


 

功能列表

  • 文本到歌曲生成
  • 支持歌词、乐器描述、音乐风格、情绪和音色的细粒度控制
  • 提供三秒钟参考音频片段进行声音克隆
  • 混合模式和双轨模式输出
  • 自动化数据预处理管道
  • 开源模型权重、训练代码、注释数据和处理管道

 

使用帮助

感谢提供官方的安装流程信息!我会根据这些内容进行修正。以下是更新后的使用帮助部分:

使用帮助

安装流程

  1. 克隆项目仓库:
   git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
  1. 创建并激活新的 Conda 环境:
   conda create -n songgen python=3.9.18
conda activate songgen
  1. 安装 CUDA 11.8 及相关依赖:
   conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
  1. 仅在推理模式下使用 SongGen:
   pip install .

下载检查点

请下载 xcodec 和 songgen 的预训练模型检查点。

运行推理

混合模式

  1. 导入必要的库:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. 加载预训练模型:
   ckpt_path = "..."  # 预训练模型的路径
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = SongGenMixedForConditionalGeneration.from_pretrained(
ckpt_path,
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
  1. 定义输入文本和歌词:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. 生成歌曲:
   model_inputs = processor(text=text, lyrics=lyrics, ref_voice_path=ref_voice_path, separate=True)
generation = model.generate(**model_inputs, do_sample=True)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("songgen_out.wav", audio_arr, model.config.sampling_rate)

双轨模式

  1. 导入必要的库:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. 加载预训练模型:
   ckpt_path = "..."  # 预训练模型的路径
device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = SongGenDualTrackForConditionalGeneration.from_pretrained(
ckpt_path,
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
  1. 定义输入文本和歌词:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. 生成歌曲:
   model_inputs = processor(text=text, lyrics=lyrics, ref_voice_path=ref_voice_path, separate=True)
generation = model.generate(**model_inputs, do_sample=True)
vocal_array = generation.vocal_sequences[0, :generation.vocal_audios_length[0]].cpu().numpy()
acc_array = generation.acc_sequences[0, :generation.acc_audios_length[0]].cpu().numpy()
min_len = min(vocal_array.shape[0], acc_array.shape[0])
vocal_array = vocal_array[:min_len]
acc_array = acc_array[:min_len]
audio_arr = vocal_array + acc_array
sf.write("songgen_out.wav", audio_arr, model.config.sampling_rate)

详细功能操作

  • 文本到歌曲生成:输入包含歌词和音乐描述的文本,模型将生成对应的歌曲音频。
  • 细粒度控制:通过输入文本中的描述,用户可以控制生成歌曲的各种属性,如乐器、风格、情绪等。
  • 声音克隆:提供三秒钟的参考音频片段,模型可以模仿该声音进行歌曲生成。
  • 输出模式选择:根据需求选择混合模式或双轨模式,灵活应用于不同场景。
  • 数据预处理管道:自动化的数据预处理和质量控制,确保生成结果的高质量。
工具下载
未经允许不得转载:首席AI分享圈 » SongGen:自动生成歌曲的单阶段自回归Transformer

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文