Как получить громкость с микрофона - PullRequest
0 голосов
/ 23 апреля 2011

Я использую микрофонный вход (3,5 мм) как своего рода аналого-цифровой преобразователь через интерфейс AudioRecord. Мне нужно взять образец примерно каждые 1 (наихудший случай) или 3 (лучший случай) миллисекунды и измерить объем (относительное напряжение). Абсолютное напряжение не так важно, пока я вижу пик.

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

Можно ли наблюдать амплитуду без использования алгоритма БПФ?

Спасибо

1 Ответ

0 голосов
/ 23 апреля 2011

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

Вам необходимо брать образец каждые 1-3 миллисекунды (от худшего к лучшему).Если мои расчеты не ошибаются, это будет означать частоту дискретизации 1000 - 333 Гц соответственно.Частота дискретизации в Android ограничена требованиями к минимальной частоте дискретизации вашего кодера (выходной формат).Если посмотреть на поддерживаемые аудио / видео форматы , то не похоже, что большинство форматов будет поддерживать выбранную вами частоту дискретизации.Итак, вы можете попробовать кодировать в формате WAV (он может иметь необходимую частоту дискретизации) или записать сигнал в любом формате, уменьшить частоту до желаемого диапазона частот и затем проанализировать.

Также вы можете посмотреть на это приложение - Audalyzer для просмотра сигналов.

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

HTH,
Шрирам

...