2013-03-14 1 views
6

У многих смартфонов теперь есть более одного микрофона. Один для голосового ввода и другой для уменьшения шума окружающей среды.Как получить доступ к второму микрофонному андроиду, например Galaxy 3

Мне интересно, как я могу получить доступ к сигналу двух микрофонов независимо? Или выключите один из микрофонов?

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

+0

Я успешно отделял сигналы от двух микрофонов. Метод, который я использовал, был предоставлен Майклу. 0,2,4 в массиве - микрофон на дне, а 1,2,5 ... - микрофон сверху. – Foreverniu

+0

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

+0

@Foreverniu: Будет ли возможно для вас поделиться фрагментом кода для этого? –

ответ

10

Я не знаком с Galaxy S3 в частности, но верно следующее для большинства устройств я работал с:

не
  • Там нет надежного способа выбора, использовать ли первичный или вторичный микрофон для монозаписи. MIC AudioSource обычно означает основной микрофон при монофонической записи, а источник CAMCORDERможет означает вторичный микрофон. Но для этого нет никакой гарантии, потому что это зависит, например. на физическое размещение микрофонов.

  • Запись в моно эффективно отключает другой микрофон, и всякое шумоподавление использует только сигнал от одного микрофона (поэтому уменьшения динамического шума практически нет).
    Единственное исключение может быть при записи во время голосового вызова, когда оба микрофона уже включены для подавления шумов восходящей линии связи.
    Другим исключением может быть использование аудиоисточника VOICE_RECOGNITION, поскольку некоторые производители применяют подавление шума в сигнале с использованием одного или нескольких дополнительных микрофонов в этом случае.

  • Запись в стереозапись с обеих микрофонов на 2-микрофонном устройстве. Левый канал содержит вход от одного микрофона, а правый канал содержит вход от другого микрофона, но нет никакой гарантии, какой физический микрофон соответствует каналам (опять же, зависит от места размещения).

+0

Спасибо. Я думаю, что ваш ответ велик. У меня есть еще один вопрос: если я использую стереозаписи, например ENCODING_PCM_16BIT, вы знаете, как отделить сигнал каждого канала? Я использую audiorecord, чтобы получить сигнал от android. Очень ценю вашу помощь. – Foreverniu

+4

PCM_16BIT влияет только на разрешение каждого образца. Чтобы получить стереосигнал, вы должны запросить два канала для записи. Чтобы разделить каналы, просто прочитайте альтернативные сэмплы из потока PCM (при условии, что вы используете класс «AudioRecord»). То есть, смещения 0,2,4,6 ... в вашем 'short []' содержат образцы левого канала, а смещения 1,3,5,7 ... содержат правильные выборки каналов. – Michael

+0

Ваш ответ потрясающий. Просто подтверждение: для того, чтобы потребовать два канала для записи, верно ли код ниже? recorder = новый AudioRecord (AudioSource.MIC, iSampleRate, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, iAudioBufferSize); Благодарю. – Foreverniu

 Смежные вопросы

  • Нет связанных вопросов^_^