...

суббота, 26 апреля 2014 г.

Как устроен музыкальный поиск. Лекция в Яндексе

Обычно под музыкальным поиском понимают умение отвечать на текстовые запросы о музыке. Поиск должен понимать, например, что «пятница» – это не всегда день недели, или находить песню по словам «хочешь сладких апельсинов». Но этим задачи музыкального поиска не ограничиваются. Бывает, что нужно распознать песню, которую напел пользователь, или ту, которая играет в кафе. А ещё можно находить общее в композициях, чтобы рекомендовать пользователю музыку на его вкус. Как это делается и какие трудности при этом возникают студентам Малого Шала рассказали Елена Корнилина и Евгений Крофто.

Как устроен текстовый музыкальный поиск




По некоторым данным на сегодняшний день в мире накопилось около тридцати миллионов различных музыкальных треков. Данные эти берутся из различных баз, где эти треки перечисляются и каталогизируются. Работая с музыкальным поиском, вы будете взаимодействовать с привычными объектами: исполнителями, альбомами и треками. Для начала разберемся, как в поиске отличить музыкальные запросы от немузыкальных. В первую очередь, конечно, по ключевым словам в запросе. Маркерами музыкальности могут быть как слова явно указывающие на то, что ищут музыку, например, «слушать» или «кто поет песню», так и более размытые: «скачать», «онлайн». При этом, в казалось бы, совсем простом случае, когда в запросе присутствует часть названия искомого трека, исполнителя или альбома, могут возникнуть проблемы, связанные с многозначностю.

Для примера возьмем наименования четырех отечественных исполнителей:



  • Пятница

  • Пицца

  • Кино

  • 30.02

  • Аквариум




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

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



  • TI NAKAYA ODNA00 (Дорн)

  • Sk8 (Нервы)

  • ДоползлиДаподдай (Dёргать)

  • N1nt3nd0

  • Oxxxymiron

  • dom!No

  • P!nk

  • Sk8ter boi (Avril Lavign)




Кроме того, существует множество исполнителей с похожими или даже одинаковыми названиями. Допустим, в поиск пришел запрос [агилера]. На первый взгляд все понятно, пользователь ищет Кристину Агилеру. Но все же остается некоторая вероятность, что пользователю был нужен совсем другой исполнитель – Paco Aguilera.


Очень распространена ситуация с совместным исполнением двух и более исполнителей. Например, песню Can't Remember to Forget You можно отнести сразу к двум исполнительницам: Shakira и Rihanna. Соответственно в базе должна быть предусмотрена возможность добавления объединенных исполнителей.


Еще одна особенность – это региональность. В разных регионах могут встречаться исполнители с одинаковыми наименованиями. Поэтому, нужно учитывать, из какого региона пришел запрос, и выдавать в результатах поиска наиболее популярного в этом регионе исполнителя. Например, исполнительницы с именем Zara есть как в России, так и в Турции. При этом, их аудитории практически не пересекаются.


C названиями треков тоже все на так просто. Очень распространены кавер-версии, когда один исполнитель записывает свою интерпретацию трека другого исполнителя. При этом, кавер-версия может быть даже популярнее оригинала. К примеру, в большинстве случаев по запросу [видели ночь] версия группы Zdob si Zdub будет более релевантной, чем оригинальный трек группы «Кино». Аналогична ситуация и с ремиксами.


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


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


Трудности перевода




Очень часто в разных странах закрепляются различные варианты написания имен исполнителей и композиторов. Поэтому нужно учитывать, что и пользователь может искать по любому из этих вариантов, и в базе могут встречаться разные написания. У имени Петра Ильича Чайковского есть около 140 вариантов написаний. Вот лишь некоторые из них:


  • Пётр Ильич Чаиковский

  • Peter Ilych Tchaikovsky

  • Pyotr Ilyich Tchaikovsky

  • Pyotr Il'ic Ciaikovsky

  • P.I. Tchaikovski

  • Pyotr Il’yich Tchaïkovsky

  • Piotr I. Tchaikovsky

  • Pyotr İlyiç Çaykovski

  • Peter Iljitsch Tschaikowski

  • Pjotr Iljitsch Tschaikowski




Кстати, когда мы говорили об основных объектах, с которыми приходится работать в музыкальном поиске, мы не упомянули композиторов. В большинстве случаев этот объект действительно не играет важной роли, но только не в случае с классической музыкой. Тут ситуация практически противоположная, и опираться нужно именно на автора произведения, а исполнитель – объект второстепенный, хотя совсем не принимать этот объект во внимание тоже нельзя. Также есть свои особенность в наименованиях альбомов и треков.

Анализ аудиосигнала




Помимо метаданных трека и текстов песен в музыкальном поиске можно использовать данный, полученные при помощи анализа непосредственно аудио сигнала. Это позволяет решить сразу несколько задач:


  • Распознавание музыки по фрагменту, записанному на микрофон;

  • Распознавание по напеванию;

  • Поиск нечетких дубликатов;

  • Поиск кавер-версий и ремиксов;

  • Выделение мелодии из полифонического сигнала;

  • Классификация музыки;

  • Автотегирование;

  • Поиск похожих/рекомендации.




Цифровой аудиосигнал можно представить в виде изображения звуковой волны:


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



Чем уже интервалы между точками, тем выше частота дискретизации сигнала, и тем шире частотный диапазон, который можно закодировать таким образом.


Мы видим, что амплитуда колебаний зависит от времени и коррелирует с громкостью звука. А частота колебаний напрямую связана с высотой звука. Как же нам получить информацию о частоте колебаний: преобразовать сигнал из временного домена в частотный? Здесь нам на помощь приходит преобразование Фурье. Оно позволяет разложить периодическую функцию в сумму гармонических с разными частотами. Коэффициенты при слагаемых будут давать нам те частоты, которые мы хотели получить. Однако мы хотим получить спектр нашего сигнала, не теряя его временную составляющую. Для этого применяется оконное преобразование Фурье. По сути, мы делим наш аудиосигнал на короткие отрезки – фреймы – и вместо одного спектра получаем набор спектров – отдельно для каждого фрейма. Сложив их вместе мы получим примерно такую картину:



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


Классификация признаков




Такие спектрограммы лежат используются большинства применяемых в музыкальном поиске методов анализа. И прежде чем двигаться дальше, нам стоит разобраться в том, какие признаки спектрограммы нам могут быть полезны. Классифицировать признаки можно двумя способами. Во-первых, по временному масштабу:


  • Frame-level – признаки, относящиеся к одному столбцу матрицы.

  • Segment-level – признаки, объединяющие несколько фреймов.

  • Global-level – признаки, описывающие весь трек целиком.




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


  • Low-level:


    • Zero Crossing Rate – позволяет неплохо различать музыку и речь;

    • Short-time energy – отражает изменение энергии во времени;

    • Spectral Centroid – центр масс спектра;

    • Spectral Bandwidth – разброс относительно центра масс;

    • Spectral Flatness Measure – характеризует «гладкость» спектра. Помогает отличать сигнал похожий на шум от сигналов с выраженной тональностью.



  • Middle-level:


    • Beat Tracker;

    • Pitch Histogram;

    • Rhythm Patterns.



  • High-level:


    • Музыкальные жанры;

    • Настроение: веселая, грустная, агрессивная, спокойная;

    • Вокальная / Инструментальная;

    • Ощущаемая скорость музыки (медленная, быстрая, средняя);

    • Пол вокалиста






Досмотрев лекцию до конца, вы узнаете, как именно эти признаки помогают решать задачи музыкального поиска, а также, какое отношение к нему имеет компьютерное зрение и машинное обучение.

This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий