Анализ римских чисел с использованием графовых нейронных сетей

Исследование римских чисел с помощью графовых нейронных сетей

Введение

В этой статье я хотел бы рассказать о своем пути в разработке модели для автоматического гармонического анализа. Лично мне интересно глубоко понимать музыку. Вопросы вроде “Почему все структурировано так, как есть?” и “О чем думал композитор или художник, пиша эту музыку?” важны для меня. Естественным началом для меня было анализировать основные гармонические элементы произведения.

Просматривая свои старые записные книжки из консерватории, я наткнулся на метод аннотирования и анализа небольших музыкальных отрывков. Он называется анализом римскими цифрами. Идея может показаться сложной, если вы раньше не слышали о ней, но, пожалуйста, потерпите.

Моя цель – создать систему, которая может автоматически анализировать музыкальные нотации. Подавая нотацию, система будет возвращать ту же нотацию с дополнительным секвенсом аккордов в римской нумерации. Это должно работать в основном для классической тональной музыки, но не обязательно ограничено только ею.

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

Введение в римские цифры

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

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

Например, в тональности до-мажор аккорд до-мажор обозначается римской цифрой “I” (заглавная “I” обозначает мажорный аккорд). Аккорд ре-минор обозначается как “ii” (строчная “ii” обозначает минорный аккорд). Аккорд соль-мажор обозначается как “V” (заглавная “V” обозначает мажорный аккорд), потому что это пятый аккорд в тональности до-мажор.

Пример анализа римскими цифрами для двух тактов четырехголосной гармонии до-мажор.

Римские цифры всегда относятся к определенной тональности. Так, если тональность – до-мажор, то римская цифра “V” будет доминантой или аккорд соль-мажор. Однако аккорды могут иметь различные качества, например, минорные или мажорные. В римских цифрах прописные буквы обозначают мажорное качество, а строчные – минорное качество.

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

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

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

Автоматический анализ римскими цифрами

Теперь, когда у нас есть база для представления анализа римскими цифрами на практике, мы можем обсудить, как его автоматизировать. В этой статье мы рассмотрим метод прогнозирования римских цифр из символьной музыки, то есть из цифровых нотаций (MusicXML, MIDI, Mei, Kern, MuseScore и т. д.). Обратите внимание, что вы можете получить некоторые из этих форматов из любого программного редактора нотации, такого как Finale, Sibelius, MuseScore или любого другого. Обычно програмное обеспечение позволяет экспортировать в формат musicxml (без сжатия). Однако, если у вас нет ни одного из этих редакторов, я рекомендую использовать MuseScore.

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

Представления нотного отрывка показаны в середине. Сверху: представление квантованных временных рамок, снизу: графическое представление.

Итак, имея символический нотный лист, граф конструируется, моделируя 3 отношения между нотами.

  • Ноты, начинающиеся одновременно, т.е. с одинаковым началом.
  • Ноты, начинающиеся после окончания другой, т.е. последовательные ноты.
  • Ноты, начинающиеся во время звучания другой, т.е. во время соединения.

Граф нотного листа может использоваться как вход для графовой нейронной сети, которая неявно учится, распространяя информацию вдоль ребер графа. Но прежде, чем объяснить, как модель работает с нотами, давайте кратко объясним, как работают графовые нейронные сети.

Графовые нейронные сети

Итак, что представляют собой графовые нейронные сети? В их основе ГНС являются классом моделей глубинного обучения, разработанных для работы с данными, представленными в виде графов. Как и в реальных сетях, графы состоят из взаимосвязанных узлов или вершин, каждая со своими уникальными характеристиками. ГНС используют это взаимодействие для извлечения полезных отношений и зависимостей, позволяя производить анализ и предсказательные задачи.

Но как работают ГНС? Представьте себе музыкальный нотный лист, где каждая нота – это узел, а отношения между ними представляют соединения между ними. Традиционные модели рассматривают каждую ноту отдельно, игнорируя музыкальный контекст. Однако ГНС учитывают этот контекст, рассматривая и характеристики индивидуальных нот (например, обозначение высоты, длительность) и их взаимоотношения (одинаковое начало, последовательные) одновременно. Агрегируя информацию из соседних узлов, ГНС дают нам возможность понять не только отдельные ноты, но и динамику и паттерны во всей сети.

Для достижения этого, ГНС используют серию итерационных шагов передачи сообщений. На каждом шаге узлы собирают информацию от своих соседей, обновляют свое собственное представление и передают эту обновленную информацию дальше по сети. Этот итеративный процесс позволяет ГНС собирать и уточнять информацию от близлежащих узлов, постепенно создавая всестороннее представление всего графа.

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

