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

advertisement
Международный конкурс научно-технических работ
школьников «Старт в науку»
Программный комплекс для
автоматического преобразования
музыкальных аудиозаписей в
музыкальный текст.
Руднев Виктор
8 класс
Научный руководитель — П. А. Чуриков
Москва 2012
Оглавление
Оглавление ............................................................................................................................ 1
Введение ................................................................................................................................ 2
Цель работы .......................................................................................................................... 2
Задачи работы ....................................................................................................................... 2
Музыкальная нотация .......................................................................................................... 2
Преимущества музыкальной нотации перед аудиозаписями .......................................... 3
Цифровой вариант музыкальной нотации – формат MIDI .............................................. 4
Математические модели звука ............................................................................................ 4
Спектр.................................................................................................................................... 4
Спектрограмма ..................................................................................................................... 5
Сравнение известных методов распознавания нот ........................................................... 6
Метод распознавания нот, предложенный в данной работе ............................................ 7
Разделение аудиозаписи на музыкальные звуки ............................................................... 8
Распознавание основных частот путём фильтрации гармоник ....................................... 9
Распознавание основных частот путём обработки разностей частот пиков ................ 10
Интерполяция пиков спектра ............................................................................................ 10
Табулатуры ......................................................................................................................... 11
Реализация клиент-серверной архитектуры .................................................................... 12
Графический интерфейс .................................................................................................... 12
Дальнейшие шаги ............................................................................................................... 13
Результаты........................................................................................................................... 14
Приложение 1. ........................................................................................................................ 15
Модульное устройство серверной части комплекса:...................................................... 15
Модульное устройство клиентской части комплекса: ................................................... 15
1
Введение
Музыкальная нотация является одним из самых эффективных и компактных
способов представления музыкально организованных образцов звука. Она основана на
законах музыкальной гармонии и является неотъемлемой частью образования любого
человека, профессионально занимающегося музыкой. Поэтому логично начать
создание машинного музыкального интеллекта с создания алгоритмов, позволяющих
выделять из аудиозаписей музыкальную компоненту и сохранять её с использованием
музыкальной нотации.
Цель работы
Целью работы была разработка программного комплекса для автоматического перевода
музыкальных аудиозаписей в нотную запись.
Задачи работы
1. Разработка и реализация алгоритмов определения нот музыкальных
инструментов.
2. Разработка и реализация алгоритмов упрощения и визуализации музыкальных
партитур.
3. Разработка кросс-платформенного простого и удобного приложения с
дружественным интерфейсом для локальной работы с комплексом.
4. Реализация клиент-серверной архитектуры в программном комплексе с целью
выполнения трудоемких вычислений на удаленном сервере по запросу
клиентских приложений, размещенных на мобильных устройствах.
Музыкальная нотация
Два самых известных способа музыкальной нотации - это универсальная
линейная и табулатура (для струнных инструментов). Линейная нотация (см. рис. 1)
состоит их 5 линеек, разделенных на такты чертами и из нот, записанных на линейках
или между ними, если 5 линеек не хватает для описания высоты нот, то сверху или
снизу рисуются дополнительные линейки. Табулатура струнных инструментов (см.:
2
Рис. 2) использует вместо нот буквы и цифры. В табулатуре мелодия показана на
нескольких горизонтальных линиях, соответствующих струнам гитары, ноты
обозначены номерами ладов.
Рисунок 1.
Пример универсальной линейной нотации
Рисунок 2.
Пример табулатуры
Преимущества музыкальной нотации перед аудиозаписями
Итак, для чего же нужно переводить звуковые записи в ноты? Во-первых, нотный
текст — это самый компактный способ записи музыки. Во-вторых, несмотря на
краткость, нотная запись дает достоверное, легко узнаваемое представление
музыкального произведения. Благодаря этому, музыку, записанную в виде нот, легко
воспроизвести в оригинальном исполнении и легко аранжировать для исполнения
другими инструментами.
Вообще, нотная запись отражает основные особенности музыки, выделяющие ее из
остального мира звуков:
1) музыкальный звук имеет определенный тон (высоту), при этом соотношение
между частотами разных тонов строго определяется музыкальным строем;
2) у музыки есть ритм - регулярное чередование длительностей и громкости звуков
во времени.
3
Цифровой вариант музыкальной нотации – формат MIDI
Для записи результатов транскрибирования в файл был выбран стандарт MIDI.
MIDI (Musical Instrument Digital Interface) - самый распространённый стандарт
цифрового представления музыкальных записей среди производителей музыкальной
техники и производителей музыкальных продуктов. Основную часть MIDI файла
составляют «события», которые описывают моменты начала нот и их окончаний, смену
музыкального инструмента, смену темпа и так далее.
Математические модели звука
Звук можно представить многими способами. Их можно разделить на 3 большие
категории:

