Микрофонный вход - PullRequest
       7

Микрофонный вход

3 голосов
/ 19 марта 2010

Я пытаюсь создать гаджет, который распознает выстрелы из пистолета с помощью Android. Это часть учебного пособия для стрелков, рассказывающего, как снимки распределяются во времени, и я использую HTC Tattoo для тестирования.

Я использую MediaRecorder и его метод getMaxAmplitude для получения максимальной амплитуды в течение последних 1/100 с, но она не работает должным образом; речь дает мне значения от getMaxAmplitude в диапазоне от 0 до около 25000, в то время как выстрелы из пистолета (или крики!) достигают только около 15000. При частоте дискретизации 8 кГц должно быть несколько образцов со значительно высоким уровнем.

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

Спасибо, / George

Ответы [ 4 ]

0 голосов
/ 30 мая 2011

Извините за поздний ответ; Я не видел этот вопрос, пока не начал искать другую проблему ...

Я запустил приложение, чтобы сделать то, что, по-моему, вы пытаетесь. Это звуковой таймер круга (кнопка для запуска / остановки записи и громкие звуковые шумы для настройки круга). Он не закончен, но может предоставить вам хорошую базу для начала.

Прямо сейчас это позволяет вам контролировать громкость сигнала, поступающего от микрофона, и устанавливать уровень окружающего шума. Он также использует новую лицензию BSD, поэтому не стесняйтесь проверить код здесь: http://code.google.com/p/audio-timer/. Он настроен на использование API 1.5 для включения максимально возможного количества устройств.

Это не закончено, в этом есть две основные проблемы:

  1. Захват звука в настоящее время не работает для эмулируемых устройств из-за запрошенной неподдерживаемой частоты
  2. Функциональность таймера еще не работает - вначале основное внимание уделялось захвату звука.

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

У меня также есть на моем локальном компьютере разработчика некоторый дополнительный код для создания макета элементов списка для отображения информации о круге. Однако отвлекся на проблему с частотой. Но поскольку отображение и захват аудио в значительной степени выполнены, использование системного времени для заполнения отображаемых значений для информации о времени должно быть относительно простым, и тогда не должно быть слишком сложно добавить возможность экспорта таблицы данных в CSV на SD-карте.

Дайте мне знать, если вы хотите присоединиться к этому проекту, или если у вас есть какие-либо вопросы.

0 голосов
/ 20 марта 2010

Кажется, что AGC находится в медиа-рекордер. Когда я использую AudioRecord, я могу обнаружить снимки, используя амплитуду, хотя иногда они реагируют на звуки, отличные от снимков. Это не проблема, так как стрелок обычно не производит никакого другого шума во время съемки. Но я сделаю немного БПФ, чтобы сделать его идеальным: -)

0 голосов
/ 20 марта 2010

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

например. сигнал => квадрат => скользящее среднее => обнаружение пика

Все вышеперечисленное может быть очень эффективно реализовано с использованием математики с фиксированной запятой, которая хорошо подходит для мобильных платформ Android.

Дополнительную информацию можно найти, выполнив поиск "Теорема Парсеваля" и "Фильтр CIC" (гребенка каскадного интегратора)

0 голосов
/ 19 марта 2010

Кажется, на месте установлен фильтр AGC (автоматический контроль усиления). Вы также должны быть в состоянии идентифицировать выстрел по его частотным характеристикам. Я ожидаю, что он будет отображаться по большей части звукового спектра, но возьмите анализатор спектра (таких на рынке приложений есть несколько, например SpectralView) и попытайтесь определить событие по его частоте, «сигнатуре» и амплитуде. Если вы хлопаете в ладоши, что вы получаете за максимальную амплитуду? Вы также можете попробовать прикрыть телефон чем-нибудь, чтобы приглушить звук, как несколько слоев ткани

...