Красота ГНС заключается в их способности извлекать значимые представления из графических данных. Изучая местный контекст и объединяя его с глобальной информацией, ГНС могут раскрывать скрытые паттерны, делать точные предсказания и даже генерировать новые идеи. Это делает их незаменимыми в широком спектре областей, от анализа социальных сетей до открытия лекарств, прогнозирования трафика до обнаружения мошенничества и теперь до анализа музыки.

Модель, используемая для анализа Римских цифр, называется ChordGNN. Как следует из названия, ChordGNN – это модель для автоматического анализа Римских цифр на основе графовых нейронных сетей. Особенностью этой модели является использование информации для каждой отдельной ноты, но получение предсказания для каждого уникального события начала ноты в нотном листе, т.е. Римская цифра предсказывается для каждого уникального события начала в нотном листе. Это означает, что несколько нот с одним и тем же началом будут иметь одну и ту же Римскую цифру, так же, как при аннотировании музыкального нотного листа. Однако при использовании графической свертки информация от каждой ноты передается через соседние ноты и начала.

Структура модели ChordGNN.

ChordGNN основана на архитектуре графовых сверточно-рекуррентных нейронных сетей и состоит из стека сверточных блоков GraphSAGE, которые работают на уровне нот.

Графовая свертка следует за слоем объединения Onset-Pooling, который сокращает представления нот до уровня начала, что приводит к векторным вложениям для каждого уникального начала нотоносителя. Это важный шаг, так как перемещает представление от графа к последовательности.

Вложения, полученные с помощью Onset-Pooling, также упорядочены по времени и затем передаются последовательной модели, такой как стек GRU. Наконец, для каждого атрибута, описывающего римские цифры, добавляются простые классификаторы многослойного перцептрона. Таким образом, ChordGNN – это также многозадачная модель.

ChordGNN не непосредственно предсказывает римскую цифру для каждой позиции в нотном стане, а предсказывает степень, локальную тональность, качество, инверсию и основание. Предсказания каждой задачи атрибута комбинируются в единую предсказанную римскую цифру путем анализа предсказаний каждой из задач. Давайте посмотрим, как выглядят выходные предсказания.

Примеры предсказаний ChordGNN

В этом разделе мы рассмотрим некоторые предсказания ChordGNN и даже сравним их с анализом, выполненным человеком. Ниже приведен пример первых тактов из струнного квартета № 3 op.20 Гайдна четвертого движения.

Сравнение прогнозов человеческой аннотации и ChordGNN на отрывке из струнного квартета № 3 op.20 Гайдна.

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

Человеческая аннотация предполагает, что вся вторая половина второго такта представляет собой аккорд viio. Однако он не должен находиться в первой инверсии, поскольку виолончель играет F#, являющийся основой аккорда viio. Однако существует два противоречивых толкования сегмента. Во-первых, viio на третьем такте считается проходящим аккордом между окружающими тониковыми аккордами, ведущим к доминантному аккорду в следующем такте. Второе толкование состоит в том, что viio уже может являться частью продолжительной доминантной гармонии (со вставными аккордами на промежутках), ведущей к аккорду V7. Решение ChordGNN учитывает оба толкования, поскольку оно не пытается группировать аккорды на более высоком уровне, а рассматривает каждую восьмую ноту как отдельный аккорд, а не случай связанный с прохождением.

Сравнение прогнозов человеческой аннотации и ChordGNN на отрывке из фортепианной сонаты Моцарта K279 первое движение. Изображение от автора

Выше приведен еще один пример сравнения прогнозов ChordGNN с оригинальным анализом Пиано-сонаты Моцарта. В этом случае анализ ChordGNN более упрощенный, поскольку он выбирает опустить некоторые аккорды. Это происходит в двух случаях с септаккордом V в 4 инверсии (V2). Это разумное предположение для ChordGNN, поскольку отсутствует бас. Еще одно расхождение между аннотацией и предсказанием происходит при полукаденции в конце. ChordGNN рассматривает C# в мелодии как проходную ноту, в то время как аннотатор выбирает указать расширение #11.

Выводы

В этой статье мы обсудили новый метод автоматизации анализа римских цифр с использованием графовых нейронных сетей. Мы рассмотрели, как работает модель ChordGNN и продемонстрировали некоторые ее предсказания.

Ссылки

E. Karystinaios, G. Widmer. Roman Numeral Analysis with Graph Neural Networks: Onset-wise Predictions from Note-wise Features. Proceedings of International Society of Music Information Retrieval Conference (ISMIR), 2023.

Ресурсы

GitHub – manoskary/ChordGNN: Это репозиторий статьи: Roman Numeral Analysis with Graph…

Это репозиторий статьи: Roman Numeral Analysis with Graph Neural Networks – GitHub – manoskary/ChordGNN…

github.com

Все изображения и графика в этой статье созданы автором.