временные - так выглядит звук, например, при записи с микрофона,

частотные представления, и

частотно-временные представления, то есть комбинирующие первые два.
Наиболее известными временными представлениями является график колебания
среды и график её автокорреляции.
Наиболее известным частотным представлением является спектр звука.
Наиболее известными частотно-временными представлениями звука являются
спектрограмма и вейвлетно-преобразованный вид.
Спектр
Спектром сигнала называется распределение его энергии по частотам. На рис. 3
нарисовано временное представление ноты ми 4 октавы, извлеченной на электрогитаре,
в дальнейшем этот звук и будет использоваться для демонстрации видов представления
звуков.
Рисунок 3.
Временное представление звука ми 4-й октавы
4
На рис. 4 изображен спектр того же звука, полученный из временного
представления с помощью алгоритма Быстрого Преобразования Фурье.
Рисунок 4.
Спектр звука ми 4-й октавы (электрогитара)
Преобразование Фурье - это преобразование функции, превращающее её в
совокупность частотных составляющих. На спектре мы можем обнаружить пики,
являющиеся гармониками ноты. Частота каждой гармоники должна делиться нацело на
основную частоту. В большинстве случаев основной частотой является частота первой
гармоники, но бывают очень редкие случаи, когда первая гармоника отсутствует, эти
случаи не рассматриваются в данной работе.
Спектрограмма
Спектрограммой сигнала называется временная зависимость динамического
распределения энергии звука по частотам в окрестности момента времени t.
На спектрограмме, изображённой на рис. 5, мы видим ту же систему частотных
компонент, что и на спектре, приведенном на рис.4, но теперь мы видим, как гармоники
ноты ми 4 октавы затухают во времени.
5
Рисунок 5.
Пример спектрограммы звука ми 4 октавы (электрогитара)
Сравнение известных методов распознавания нот
Известно много подходов к решению задачи о распознавании нот в аудиозаписях.
Их можно разделить на несколько больших категорий:

на базе обработки спектрограммы,

автокорреляционные методы,

гибридные методы

