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.
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
- Clonagem do Project Warehouse:
git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
- Crie e ative um novo ambiente Conda:
conda create -n songgen python=3.9.18
conda activate songgen
- Instale o CUDA 11.8 e as dependências relacionadas:
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
- 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
- Importe as bibliotecas necessárias:
importar torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration, SongGenProcessor, SongGenMixedForConditionalGeneration, SongGenProcessor
SongGenProcessor
)
importar soundfile como sf
- Carregue o modelo pré-treinado:
ckpt_path = "..." Caminho para o modelo pré-treinado do #
device = "cuda:0" if torch.cuda.is_available() else "cpu"
modelo = SongGenMixedForConditionalGeneration.from_pretrained(
ckpt_path,
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
- Defina o texto de entrada e as letras:
letras = "..." Texto da letra do #
texto = "..." # Texto da descrição da música
ref_voice_path = 'path/to/your/reference_audio.wav' # Caminho do áudio de referência, opcional
separate = True # Se deve ou não separar a trilha vocal do áudio de referência
- 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
- Importe as bibliotecas necessárias:
importar torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
importar soundfile como sf
- Carregue o modelo pré-treinado:
ckpt_path = "..." Caminho para o modelo pré-treinado do #
device = "cuda:0" if torch.cuda.is_available() else "cpu"
modelo = SongGenDualTrackForConditionalGeneration.from_pretrained(
ckpt_path,
attn_implementation='sdpa').to(device)
processor = SongGenProcessor(ckpt_path, device)
- Defina o texto de entrada e as letras:
letras = "..." Texto da letra do #
texto = "..." # Texto da descrição da música
ref_voice_path = 'path/to/your/reference_audio.wav' # Caminho do áudio de referência, opcional
separate = True # Se deve ou não separar a trilha vocal do áudio de referência
- 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])
matriz_vocal = matriz_vocal[:min_len]
acc_array = acc_array[:min_len]
audio_array = 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.