Определите частоту от полученного аудио входа микрофона - PullRequest
0 голосов
/ 18 марта 2011

Для поиска по Интернету у меня достаточно кода для записи аудиомикрофона. Использование Поговорите здесь пример кода из примера кода Apple. Я хочу показать частоту в (UILabel) в своем приложении.У меня есть ipod touch 3-го поколения, я записываю звук с помощью наушников. Независимо от того, что я получил через микрофон, я хочу отобразить его частотный диапазон (Гц) в UILabel.Я также скачал код aurio touch, но все дают несколько советов, чтобы найти частоту. Никто не дал ни одного примера кода для определения частоты, используя fft в auriotouch. Я новичок в разработке приложений для iphone. Это моя первая задача, поэтому я хочу, чтобы она была выполнена хорошо..Покажите мне правильный способ сделать это. И я также не знал о цифровой обработке сигналов. (У меня есть одна дубля, возможно ли определить частоту только с использованием нарисованной области синусоидальной волны или мы вычислим по собственной).

Для длительного серфинга у меня есть еще один пример имени SCListener, в github есть источник. Когда я загружаю и запускаю код, он отображает значения AveragePower, peakPower и частоты, отображаемые в метке. Это правильный пример для использования вмой код? А также я не знал, что вывод должен быть в Гц или КГц.

Как проверить правильность записанной частоты, отображаемой на этикетке?

PLZ PLZ, помогите мне ........ Заранее спасибо .. Извините за мой плохой английский.

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Один из способов убедиться, что ваша частотная метка отображает правильное значение, - это проверить его с помощью какого-либо калиброванного генератора сигналов.

Возможно, вам удастся найти программу синтеза / генератора звука для Mac или ПК, которая может воспроизводить синусоидальную волну с известной частотой. Попробуйте и проверьте результаты, отображаемые вашим приложением, с помощью iPod Touch или iOS Simulator. (Для проверки не используйте музыкальный звук, и он может воспроизводить несколько частот, сильно отличающихся от распознанной высоты звука.)

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

frequency_estimate = bin_number * sample_rate / fft_length_in_samples;

Ошибка оценки будет пропорциональна (sample_rate / fft_length_in_samples).

2 голосов
/ 18 марта 2011

Вам нужно использовать преобразование Фурье.Лучшая библиотека, которую я знаю, это FFTW.

Помните, вы не получите ни одной частоты;вы получите смесь всех из них вплоть до sample_rate / 2.Вам нужен какой-то алгоритм для выбора правильного пика.

Возможно, вы захотите сделать шаг назад и прочитать о теории Найквиста и обработке сигналов (в частности, БПФ), прежде чем идти намного дальше, в противном случае вы будете много зарабатыватьошибок.

...