Эта статья была впервые опубликована на:Уокер ИИ
Музыка – это искусство и универсальный язык. Автор определяет музыку как совокупность тонов разной частоты. Генерация мелодии — это процесс создания мелодии с минимальным вмешательством человека.
В отличие от алгоритмов генерации мелодии на основе правил, алгоритмы генерации мелодии на основе глубокого обучения могут автоматически обучаться тому, как генерировать мелодию из наборов данных мелодии.
В этой статье будет представлен алгоритм генерации мелодии, основанный на глубоком обучении, со следующих аспектов:
-
Некоторые дефекты современных алгоритмов генерации мелодий.
-
Знакомство с алгоритмом генерации мелодии, способным устранить вышеуказанные недостатки.
1. Некоторые недостатки алгоритма генерации мелодии
Алгоритм генерации мелодии должен устранить следующие недостатки:
- управляемый
Алгоритм генерации мелодии не позволяет модели глубокого обучения генерировать ноты случайным образом, а должен решить определенные ограничения для создания управляемой мелодии.
- структурный
Структура здесь относится к направленности мелодии и структурным характеристикам мелодии. Мелодии, сгенерированной существующим алгоритмом генерации мелодии, не хватает направленности кривой мелодии, а также отсутствуют структурные характеристики музыки, такие как куплет, припев и проигрыш.
- разнообразие
Между сгенерированной мелодией и существующими обучающими данными может быть большое сходство, и существует риск плагиата.
- интерактивность
Существующие алгоритмы генерации мелодии обычно просто генерируют мелодию напрямую, но обычные мелодические произведения требуют от автора многократного прослушивания и полировки. В существующих схемах генерации мелодий такой механизм взаимодействия отсутствует.
2. Знакомство с алгоритмом генерации мелодии, способным решить вышеуказанные дефекты
Существующие алгоритмы генерации мелодии могут частично решить вышеупомянутые дефекты, и несколько существующих алгоритмов генерации мелодии представлены ниже.
2.1 Управляемость
Управляемость алгоритма генерации мелодии заключается в том, что пока модель генерирует мелодию, она будет генерировать указанный результат мелодии в соответствии с дополнительным вводом. Альтернативные входные данные включают в себя: мелодические кривые, гармонические прогрессии, музыкальные жанры, характерные точки, зависящие от местоположения (например, определенная нота в каждом такте совпадает с входными данными) и другие параметры информации.
Anticipation-RNN [1]
"Предвкушение-РНН генерация мелодий Баха"Это частично управляемый алгоритм генерации мелодии с использованием сети RNN. Основная идея состоит в том, чтобы ввести управляющую информацию ноты в некоторые ключевые позиции, чтобы достичь цели создания некоторой управляемой мелодии.
Основная структура алгоритма выглядит следующим образом:
Алгоритм состоит из двух моделей RNN:Token-RNNа такжеConstraint-RNN. вУказывает ограничения, связанные с местоположением,выражатьConstraint-RNNВывод.иОдновременно введите Token-RNN, выведите информацию о текущей позиции.
Constraint-RNNВход включаетC(управляет нотой в текущей позиции) иNC(не управляет нотой в текущей позиции). Алгоритм позволяет пользователям использоватьCУправляйте заметкой на определенном временном узле, используйте положение заметки, которое не нужно контролироватьNCВыражать.
Например, если пользователь хочет управлять нотой в определенной позиции (например, первой нотой каждого такта), тоConstraint-RNNКонкретная информация о входной ноте (например, высота тона, продолжительность, скорость и т. д.) в соответствующем положении модели и символ NC в других положениях указывает на то, что нота не контролируется, тем самым управляя сгенерированной мелодией.
Unit selection and concatenation melody generation [2]
использоватьunit selectionОсновная идея создания мелодии состоит в том, чтобы извлечь мелодии (обычно в тактах) из высококачественной библиотеки мелодий, предоставленной пользователем, а затем соединить выбранные мелодии для формирования мелодии.
Основная структура алгоритма выглядит следующим образом:
Алгоритм состоит из автоэнкодера (для извлечения скрытых переменных мелодии) и двух моделей LSTM (для оценки возможности соединения двух мелодий вместе). Модель сначала определяет первую исходную мелодию (обычно мелодию первого такта музыки), а затем выбирает наиболее подходящую мелодию из библиотеки мелодий на основе исходной мелодии для формирования окончательной мелодии. Есть два критерия для оценки пригодности мелодии: один — совпадают ли скрытые переменные текущей и следующей мелодии, а другой — совпадают ли последняя нота текущей мелодии и первая нота следующей мелодии. связаны вместе. Каждый из этих двух критериев отвечает за две разные модели LSTM.
2.2 Структурный
Еще одна проблема алгоритмов генерации мелодий заключается в том, что большинству алгоритмов генерации мелодий не хватает структуры в своих результатах. То есть мелодии, сгенерированные моделью, могут звучать как мелодии в обучающем наборе данных, но в этих мелодиях отсутствует некоторая иерархия абзацев (например, разные части куплета, припева и т. д. популярной музыки).
MusicVAE multivoice generation [3]
《Генерация мультиголоса MusicVAE》Это алгоритм генерации мелодии, который может решать структурные проблемы Его структура показана на следующем рисунке:
MusicVAE использует иерархический метод генерации для управления структурой генерируемых результатов. В отличие от обычного алгоритма генерации мелодии, эта модель добавляет слой проводника после использования кодировщика для извлечения скрытого кода мелодии. Каждый узел в этом слое представляет собой раздел, и под каждым узлом подключается модель RNN для генерации мелодии соответствующего раздела.
При использовании MusicVAE для создания данных мелодии модель может гарантировать, что мелодия, введенная моделью, и мелодия, выведенная моделью, имеют одинаковые характеристики абзаца.
2.3 Разнообразие
Разнообразие относится к тому, существует ли чрезмерное сходство между мелодиями, сгенерированными алгоритмом генерации мелодий, и существующими мелодиями, чтобы избежать некоторых проблем с авторскими правами.
MidiNet [4]
MidiNet
Это алгоритм генерации мелодии, основанный на генеративно-состязательной сети. Алгоритм состоит изGenerator CNN,Discriminator CNNа такжеConditioner CNNОн состоит из трех частей, конкретная структура показана на следующем рисунке:
вConditioner CNNВводом является информация о мелодии предыдущего такта (включая последовательность нот или последовательность гармоний), а выводом является соответствующий многомерный вектор после обработки, эти векторы можно использовать какGenerator CNNдополнительный управляющий вход.
Чтобы добиться разнообразия генерации мелодий, пользователи могут использоватьGenerator CNNПри создании мелодии давайте разныеCNNслой добавленConditioner CNNВывод соответствующего слоя, если пользователю нужно добавить больше ограничений на мелодию, то можно датьGenerator CNNБолее правильный слой добавлен вConditioner CNNсоответствующий вывод, и наоборот. Таким образом, пользователь может контролировать разнообразие генерируемых мелодий.
2.4 Интерактивность
В большинстве существующих алгоритмов генерации мелодии генерация мелодии выполняется автоматически, и лишь немногие модели включают метод генерации, взаимодействующий с пользователями, что приводит к тому, что модели генерации мелодии не поддерживают модификацию или перегенерацию частично сгенерированных результатов.Генеративная модель может только восстановить всю мелодию. Но рабочий процесс композитора при сочинении композиции основан на повторяющихся исправлениях до того, как будет получена окончательная работа. Можно сказать, что большинство существующих алгоритмов генерации мелодий мало помогают музыкантам.
DeepBach chorale generation [5]
《Генерация хорала DeepBach》Это алгоритм генерации мелодии, который поддерживает локальную генерацию мелодии. Конкретная архитектура показана на следующем рисунке:
Основным принципом этой схемы является рассмотрение данных мелодии в прямом и обратном направлениях мелодии во время обучения, поэтому DeepBach использует две сети LSTM, одна из которых извлекает информацию до прогнозируемого момента времени, а другая сеть извлекает время, которое будет предсказано.Информация после точки, выход модели - мелодия текущего момента времени. Другими словами, алгоритм поддерживает завершение мелодии, и пользователь может восстановить неудовлетворительную часть мелодии после создания полной мелодии, чтобы обеспечить интерактивность между алгоритмом и пользователем.
использованная литература
[1] Hadjeres G, Nielsen F (2017) Interactive music generation with positional constraints using anticipation-RNN. arXiv:1709.06404v1
[2] Bretan M, Weinberg G, Heck L (2016) A unit selection methodology for music generation using deep neural networks. arXiv:1612.03789v1
[3] Робертс А., Энгель Дж., Раффель С., Хоторн С., Эк Д. (2018)Иерархическая латентная векторная модель для изучения долговременной структуры в музыке, В: Труды 35-й международной конференции по машинному обучению (ICML 2018). ACM, Монреаль
[4] Yang LC, Chou SY, Yang YH (2017) MidiNet: a convolutional generative adversarial network for symbolic-domain music gen- eration. In: Proceedings of the 18th international society for music information retrieval conference (ISMIR 2017). Suzhou, China
[5] Hadjeres G, Pachet F, Nielsen F (2017) DeepBach: a steerable model for bach chorales generation. arXiv:1612.01010v2
PS: Для получения дополнительной технической галантереи, пожалуйста, обратите внимание на [Публичный аккаунт | xingzhe_ai] и обсудите с ходоками!