Генерировать музыку с помощью MusicGen от Meta на Colab

Создавайте музыку с MusicGen от Meta на Colab

В обширной области искусственного интеллекта глубокое обучение перевернуло множество сфер, включая обработку естественного языка, компьютерное зрение и распознавание речи. Однако одной увлекательной областью, которая привлекла внимание исследователей и меломанов, является генерация музыки с использованием алгоритмов искусственного интеллекта. MusicGen – это современная модель контролируемой трансляции текста в музыку, которая безупречно преобразует текстовые подсказки в захватывающие музыкальные композиции.

Что такое MusicGen?

MusicGen – это замечательная модель, разработанная для генерации музыки, которая предлагает простоту и управляемость. В отличие от существующих методов, таких как MusicLM, MusicGen выделяется отсутствием необходимости в полу-самонадзорном семантическом представлении. Модель использует архитектуру авторегрессионного трансформатора одноступенчатого типа и обучается с использованием токенизатора EnCodec с частотой дискретизации 32 кГц. Стоит отметить, что MusicGen генерирует все четыре кодовых книги за один проход, что выделяет его из обычных подходов. Введя небольшую задержку между кодовыми книгами, модель демонстрирует способность предсказывать их параллельно, что приводит к всего 50 авторегрессионным шагам на секунду аудио. Этот инновационный подход оптимизирует эффективность и скорость процесса генерации музыки.

MusicGen обучен на 20 тысячах часов лицензированной музыки. Они также обучили его на внутреннем наборе данных из 10 тысяч высококачественных музыкальных треков и на данных о музыке с ShutterStock и Pond5.

Предварительные требования:

Согласно официальному репозиторию MusicGen на GitHub

  • Python 3.9
  • PyTorch 2.0.0
  • Графический процессор с не менее 16 ГБ памяти

Доступные модели MusicGen

Доступно 4 предварительно обученные модели, и они следующие:

  • Small: модель 300M, только текст в музыку.
  • VoAGI: модель 1.5B, только текст в музыку.
  • Melody: модель 1.5B, текст и мелодия в музыку.
  • Large: модель 3.3B, только текст в музыку.

Эксперименты

Ниже приведен результат условной генерации музыки с использованием модели MusicGen large.

Входной текст: Мелодия "Jingle Bell" с скрипкой и фортепиано

Результат: (Используется модель "large" MusicGen)

Ниже приведен результат работы модели MusicGen “melody”. Мы использовали приведенные выше аудио и текстовый ввод для генерации следующего аудио.

Входной текст: Добавьте сильные барабаны и только барабаны

Результат: (Используется модель "melody" MusicGen)

Как настроить MusicGen в Colab

Убедитесь, что вы используете графический процессор для более быстрого вывода. Генерация 10 секунд аудио с использованием процессора занимает около 9 минут, в то время как с использованием графического процессора (T4) это занимает всего 35 секунд.

Перед началом установите Torch и TorchAudio в Colab.

Установите библиотеку AudioCraft от Facebook.

!python3 -m pip install -U git+https://github.com/facebookresearch/audiocraft#egg=audiocraft

Импортируйте необходимые библиотеки.

from audiocraft.models import musicgenfrom audiocraft.utils.notebook import display_audioimport torchfrom audiocraft.data.audio import audio_write

Загрузите модель. Список моделей следующий:

# | типы моделей: small, VoAGI, melody, large |# | размеры моделей: 300M, 1.5B, 1.5B, 3.3B |model = musicgen.MusicGen.get_pretrained('large', device='cuda')

Установите параметры (по желанию):

model.set_generation_params(duration=60) # это сгенерирует 60 секунд аудио.

Условная генерация музыки (сгенерируйте музыку, предоставив текст).

model.set_generation_params(duration=60)res = model.generate( [ 'Мелодия "Jingle Bell" с скрипкой и фортепиано' ], progress=True)# Это покажет элементы управления музыкой в Colab

Для генерации безусловной музыки:

res = model.generate_unconditional( num_samples=1, progress=True)# это покажет элементы управления музыкой на экране display_audio(res, 16000)

Для генерации продолжения музыки

Для создания продолжения музыки нам понадобится аудиофайл. Мы передадим этот файл модели, и модель сгенерирует и добавит больше музыки к нему.

from audiocraft.utils.notebook import display_audioimport torchaudio_path_to_audio = "путь-к-аудио-файлу.wav"description = "Джаз, джаз и только джаз"# Загрузка аудио из файла. Убедитесь, что файл обрезан, если он слишком длинный!prompt_waveform, prompt_sr = torchaudio.load( path_to_audio )prompt_duration = 15prompt_waveform = prompt_waveform[..., :int(prompt_duration * prompt_sr)]output = model.generate_continuation(prompt_waveform, prompt_sample_rate=prompt_sr,descriptions=[ description ], progress=True)display_audio(output, sample_rate=32000)

Для генерации мелодии с условной генерацией:

model = musicgen.MusicGen.get_pretrained('melody', device='cuda')model.set_generation_params(duration=20)melody_waveform, sr = torchaudio.load("путь-к-аудио-файлу.wav")melody_waveform = melody_waveform.unsqueeze(0).repeat(2, 1, 1)output = model.generate_with_chroma(descriptions=['Добавьте сильные барабаны'], melody_wavs=melody_waveform, melody_sample_rate=sr,progress=True)display_audio(output, sample_rate=32000)

Запись аудиофайла на диск.

Если вы хотите загрузить файл из Colab, тогда вам потребуется записать WAV-файл на диск. Вот функция, которая запишет WAV-файл на диск. Она примет вывод модели в качестве первого входа и имя файла в качестве второго входа.

def write_wav(output, file_initials):    try:        for idx, one_wav in enumerate(output):            audio_write(f'{file_initials}_{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)        return True    except Exception as e:        print("ошибка при записи файла ", e)        return None# это запишет файл, начинающийся с bollywoodwrite_wav(res, "audio-file")

Наша полная реализация библиотеки MusicGen от Audiocraft представлена в файле Colab. Смело исследуйте и создавайте музыку с его помощью.

Заключение

В заключение, MusicGen от Audiocraft – это мощная и управляемая модель генерации музыки. В будущем Audiocraft имеет захватывающий потенциал для развития в области музыки, созданной искусственным интеллектом. Будь вы музыкантом или энтузиастом искусственного интеллекта, MusicGen от Audiocraft открывает мир творческих возможностей.