Проблема в расчете FFT для файлов AMR - PullRequest
2 голосов
/ 26 декабря 2011

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

Частота дискретизации файла AMR 8 кГц (стандартная AMR 15 секунд)

Количество точек БПФ 4096 для ввода 8192 значений

Затем я рассчитываю амплитуду по амплитуде = 2 * Значение точки БПФ / 8192

Таким образом, мое намерение теперь состоит в том, чтобы получить всплеск на частоте, связанной с самой высокой амплитудой. Проблема в том, что всплеск на самой высокой высоте не является постоянным для другого звукового клипа того же животного. Для другого аудиоклипа частота, связанная с наибольшей амплитудой, изменяется. Для этого есть причина?. Любая помощь и руководство для этого будут оценены. Заранее спасибо.

1 Ответ

1 голос
/ 26 декабря 2011

ваш файл имеет частоту дискретизации 8 кГц, но я думаю, что средняя частота человеческого слуха составляет примерно 20 кГц, поэтому вы уверены, что соблюдаете частоту nyquist своих выборок (файлы WAV обычно имеют частоту не менее 48 кГц)?

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

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

...