SongGen: одноступенчатый авторегрессионный трансформатор для автоматической генерации песен

Общее введение

SongGen - это одноступенчатая модель авторегрессионного трансформатора с открытым исходным кодом, предназначенная для задач генерации текста в песни. Модель способна генерировать песни с вокалом и бэк-треками из текстового материала. SongGen обеспечивает тонкий контроль над широким спектром музыкальных атрибутов, включая тексты песен, описания инструментов, музыкальный стиль, настроение и тембр. Кроме того, у пользователей есть возможность использовать трехсекундный эталонный аудиоклип для клонирования звука. songGen поддерживает два режима вывода: гибридный режим генерирует смешанный трек, содержащий непосредственно вокал и бэк-вокал, а двухтрековый режим генерирует отдельные вокальные и бэк-треки для последующего применения. Проект также предоставляет автоматизированный конвейер предварительной обработки данных и эффективный механизм контроля качества, призванный облегчить вовлечение сообщества и будущие исследования.

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

 

Список функций

  • Генерация текста в песню
  • Поддерживает тонкий контроль над текстами песен, описанием инструментов, музыкальным стилем, настроением и тембром.
  • Предоставляет трехсекундные опорные аудиоклипы для клонирования звука
  • Выходы для смешанного режима и режима двойной дорожки
  • Автоматизированный конвейер предварительной обработки данных
  • Веса моделей, код обучения, аннотированные данные и конвейер обработки с открытым исходным кодом

 

Использование помощи

Спасибо за предоставление официальной информации о процессе установки! Я буду вносить исправления на основе этих данных. Ниже представлен обновленный раздел справки для использования:

Использование помощи

Процесс установки

  1. Хранилище проектов клонирования:
   git clone https://github.com/LiuZH-19/SongGen.git
cd SongGen
  1. Создайте и активируйте новую среду Conda:
   conda create -n songgen python=3.9.18
conda activate songgen
  1. Установите CUDA 11.8 и связанные с ней зависимости:
   conda install pytorch torchvision torchaudio cudatoolkit=11.8 -c pytorch -c nvidia
  1. Используйте SongGen только в режиме вывода:
   pip install .

Скачать Контрольные точки

Пожалуйста, загрузите контрольные точки предварительно обученной модели для xcodec и songgen.

рассуждения о беге

гибридная модель

  1. Импортируйте необходимые библиотеки:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenMixedForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. Загрузите предварительно обученную модель:
   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. Определите входной текст и текст песни:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. Создавайте песни:
   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)

двухдорожечная модель

  1. Импортируйте необходимые библиотеки:
   import torch
import os
from songgen import (
VoiceBpeTokenizer,
SongGenDualTrackForConditionalGeneration,
SongGenProcessor
)
import soundfile as sf
  1. Загрузите предварительно обученную модель:
   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. Определите входной текст и текст песни:
   lyrics = "..."  # 歌词文本
text = "..."  # 音乐描述文本
ref_voice_path = 'path/to/your/reference_audio.wav'  # 参考音频路径,可选
separate = True  # 是否从参考音频中分离人声轨道
  1. Создавайте песни:
   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)

Детальное управление функциями

  • Генерация текста в песню: Введите текст с текстом и описанием музыки, и модель сгенерирует соответствующее аудио песни.
  • тонкий контроль: Введя описание в текст, пользователь может управлять различными атрибутами создаваемой песни, такими как инструментарий, стиль, настроение и т.д.
  • клонирование звука: Предоставляется трехсекундный эталонный аудиоклип, и модель может имитировать этот звук для создания песни.
  • Выбор режима вывода: Выбор гибридного или двухдорожечного режима в зависимости от потребностей, гибкое применение в различных сценах.
  • Конвейер предварительной обработки данных: Автоматизированная предварительная обработка данных и контроль качества для обеспечения высокого качества получаемых результатов.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...