SongGen : un transformateur autorégressif à un étage pour la génération automatique de chansons
Introduction générale
SongGen est un modèle de transformateur autorégressif à une étape, open source, conçu pour les tâches de génération de texte à chanson. Le modèle est capable de générer des chansons contenant des voix et des pistes d'accompagnement à partir d'un texte. Le modèle est capable de générer des chansons contenant des voix et des pistes d'accompagnement à partir d'un texte. SongGen offre un contrôle fin sur une large gamme d'attributs musicaux, y compris les paroles, les descriptions d'instruments, le style musical, l'humeur et le timbre. En outre, les utilisateurs ont la possibilité d'utiliser un clip audio de référence de trois secondes pour le clonage sonore. SongGen prend en charge deux modes de sortie : le mode hybride génère une piste mixte contenant directement les voix et les chœurs, et le mode deux pistes génère des pistes séparées pour les voix et les chœurs en vue d'applications ultérieures. Le projet fournit également un pipeline automatisé de prétraitement des données et un mécanisme efficace de contrôle de la qualité conçu pour faciliter l'engagement de la communauté et les recherches futures.

Liste des fonctions
- Génération de textes à partir de chansons
- Permet un contrôle fin des paroles, des descriptions d'instruments, du style musical, de l'ambiance et du timbre.
- Fournit des clips audio de référence de trois secondes pour le clonage sonore
- Sorties en mode mixte et en mode double piste
- Pipeline automatisé de prétraitement des données
- Poids des modèles, code d'entraînement, données annotées et pipeline de traitement en libre accès
Utiliser l'aide
Merci d'avoir fourni les informations officielles sur le processus d'installation ! Je vais apporter des corrections sur la base de ces informations. Vous trouverez ci-dessous la section d'aide mise à jour :
Utiliser l'aide
Processus d'installation
- Clonage de l'entrepôt de projets :
git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
- Créez et activez un nouvel environnement Conda :
conda create -n songgen python=3.9.18
conda activate songgen
- Installez CUDA 11.8 et les dépendances associées :
conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
- Utiliser SongGen en mode inférence uniquement :
pip install .
Télécharger Checkpoints
Veuillez télécharger les points de contrôle des modèles pré-entraînés pour xcodec et songgen.
raisonnement en cours d'exécution
modèle hybride
- Importer les bibliothèques nécessaires :
import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
- Charger le modèle pré-entraîné :
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)
- Définir le texte d'entrée et les paroles :
lyrics = "..." # 歌词文本
text = "..." # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav' # 参考音频路径,可选
separate = True # 是否从参考音频中分离人声轨道
- Générer des chansons :
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)
modèle à double voie
- Importer les bibliothèques nécessaires :
import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
- Charger le modèle pré-entraîné :
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)
- Définir le texte d'entrée et les paroles :
lyrics = "..." # 歌词文本
text = "..." # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav' # 参考音频路径,可选
separate = True # 是否从参考音频中分离人声轨道
- Générer des chansons :
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)
Fonctionnement détaillé
- Génération de textes à partir de chansonsLe modèle génère l'audio correspondant à la chanson en introduisant un texte contenant les paroles et une description de la musique.
- un contrôle finEn entrant une description dans le texte, l'utilisateur peut contrôler divers attributs de la chanson générée, tels que l'instrumentation, le style, l'ambiance, etc.
- clonage du sonLe modèle peut imiter ce son pour la génération de chansons.
- Sélection du mode de sortieMode hybride ou mode double piste : Sélectionnez le mode hybride ou le mode double piste en fonction de la demande, pour une application flexible dans différentes scènes.
- Pipeline de prétraitement des donnéesLes résultats de l'analyse des données de l'enquête de la Commission européenne sur la santé et la sécurité au travail (CSST) ont été publiés dans un rapport de la Commission européenne sur la santé et la sécurité au travail.
© déclaration de droits d'auteur
L'article est protégé par le droit d'auteur et ne doit pas être reproduit sans autorisation.
Articles connexes
Pas de commentaires...