Отключить шумоподавление HTC

У меня есть приложение, которое читает микрофон. В частности, я обнаруживаю дуновение в микрофон ;) Это не работает на многих устройствах HTC. Я купил HTC Droid Eris, а также HTC Droid Incredible. В дополнение к этим у меня есть сообщения от многих друзей, у которых есть устройства HTC, также испытывающие эту проблему, включая относительно новый HTC Thunderbolt.

Итак, отладка приложения показала, что окружающий шум в помещении регистрируется от 4000 до 11000 в Starbucks. Как только я дую в микрофон, громкость на входе падает до 4000: каждый раз, все время.

Кто-нибудь знает, можно ли это программно отключить?

Вот как я читаю ввод ...

    int minBufferSize = AudioRecord.getMinBufferSize(8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
    AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize);
    short[] buffer = new short[minBufferSize];

    audioRecord.startRecording();
    audioRecord.read(buffer, 0, minBufferSize);

    int i = 0;
    for (short sample : buffer) {
        inputVolume = Math.abs(sample);
        maxVolumeIn = (inputVolume > maxVolumeIn) ? inputVolume : maxVolumeIn;
        if (inputVolume >= micSensitivity) {
            Log.d(TAG, "Blowing Detected. Volume Level: " + inputVolume);
            break;
        }
    }

person Bill Mote    schedule 03.05.2012    source источник


Ответы (1)


Он устанавливается в очень малой степени.

Использование источника звука MediaRecorder.AudioSource.VOICE_RECOGNITION вместо MediaRecorder.AudioSource.MIC отключит аудиофильтры для этого входа. В общем, это какой-то дикий запад с точки зрения фильтрации, которую вы видите от устройства к устройству. Даже использование VOICE_RECOGNITION не идеально, так как отключение фильтров было принято только в определении совместимости Ice Cream Sandwich. HTC использовала его до Ice Cream Sandwich, поэтому для вашего случая, вероятно, это будет правильный выбор.

Из раздела 5.3 Документ определения совместимости с Android 4.0:

В дополнение к указанным выше спецификациям записи, когда приложение начало запись аудиопотока с использованием источника звука android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION:

  • Обработка шумоподавления, если она присутствует, ДОЛЖНА быть отключена.
  • Автоматическая регулировка усиления, если она присутствует, ДОЛЖНА быть отключена.
person Douglas Jones    schedule 24.10.2012
comment
У меня не было возможности попробовать то, что вы предлагаете. Я собираюсь присудить вам часть вознаграждения, поскольку ваше решение кажется разумным, но потребует потенциально значительного рефакторинга и тестирования. - person Bill Mote; 30.10.2012
comment
Определенно требуется некоторая гимнастика кода, чтобы получить надежное звуковое решение, которое работает на всех устройствах. Я знаю боль. - person Douglas Jones; 30.10.2012