«Пение — универсальный язык красоты, доступный для понимания всем вне зависимости от возраста и национальности. В красивом вокале нет фальши, а звуки гармонируют. Мелодия — набор звуков. Условные знаки, обозначающие звуки, — это ноты. Хорошо спеть — значит «попасть в ноты», то есть точно повторить мелодию, либо придумать свою собственную так, чтобы звуки в ней сочетались», — пишет преподаватель вокала с многолетним стажем Екатерина Карпенко, разработавшая методику онлайн-сервиса обучения пению. Программа учит пользователя «попадать в ноты» и оценивает точность освоения навыков.
С 2015 года программисты EDISON разрабатывают «Разумное пение» — сервис, который представляет пение в форме двухмерного графика. На оси абсцисс откладывается время в миллисекундах, на разделенной по нотам оси ординат — частота звука в герцах. Алгоритм считает «основную» высоту звука, наносит ее на плоскость, составляя тем самым график пения. Программа анализирует исполнение и сравнивает расхождение с эталонной дорожкой, заранее записанной учителем. По итогам упражнения программа выставляет оценку, основанную на качестве попадания в ноты.
Построить алгоритм, определяющий высоту звука, оцифрованного микрофоном, оказалось сложно. В идеальных условиях можно использовать метод автокорреляции. В реальных же условиях возникает много посторонних шумов: шуршание одежды, звуки улицы и так далее. Точность алгоритма неприемлемо падает. Применение фильтров шумоподавления, попытки математической подготовки аудиопотока перед автокорреляцией не дали результатов. В какой-то момент инженеры опробовали библиотеку Aubio на языке C, реализующую несколько алгоритмов, один из которых, YINFFT, оказался лучшим по соотношению точности и скорости. Для сайта YINFFT был портирован в JavaScript.
Сигнал делится на фреймы длиной около 12 мс. Звуки тише минимальной громкости фильтруются, затем применяется окно Хеннинга. Подготовленный сигнал попадает на вход алгоритма вычисления высоты звука YINFFT. На выходе — высота звука и уровень достоверности. Недостоверные данные отбраковываются, а по оставшимся строится график.
Объем работ:
- создание сайта;
- создание обучающей программы;
- возможность поделиться оценкой выполнения упражнения в VK, Facebook (признана экстремистской), Twitter;
- подключение платежей «Робокассы».