и другие методы, в качестве примера метода из этой категории
рассматривается метод Zero Crossing Points.
Базовый алгоритм у них, за исключением ZCP, сводится к Быстрому
Преобразованию Фурье. Методы на базе обработки спектрограммы и гибридные
методы нацелены на полифоническую музыку, а автокорреляционные методы и ZCP –
6
на монофоническую.
Недостатком методов на базе спектрограммы является то, что чем больше мы
хотим узнать время исполнения ноты, тем меньше мы знаем про её частотные
характеристики, и наоборот.
В автокорреляционных методах, с одной стороны, в низких частотах разрешение
графика большое, но, с другой стороны, в высоких частотах разрешение низкое. Это
получается потому, что автокорреляция строится с дискретным смещением сигнала t,
соответственно частота будет tсиг/t, где tсиг – количество точек на секунду в записи. То
есть первая частота, которую мы получим – tсиг, вторая – tсиг/2, третья – tсиг/3 и так
далее. Гибридные методы являются компромиссом между первым и вторым методом.
Zero Crossing Points – метод основанный на подсчёте точек на временном
представлении сигнала, пересекающих нулевую отметку. У него очень высокая
производительность, но он способен работать только с такими простыми
периодическими сигналами как синусоиды и прямоугольные.
Метод распознавания нот, предложенный в данной работе
Поэтому я решил разработать новый метод, который позволяет максимально
точно выделить частоты, сохраняя при этом максимально точно временные
характеристики сигнала. Для этого я решил разделить сигнал на участки, в которых
частотные характеристики существенно не меняются, это можно сделать очень точно,
поскольку нас не интересуют частотный состав на этих участках, поэтому мы можем
применить алгоритм, который выделяет начало этого участка с высокой точностью. В
дальнейшем к этим участкам можно будет применить любой из ранее описанных
алгоритмов, в том числе автокорреляция, БПФ, и так далее, что достигается гибкостью
мною разработанной платформы.
7
Рисунок 6.
Блок-схема предложенного метода распознавания нот
Программный комплекс написан на языке C++ с использованием библиотеки Qt
и содержит более 10000 строк кода. Вычислительная часть проекта состоит из 8
модулей, зависимости которых Вы можете увидеть в приложении 1.
Перейдём к алгоритмической части.
Разделение аудиозаписи на музыкальные звуки
Итак, наша первая задача - разделить аудиозапись на отдельные музыкальные
звуки, имеющие определённые тон и длительность. Начнём с алгоритма определения
положения нот (см.Рис. 7).
Во-первых, он строит огибающую амплитуды звука методом «прессования»
временного представления звука. Во- вторых, он находит дифференциальный график из
полученных значений мощности. Далее подсчитывается дисперсия полученных
дифференциальных значений и находятся пики, которые удовлетворяют критерию
совместимости. Пока критерием совместимости является превышение мощности пика
дисперсии, умноженной на константу при дисперсии. Найденные пики исключаются из
расчета дисперсии. Если количество повторов операций с 3 по 5 НЕ достигло
константы повторений, то повторить эти операции еще раз, иначе закончить
выполнение алгоритма, вернув координаты пиков для дальнейшего использования, они
8
являются моментами начала нот.
Рисунок 7.
Алгоритм выделения в аудиозаписи моментов изменения
звуков
Распознавание основных частот путём фильтрации
гармоник
Следующим алгоритмом является алгоритм определения основных частот на
основе фильтрации гармоник среди найденных пиков (см. Рис. 8). Для начала
находится спектр звука. Потом находятся пики на нём и найденные пики уточняются.
После этого примерно одинаковые частоты объединяются. Среди оставшихся частот
фильтруются все гармоники, кроме первых. Напомним, что частоты гармоник делятся
друг на друга. Результаты этих операций и будут являться основными частотами в этом
алгоритме.
9
Рисунок 8.
Алгоритм определения основных частот
Распознавание основных частот путём обработки
разностей частот пиков
Алгоритм определения основных частот на основе обработки разностей
найденных пиков отличается только тем, что работа производится с разностями пиков.
Сразу при нахождении разностей, проверяется делимость вычитаемого и
уменьшаемого на разность, если они делятся, то с ними продолжается работа, а если
нет, то они выбрасываются как некорректные.
Интерполяция пиков спектра
Алгоритм работает эффективно, при условии точного определения частот
гармоник. Частота гармоники редко совпадает с дискретным рядом частот БПФ. В
таком случае на спектре появляются не одна, а несколько рядом лежащих пиков. Пик с
наибольшей амплитудой даёт первое приближение для частоты гармоники, для
большей точности — надо произвести интерполяцию.
Я использовал параболическую интерполяцию по трём точкам. Изначально у нас
есть три точки: найденный пик (х,у), точка перед пиком (хр,уp) и точка после пика
(хn,уn). Через три точки можно провести только одну параболу. Мы можем вывести
формулу координаты вершины по трём точкам:
x1 =
x +  y n  y p x n  x p 
42y  y p  y n 
10
Рисунок 9.
Параболическая интерполяции положения спектральных
пиков
Табулатуры
Одной из эксклюзивных возможностей приложения является возможность
автоматического создания и визуализации табулатур из музыкальных партитур. С
самого начала на вход алгоритма подаются результаты транскрибирования в формате
MIDI, далее ноты, содержащиеся в них, сортируются по возрастанию времени их
начала. Затем по каждому моменту, в котором начинается нота, для каждой такой ноты
находится её положение на грифе. После генерации табулатуры происходит её
оптимизация, а именно устраняются случаи, когда одновременно приходится брать,
например, ноты на первом и двенадцатом ладу, что физически невозможно, путём
сдвига ноты, находящейся на более низком ладу.
11
Рисунок 10.
Алгоритм генерации табулатуры из MIDI данных
Реализация клиент-серверной архитектуры
Также отдельной особенностью данного программного комплекса является её
сетевая прозрачность, достигнутая использованием клиент-серверной модели. Сетевая
прозрачность заключается в том, что комплекс делится на две свободно общающиеся
части — серверную и клиентскую. Серверная принимает запросы на
транскрибирование и выполняет их, а клиентская эти запросы посылает и получает
результат их выполнения. Таким образом транскрибирование будет проходить быстро
как на малопроизводительных компьютерах так и на производительных компьютерах
за счет использования удаленного сервера вычислений, который можно развернуть
менее чем за 15 минут.
Графический интерфейс
Перейдём к пользовательской части проекта, а именно на то, как выглядит
процесс транскрибирования для пользователя. С самого начала пользователю предстаёт
столкнуться с главным окном программы (см. рис. 11). С помощью него он может
транскрибировать звуковой файл, ответив при этом на несколько простых вопросов или
проиграть уже существующую или уже транскрибированную мелодию, нажав на
кнопку «Проиграть». В начале воспроизведения индикатор положения проигрывания
мелодии начнёт двигаться.
Приложение отображает партитуру в виде уже описанной табулатуры и в виде
Piano Roll. Ноты на Piano Roll отображаются в виде прямоугольников, ширина который
показывает длительность ноты, вертикальное положение — высоту, а горизонтальное
12
положение — время начала, непрозрачность – мощность.
Рисунок 11.
Главное окно приложения - содержимое звукового файла
переведено в формат MIDI, ноты отображены в формате Piano Roll; панель
в нижней части окна приложения отображает табулатуру.
Дальнейшие шаги
1. Реализовать поддержку мульти-инструментальных композиций, а именно
разработать алгоритм разделения нот на различные инструменты.
2. Развивать возможности для редактирования во встроенном редакторе.
3. Написать графический модуль для отображения партитур в универсальной
линейной музыкальной нотации.
4. Портировать клиентскую часть приложения на мобильные устройства с
Android/iOS/Symbian.
13
Результаты
1. Разработано и реализовано 2 оригинальных алгоритма определения нот
музыкальных инструментов.
2. Разработан оригинальный алгоритм определения моментов начала нот.
3. Разработана простая и удобная библиотека для работы с MIDI.
4. Разработан и реализован модуль для создания и визуализации табулатур, а также
их редактирования.
5. Разработаны универсальные кросс-платформенные библиотеки для
автоматизированного анализа звуковых сигналов.
6. Разработано кросс-платформенное простое и удобное приложение с
дружественным интерфейсом для локальной работы с комплексом.
7. Разработана и реализована клиент-серверная модель для мобильных
приложений с использованием облачных вычислений.
Программный комплекс написан на языке C++ с использованием библиотеки Qt и
содержит более 10000 строк кода.
14
Приложение 1.
Модульное устройство серверной части комплекса:
Модульное устройство клиентской части комплекса:
15
Download