Рейтинг@Mail.ru
Verdi
Распознавание и поиск напетых или наигранных мелодий, музыкальных фрагментов.

- Что?


Распознавание напетой, наигранной, намурлыканой, насвитстанной или воспроизведенной мелодии.

- Зачем?


Бывает, в голове крутится мелодия. Очень назойливо крутится. Очень знакомая мелодия. А может, совсем не знакомая, которую вы только что услышали в маршрутке. И эта мелодия не дает вам покоя: хочется узнать или вспомнить название и исполнителя. Самый простой способ это сделать - напеть ее, и Verdi выдаст всю информацию о мелодии, авторе, исполнителе, альбоме и всём остальном, что связано с этой мелодией.

- Кому?


Verdi - это приложение для всех любителей музыки. Приложение для меломанов, держателей больших и малых музыкальных коллекций, для тех, кого может зацепить мелодия, услышанная где угодно. Пользователю Verdi не нужно уметь играть на музыкальном инструменте или иметь музыкальный слух: достаточно приблизительно намурлыкать понравившуюся композицию - и она распознается!

- Шазам, что ли?


Уже существует несколько приложений, в которых реализован похожий функционал. Самые известные из них - Shazam, Sony TrackID и SoundHound. Создатели этих проектов отталкиваются от физических параметров музыкальных треков. Мы же берем за основу нашего алгоритма не только спектральные характеристики сигнала, но также психоакустические механизмы человеческого восприятия и теорию музыки. Особенности нашего проекта этим не ограничиваются:

  • Частотная предобработка сигнала. Распознавание музыкальных образов - задача, тесно связанная с моделированием восприятия сигнала именно человеком. Для этого на входе алгоритма мы используем частотный фильтр, эмулирующий человеческое ухо. Это позволяет проводить дальнейшую обработку сигнала в том виде, в котором он оказывается в нашей голове.

  • Обработка мелодии, а не спектра. Композиторы, сочиняя свои произведения, и музыканты, их воспроизводя, оперируют нотами. Они не задумываются о частоте или спектре сигнала, но думают о звучании и тембре мелодии. Наш подход основан на этом же принципе. Мы храним сигнал не в виде осциллограммы или спектров, а в виде нот. Это дает нам возможность сосредоточиться на самой мелодии, не взирая на способ ее воспроизведения. Shazam и TrackID сравнивают именно спектрограммы файлов, то есть для распознания трека этими программами на вход нужно подать оригинальную запись. Наш алгоритм разпознает мелодию трека, сыгранную/спетую/смурлыканную любым образом.

  • Нечеткий поиск. Не все мелодии запоминаются досканально. Не все могут точно напеть или сыграть мелодию. Да и сами произведения могут исполняться в различных обработках. Безусловно, на это нельзя закрывать глаза. В нашем алгоритме предусмотрен нечеткий поиск как по порядку или пропуску нот, так и по чистоте исполнения. Таким образом, требования по представлению входных данных снижаются по сравнению с конкурентами, открывая более широкие возможности для применения приложения.

  • Открытая, дополняемая база данных. Все крупные конкуренты используют закрытую базу данных композиций. Это означает, что количество распознаваемых ими треков сильно ограничено. С учетом того, что все эти приложения изначально создавались англоязычными разработчиками, их база ориентирована на англоязычные композиции либо на самые известные композиции других стран. Чтобы исполнителю попасть в эту базу, ему нужно достичь заметных успехов в музыкальной отрасли. Verdi же ориентирован не только на международно популярные композиции. Наполнение базы данных звуковых отпечатков планируется проводить с использованием локальных сервисов прослушивания музыки (например, Яндекс.Музыка, Вконтакте, Jango и т.д.) с возможностью ручного добавления треков, что будет полезно малоизвестным музыкантам. Это существенно расширит локализацию приложения и обеспечит приток пользователей.

  • Определение оригинальных композиторов. Если композиция хороша, ее исполняют многие. При этом многим каверам присуща своя стилистика исполнения: джазовые музыканты хотят представить слушателю свое видение самых известных поп-хитов, а рок-исполнители по-своему исполняют классические произведения. Конечно, при смене стилистики радикально меняется спектр трека. Но мелодия, как правило, остается той самой, которую написал автор первоначальной композиции. Это даст нашему приложению возможность предложить пользователю различные варианты исполнения его любимой песни.

- И всё?


Verdi - это не просто приложение для распознавания музыкальных фрагментов. Это платформа для разработки многих музыкальных сервисов. Среди них:

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

Что уже есть


  • разработан и смоделирован сам алгоритм выделения мелодии из музыкального фрагмента;
  • продуманы алгоритмы подавления шумов и аккомпанемента для более четкого определения мелодии;
  • создана концепция хранения и быстрого нечеткого поиска мелодий в базе данных;
  • в рамках курса C++ Технопарка создан прототип сервиса.

Чему научим


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

Кого ждем в команду


Всех, кто интересуется музыкой, цифровой обработкой сигналов, работой с большими объемами данных; кому интересно разобраться в том, как устроен человеческий слух и восприятие музыки.
Комментарии
9 июня 2016 г. 17:19

Я правильно понял, что ЦА сервиса - люди , которые не успели достать телефон из кармана и запустить Шазам пока играла мелодия ?

9 июня 2016 г. 17:38

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

9 июня 2016 г. 19:26

Насколько я понял, вы хотите искать не только точные соответствие, но и похожие с музыкальной точки зрения (а не по спектральные параметрам) мелодии. Это очень круто, ящитаю!

9 июня 2016 г. 19:39

SoundHound отлично распазнает по напеву.

9 июня 2016 г. 20:49

Илья, да, именно с этого мы и планируем начать. Как продолжение - добавить в связку с этим в том числе шазамовский алгоритм, а также найти и реализовать другие способы распознавания мелодий, например, по произнесенному тексту песни.

Абдулла, база данных SoundHound весьма ограничена по исполнителям. А добавление новых композиций в нее для маломасштабных артистов проблематично. Идея нашего приложения - собрать базу данных музыкальных отпечатков в том числе многих региональных песен, а также дать возможность малоизвестным исполнителям добавлять свои треки. Естественно, при этом потребуется некоторая модерация поступающего материала. У нас уже есть несколько мыслей по поводу того, как это реализовать.

17 июня 2016 г. 12:43

Проект интересный, только не очень пока понятно как прикручивается психоакустика.

17 июня 2016 г. 13:27

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

18 июня 2016 г. 1:16

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

19 июня 2016 г. 14:22

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