Музыкальный поиск Яндекса помогает находить альбомы, отдельные треки или исполнителей, в том числе по цитате из песни. Всё это — текстовые разновидности поиска. А если пользователь хочет узнать, какая музыка играет в данный момент, запросом становится само содержимое аудиофайла, непосредственно звуки музыки. Именно так устроено, например, «Распознавание» в мобильном приложении Яндекс.Музыка.
В докладе мы обсудим особенности разных подходов к решению этой задачи и посмотрим, какие характеристики можно извлекать из аудиосигнала. И, конечно, поговорим о реализации поиска по музыкальному фрагменту в Яндексе, о возникающих сложностях и способах их решения.
10. 10
Формат запроса
! Наш запрос – это фрагмент звукового сигнала,
записанный с помощью микрофона
11. 11
Ограничения
! Наш запрос – это фрагмент звукового сигнала,
записанный с помощью микрофона
– Высокий уровень искажений
– Минимальная продолжительность запроса
12. 12
Требования
! Наш запрос – это фрагмент звукового сигнала,
записанный с помощью микрофона
– Высокий уровень искажений
– Минимальная продолжительность запроса
! Большой размер базы треков
! Возможность масштабирования
! Ответ за приемлемое время
13. 13
Особенность
Поиск по примеру (Query by exact example)
! Что требуется найти:
– Точное совпадение с записанным фрагментом
! Что не требуется находить:
– Похожие треки
– Cover-версии
– Другие исполнения
21. 21
Извлечение признаков
! Shannon Entropy
𝑆 𝐸↓𝑖, 𝑏 =∑𝑢= 𝑙↓𝑏 ↑ 𝑢↓𝑏 ▒| 𝑓↓𝑖 ( 𝑢)| 𝑙𝑜𝑔↓2 | 𝑓↓𝑖 ( 𝑢)|
! Renyi Entropy
𝑅 𝐸↓𝑖, 𝑏 =1/1− 𝑟 𝑙𝑜𝑔(∑𝑢= 𝑙↓𝑏 ↑ 𝑢↓𝑏 ▒| 𝑓↓𝑖 ( 𝑢)|↑𝑟 )
Энтропия (в теории информации) – мера неопределенности какого-либо
опыта, который может иметь разные исходы, а значит, и количество
информации.
22. 22
Извлечение признаков
Mel-frequency Cepstral Coefficient (MFCC)
! Частотная шкала переводится в Mel-масштаб
! Берется логарифм мощности
! Вычисляется дискретное косинусное преобразование
Изначально использовались в качестве признаков в распознавании речи
23. 23
Извлечение признаков
! Локальные максимумы в спектрограмме
! Вейвлет-преобразование
Вейвлет – это математическая функция, позволяющая анализировать
различные частотные компоненты данных.
24. 24
Сокращение размерности
! Gaussian Mixture Model (GMM)
! Hidden Markov Model (HMM) – статистическая модель, имитирующая
работу процесса, похожего на Марковский процесс с неизвестными
параметрами, и задачей ставится разгадывание неизвестных параметров
на основе наблюдаемых.
! MinHash – техника для быстрой оценки близости двух множеств.
32. 32
Отсечение ложных срабатываний
False acceptance rate
𝐹𝐴𝑅= 𝐶 𝑜𝑢𝑛𝑡↓01 / 𝐶 𝑜𝑢𝑛𝑡↓00
+ 𝐶 𝑜𝑢𝑛𝑡↓01
False rejection rate
𝐹𝑅𝑅= 𝐶 𝑜𝑢𝑛𝑡↓10 / 𝐶 𝑜𝑢𝑛𝑡↓10
+ 𝐶 𝑜𝑢𝑛𝑡↓11
Да Нет
Да
Нет
Ответ поиска
Естьлирелевантныйответ?
33. 33
Отсечение ложных срабатываний
! Нужно найти баланс
! Подбор порога для отсечения
Запросы
(отсортированы по максимальной близости)
Степеньблизости
Множество запросов
с релевантным ответом
Множество запросов
без релевантного ответа
37. 37
A. Wang
! Предложил искать локальные максимумы в спектрограмме
! Важно только «положение» максимума, а не амплитуда
! Для повышения уникальности пики объединяются в пары
! Сравнение: ищется смещение, максимизирующее число совпавших пар
пиков
A. Wang (2003). An Industrial-Strength Audio Search Algorithm.
39. 39
Наш выбор
! Проведен первичный анализ статей
! Интуитивно подход Wang лучше
! Наличие доступного прототипа (Dan Ellis)
! Наличие параметров, возможность подстроить алгоритм
40. 40
Наш выбор: реализация
! Этапы реализации подхода:
– Прототип переписан на с++
– Реализована схема построения индекса
– Подбор параметров для обеспечения необходимого уровня распознавания
– Оптимизация поиска
– Двухуровневый поиск – обеспечение масштабируемости
– Анализ ложных срабатываний
41. 41
Спектрограммы
Сигнал на входе mono 8000Hz
Параметры построения
спектрограммы:
! Размер окна 512 samples
! Перекрытие 50%
Записанный фрагмент
Искомый фрагмент оригинального трека
Время
Частота
Амплитуда
Частота
Амплитуда
42. 42
Инициализация порога
! Берем максимум энергии в
первых n фреймах, по каждой
частоте
! Каждый максимум размываем
по Гауссу
! Полученные значения и есть
пороги (в каждой частоте свой)
50 100 150 200 250
0
0.5
1
1.5
2
2.5
3
3.5
4
Original signal
Positive local maxima
Final output
(J.-S. Roger Jang)
43. 43
Отбор пиков
! Применяем пороговое «лезвие» к
фрейму
! Берем все, что оказалось выше
порога
! Ищем локальные максимумы
Частота
Амплитуда
44. 44
Корректирование порогов
! Значения энергии отобранных
пиков используются для обновления
порогов
! Снова сглаживаем по Гауссу
! При переходе от фрейма к
фрейму порог уменьшается
(«опускающееся лезвие») Время
Амплитуда
45. 45
Извлеченные пики
Наборы пиков в запросе (вверху) и в
фрагменте оригинального трека
(внизу)
Записанный фрагмент
Искомый фрагмент оригинального трека
Время
Частота
Амплитуда
Частота
Амплитуда
46. 46
Объединение пиков в пары
Объединяем пики в пары
Плюсы:
! Увеличиваем уникальность ключа
в индексе
! Уменьшаем объем вычислений
Минусы:
! Воспроизводимость пары ниже
чем у пиков
Время
Частота
Записанный фрагмент
Искомый фрагмент оригинального трека
Амплитуда
Частота
Амплитуда
47. 47
Сравнение
Считаем гистограмму число
совпадений для разных смещений
Сдвиг по времени
Числосовпадений
Записанный фрагмент
Искомый фрагмент оригинального трека
Время
Частота
Амплитуда
Частота
Амплитуда
48. 48
Подбор параметров
! Увеличение плотности пиков
! Какими параметрами можно регулировать отбор пиков
– Число пиков на фрейм
– Число пар для каждого пика
– Скорость снижения порога
! Цена высокой плотности пиков – увеличение объема вычислений
53. 53
Фильтрация ложных срабатываний
! Анализ значений
«релевантности» (близость
фрагмента трека и запроса)
! Ищем резкий перепад значений
! Если не находим, считаем, что
релевантного трека у нас в базе нет.
Треки
(отсортированные по релевантности)
Релевантность
55. 55
Что дальше
Это только начало пути
Над чем будем работать:
! Добавить инкрементальный поиск
! Нормализация итогового score
! Попробовать Mel-масштаб для шкалы частот
! Попробовать сравнивать спектрограммы как изображения
! Машинное обучение для построения сигнатур
56. 56
Y. Ke, D. Hoiem, R. Sukthankar
! Предложили рассматривать спектрограммы как изображения
! Применение методов «компьютерного зрения»
! Признаки Viola/Jones
! Отбор признаков (сокращение числа признаков) с помощью AdaBoost
Y. Ke, D. Hoiem, R. Sukthankar (2005). Computer Vision for Music Identification.
57. 57
S. Baluja, M. Covell
! Спектрограмма разбивается на фрагменты (Spectral Images)
! К каждому фрагменту применяется вейвлет-преобразование
! Отбирается топ самых «сильных» вейвлетов и берется их знак
! Полученный разреженный вектор «сжимается» с помощью MinHash
! Для поиска кандидатов используется локально чувствительное
хэширование (LSH)
! Для отобранных кандидатов считается расстояние Хэмминга
S. Baluja, M. Covell (2006). Content Fingerprinting Using Wavelets.
58. 58
Ссылки на статьи
! J. Haitsma, T. Kalker (2002). A Highly Robust Audio Fingerprinting System.
! A. Wang (2003). An Industrial-Strength Audio Search Algorithm.
! Y. Ke, D. Hoiem, R. Sukthankar (2005). Computer Vision for Music
Identification.
! S. Baluja, M. Covell (2006). Content Fingerprinting Using Wavelets.
! D. Ellis (2009). Robust Landmark-Based Audio Fingerprinting.