Каково текущее состояние поиска и сопоставления звуков с практической точки зрения? В настоящее время я удаленно участвую в планировании веб-приложения, которое, среди прочего, будет содержать и предоставлять базу данных записанных коротких аудиоклипов (максимум 3-5 секунд, имена людей). Был поднят вопрос, можно ли реализовать поиск на основе голосового ввода пользователя. Моя интуиция подсказывает мне, что это невыполнимая задача как с вычислительной, так и с алгоритмической точки зрения, особенно в веб-приложении (и, кроме того, это не основная функция приложения). Я понимаю, что, возможно, существует ряд академических проектов и что это была бы хорошая тема для исследования, но это не то, что можно было бы внедрить в веб-приложение среднего размера в качестве дополнительной функции. Чтобы подтвердить свои утверждения, я потратил полчаса на поиски, чтобы не пропустить ничего очевидного, но я действительно не смог найти никаких хороших источников.

Я знаю, что не очень ответственно задавать вопрос о SO, не тратя больше времени на самостоятельные исследования, но я заметил, что постановка вопроса о SO намного эффективнее, точнее и быстрее, чем просто случайный поиск в Google.

5
Jan Zich 25 Май 2009 в 12:47
Я не уверен, что EchoNest будет вам полезен, но вы можете его найти.
 – 
William
28 Дек 2013 в 22:54

2 ответа

Лучший ответ

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

В Musicbrainz содержится подробная информация о различных технологиях. Здесь

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

7
Nick 25 Май 2009 в 12:58

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

1) Вам необходимо определить важные особенности звука. Это часть «хеширования», которую Ник описал в своем ответе. Даже спектрограмма может содержать слишком много информации, чтобы быть полезной. Подход, который я нашел потенциально интересным (без каких-либо теоретических знаний об исследовании речи), - это MFCC (то есть кепстральные коэффициенты мелкой частоты). На etsi.org есть бесплатный код (ищите регистрацию и стандарты речи).

2) Скорость речи может меняться, что усложняет ситуацию. Для решения этой проблемы можно использовать динамическое искажение времени. См. Пример Matlab-code.

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

5
Ville Koskinen 25 Май 2009 в 13:16