SongGen: un transformador autorregresivo de una etapa para la generación automática de canciones
Últimos recursos sobre IAPublicado hace 6 meses Círculo de intercambio de inteligencia artificial 2.5K 00
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.

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
- Almacén de proyectos de clonación:
git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
- Crea y activa un nuevo entorno Conda:
conda create -n songgen python=3.9.18
conda activate songgen
- Instale CUDA 11.8 y las dependencias relacionadas:
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
- 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
- Importe las bibliotecas necesarias:
import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
- 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)
- Defina el texto de entrada y la letra:
lyrics = "..." # 歌词文本
text = "..." # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav' # 参考音频路径,可选
separate = True # 是否从参考音频中分离人声轨道
- 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
- Importe las bibliotecas necesarias:
import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
- 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)
- Defina el texto de entrada y la letra:
lyrics = "..." # 歌词文本
text = "..." # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav' # 参考音频路径,可选
separate = True # 是否从参考音频中分离人声轨道
- 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
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...