Aprendizagem pessoal com IA
e orientação prática
讯飞绘镜

SongGen: um transformador autorregressivo de estágio único para geração automática de músicas

Introdução geral

O SongGen é um modelo transformador autorregressivo de estágio único de código aberto, projetado para tarefas de geração de texto para música. O modelo é capaz de gerar músicas com vocais e faixas de apoio a partir da entrada de texto. O SongGen oferece controle refinado sobre uma ampla gama de atributos musicais, incluindo letras, descrições de instrumentos, estilo musical, humor e timbre. Além disso, os usuários têm a opção de usar um clipe de áudio de referência de três segundos para clonagem de som. O songGen suporta dois modos de saída: o modo híbrido gera uma faixa mista contendo vocais e backing vocals diretamente e o modo de duas faixas gera faixas vocais e de backing separadas para aplicações subsequentes. O projeto também oferece um pipeline automatizado de pré-processamento de dados e um mecanismo eficiente de controle de qualidade projetado para facilitar o envolvimento da comunidade e pesquisas futuras.

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


 

Lista de funções

  • Geração de texto para música
  • Oferece suporte ao controle refinado de letras, descrições de instrumentos, estilo musical, humor e timbre
  • Fornece clipes de áudio de referência de três segundos para clonagem de som
  • Saídas em modo misto e modo de pista dupla
  • Pipeline automatizado de pré-processamento de dados
  • Pesos de modelos de código aberto, código de treinamento, dados anotados e pipeline de processamento

 

Usando a Ajuda

Obrigado por fornecer as informações oficiais sobre o processo de instalação! Farei as correções com base nelas. Abaixo está a seção de ajuda atualizada para uso:

Usando a Ajuda

Processo de instalação

  1. Clonagem do Project Warehouse:
   git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
  1. Crie e ative um novo ambiente Conda:
   conda create -n songgen python=3.9.18
conda activate songgen
  1. Instale o CUDA 11.8 e as dependências relacionadas:
   conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
  1. Use o SongGen somente no modo de inferência:
   pip install .

Baixar pontos de controle

Faça o download dos pontos de verificação do modelo pré-treinado para xcodec e songgen.

raciocínio de execução

modelo híbrido

  1. Importe as bibliotecas necessárias:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. Carregue o modelo pré-treinado:
   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. Defina o texto de entrada e as letras:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. Gerar músicas:
   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)

modelo de pista dupla

  1. Importe as bibliotecas necessárias:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. Carregue o modelo pré-treinado:
   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. Defina o texto de entrada e as letras:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. Gerar músicas:
   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)

Operação detalhada da função

  • Geração de texto para músicaTexto de entrada contendo a letra e uma descrição da música e o modelo gerará o áudio correspondente da música.
  • controle refinadoDescrição: Ao inserir uma descrição no texto, o usuário pode controlar vários atributos da música gerada, como instrumentação, estilo, humor etc.
  • clonagem de somSom de referência: Um clipe de áudio de referência de três segundos é fornecido e o modelo pode imitar esse som para a geração de músicas.
  • Seleção do modo de saídaModo híbrido: Selecione o modo híbrido ou o modo de trilha dupla de acordo com a demanda, aplicação flexível em diferentes cenas.
  • Pipeline de pré-processamento de dadosPré-processamento automatizado de dados e controle de qualidade para garantir a alta qualidade dos resultados gerados.
Não pode ser reproduzido sem permissão:Chefe do Círculo de Compartilhamento de IA " SongGen: um transformador autorregressivo de estágio único para geração automática de músicas
pt_BRPortuguês do Brasil