6

マイクを読み取るアプリがあります。具体的には、マイクに向かって息を吹きかけていることを検出しています ;) 多くの HTC デバイスでは機能しません。HTC Droid Eris と HTC Droid Incredible を手に入れました。それらに加えて、HTC デバイスを持っている多くの友人からも、比較的新しい HTC Thunderbolt を含めてこの問題が発生しているという報告があります。

そのため、アプリをデバッグすると、周囲の部屋のノイズがスターバックスで 4000 ~ 11000 に記録されることが示されました。マイクに向かって息を吹き込むとすぐに、入力音量が 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;
        }
    }
4

1 に答える 1

5

それは非常に小さい程度に設定可能です。

MediaRecorder.AudioSource.VOICE_RECOGNITIONの代わりにオーディオ ソースを使用するMediaRecorder.AudioSource.MICと、その入力のオーディオ フィルタがオフになります。一般に、デバイスからデバイスへのフィルタリングに関しては、ワイルド ウェストのようなものです。VOICE_RECOGNITIONフィルターをオフにすることは、Ice Cream Sandwich の互換性の定義にのみ採用されたため、使用しても完璧ではありません。HTCはIce Cream Sandwichの前にそれを使用していたので、あなたの場合はおそらく正しい選択です.

Android 4.0 Compatibility Definition Documentのセクション 5.3 から:

上記の録音仕様に加えて、アプリケーションがandroid.media.MediaRecorder.AudioSource.VOICE_RECOGNITIONオーディオ ソースを使用してオーディオ ストリームの録音を開始した場合:

  • ノイズリダクション処理が存在する場合は、無効にする必要があります。
  • 自動ゲイン制御が存在する場合は、無効にする必要があります。
于 2012-10-24T23:01:28.170 に答える