2017-01-23 6 views
2

AudioRecordを使用してマイクからオーディオを録音しようとしています。 録音はうまくいきますが、音量が大きすぎると私は恐ろしいクリッピングをしています。 AutomaticGainControlを使用しようとしましたが、私のデバイスでは使用できません。 自動的にまたは手動で音量を下げる方法はありますか?Android AudioRecord clipping

sampleRate = 44100 
channel = AudioFormat.CHANNEL_IN_MONO 
encoding = AudioFormat.ENCODING_PCM_16BIT 

audioRecord =new AudioRecord(MediaRecorder.AudioSource.DEFAULT, //also tried VOICE_RECOGNITION 
      sampleRate, channel, encoding, 
      bufferSize) 

audioRecord.startRecording() 

答えて

1

は私が聞いていたものが判明ボリュームによって引き起こされますが、間違ったバイト順でクリッピングされませんでした。

これは私が使用しているコードです。クリップはリトルエンディアンで録音され、ビッグエンディアンで再生していました。そのため、最上位ビットはすべて0であったため、ボリュームの値が小さくなっただけで増幅され、それ以外の場合は影響を受けませんでしたが、ボリュームが高くなるとMSBは0ではなく、全体の値がホワイトノイズになりました。

関連する問題