SongGen: un transformador autorregresivo de una etapa para la generación automática de canciones

Introducción general

SongGen es un modelo autorregresivo de Transformación de una sola etapa, de código abierto, diseñado para tareas de generación de texto a canción. El modelo es capaz de generar canciones con voces y pistas de acompañamiento a partir de texto. SongGen ofrece un control detallado de una amplia gama de atributos musicales, como letras, descripciones de instrumentos, estilo musical, estado de ánimo y timbre. Además, los usuarios tienen la opción de utilizar un clip de audio de referencia de tres segundos para clonar el sonido. songGen admite dos modos de salida: el modo híbrido genera directamente una pista mixta que contiene voces y coros, y el modo de dos pistas genera pistas separadas de voces y coros para aplicaciones posteriores. El proyecto también ofrece un proceso automatizado de preprocesamiento de datos y un eficaz mecanismo de control de calidad diseñado para facilitar la participación de la comunidad y futuras investigaciones.

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

 

Lista de funciones

  • Generación de texto a canción
  • Control detallado de letras, descripciones de instrumentos, estilo musical, estado de ánimo y timbre.
  • Proporciona clips de audio de referencia de tres segundos para la clonación de sonidos
  • Salidas en modo mixto y doble vía
  • Proceso automatizado de preprocesamiento de datos
  • Pesos del modelo, código de entrenamiento, datos anotados y canal de procesamiento de código abierto

 

Utilizar la ayuda

Gracias por facilitar la información oficial sobre el proceso de instalación. Haré correcciones basadas en esto. A continuación se muestra la sección de ayuda actualizada para su uso:

Utilizar la ayuda

Proceso de instalación

  1. Almacén de proyectos de clonación:
   git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
  1. Crea y activa un nuevo entorno Conda:
   conda create -n songgen python=3.9.18
conda activate songgen
  1. Instale CUDA 11.8 y las dependencias relacionadas:
   conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
  1. Utiliza SongGen sólo en modo inferencia:
   pip install .

Descargar Puntos de control

Por favor, descargue los puntos de control del modelo preentrenado para xcodec y songgen.

razonamiento en funcionamiento

modelo híbrido

  1. Importe las bibliotecas necesarias:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. Carga el modelo preentrenado:
   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 el texto de entrada y la letra:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. Generar canciones:
   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 doble vía

  1. Importe las bibliotecas necesarias:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. Carga el modelo preentrenado:
   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 el texto de entrada y la letra:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. Generar canciones:
   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)

Funcionamiento detallado

  • Generación de texto a canción: Introduzca un texto que contenga la letra y una descripción de la música y el modelo generará el audio correspondiente de la canción.
  • control detallado: Al introducir una descripción en el texto, el usuario puede controlar varios atributos de la canción generada, como la instrumentación, el estilo, el estado de ánimo, etc.
  • clonación de sonidoSe proporciona un clip de audio de referencia de tres segundos y el modelo puede imitar ese sonido para la generación de canciones.
  • Selección del modo de salida: Seleccione el modo híbrido o el modo de doble vía según la demanda, aplicación flexible en diferentes escenas.
  • Proceso de preprocesamiento de datosPreprocesamiento de datos y control de calidad automatizados para garantizar la alta calidad de los resultados generados.
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...