Определите конкретный звук на iOS - PullRequest
5 голосов
/ 01 июня 2011

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

Я сделал несколько быстрых FFT-вещей, чтобы идентифицировать определенные частоты выше определенного порога и только тогда, когда они соло (то есть они не окружены другими частотами), поэтому я могу довольно легко идентифицировать отдельные тоны. Я думаю, что это всего лишь расширение этого, но по сравнению с набором данных FFT записи звука, и сравнить, скажем, 0,1-секундные фрагменты по длине звука. И мне также пришлось бы учитывать изменение амплитуды, немного по высоте и немного по времени.

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

Большое спасибо

1 Ответ

1 голос
/ 23 июня 2011

Из вашего описания не совсем понятно, чем вы хотите заниматься.На что похож «специфический» звук?Имеет ли он высокий фоновый шум?Какова определенная узнаваемая особенность (например, высота, ингаляция, тембр ...)?С какими другими «звуками» вы хотите это сравнить?Вы просто хотите сопоставить произвольный спектр звука с "шаблоном звука"?Ваш звук ударный, мелодичный, речь, ...?Это долго, коротко ...?Какой частотный диапазон вы ожидаете, лучшая различимость?Являются ли функции неизменными со временем?

Не существует «общего» решения, которое бы работало для всего.Распознавание речи само по себе довольно сложно и не будет работать хорошо для абстрактных звуков, различимые частоты которых не находятся, например, в полосах MEL.

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

For the template sound:
1) Extract spectral peak positions from the power spectrum
2) Measure the standard deviation around the peaks and construct a gaussian from it
3) save the gaussians for later classification

For unkown sounds:
1) Extract spectral peak positions
2) Project those points onto the saved gaussians which leaves you with z-scores of the peak positions
3) With the computed z-scores you should be able to classify your template sound 

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

...