Сравните звуки внутри приложения - PullRequest
1 голос
/ 17 сентября 2010

Можно ли сравнить два звука?Например, приложение уже имеет звуковой файл mp3 или любой другой формат. Можно ли сравнить любой статический звуковой файл и записанный звук внутри приложения?

Любые комментарии приветствуются.

С уважением

1 Ответ

2 голосов
/ 17 сентября 2010

В этой ветке форума есть хороший ответ (примерно на три) - http://www.dsprelated.com/showmessage/103820/1.php.

Хитрость заключается в том, чтобы получить декодированное аудио из mp3 - если они просто короткие «привет», яя буду хранить их в приложении как wav-файл вместо декодирования (хотя я никогда не использовал CoreAudio или любую другую платформу раньше, поэтому декодирование mp3 в память может быть простым).

Когда у вас естьукажите wav и ваш записанный wav, следуйте инструкциям в посте выше:

1 Сделайте все, что необходимо для преобразования файлов .wav в их сигналы с дискретным временем:

http://www.sonicspot.com/guide/wavefiles.html

2 Деформация времени может или не может быть необходимой в зависимости от разницы между двумя частотами дискретизации:

http://en.wikipedia.org/wiki/Dynamic_time_warping

3 После деформации времени обрежьте оба сигнала так, чтобы ихдлительности эквивалентны.

4 Вычислить нормированную спектральную плотность энергии (ESD) из двух сигналов DFT:

http://en.wikipedia.org/wiki/Power_spectrum.

6 Вычислить среднеквадратическую ошибку (MSE) междуНормализованные ESD двух сигналов:

http://en.wikipedia.org/wiki/Mean_squared_error

MSE между нормированными ESD двух сигналов является хорошим показателем близости.Если вы говорите, что 10 .wav файлов, и 2 из них почти одинаковы, но другие нет, два близких должны иметь относительно низкий MSE.Два совершенно одинаковых сигнала, очевидно, будут иметь значение MSE, равное нулю.В идеале, два «эквивалентных» сигнала с разными временными масштабами (20-секундный разговор человека против 5-секундного бурундука), разные энергии (тихий голос человека, кричащий бурундук) и разные фазы (выборка началась в несколько разное мгновение в зависимости от непрерывного временивход);должно по-прежнему иметь MSE, равное нулю, но ошибки квантования, присущие DSP, приведут к MSE, немного большему нулю.

http://en.wikipedia.org/wiki/Minimum_mean-square_error

Вы должны получить два разных значения MSE, одно междумужской-> записанный трек и один между вашей женской-> записанный трек.Сравнение с самой низкой разницей, вероятно, является правильным полом.

Признаюсь, я никогда не пытался это сделать, и это выглядит очень трудно - удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...