2

我正在构建一个始终从麦克风录制音频的应用程序,只要音频达到某个阈值,我就会执行某个操作。

但是,我应该如何计算阈值的适当体积?我有一个静态卷编码,它适用于某些设备但并非所有设备(在某些情况下它太敏感,反之亦然)。

我正在使用 AudioRecord,这是代码的一部分:

int bufferSize = AudioRecord.getMinBufferSize(Constants.RECORDING_FREQUENCY,Constants.channelConfiguration,Constants.audioEncoding);    
AudioRecord audioRecord = new AudioRecord( MediaRecorder.AudioSource.MIC,Constants.RECORDING_FREQUENCY,Constants.channelConfiguration,Constants.audioEncoding, bufferSize); 
short[] buffer = new short[bufferSize];
while(true) {
   int bufferReadResult = audioRecord.read(buffer, 0, bufferSize);
   for (int i = 0; i < bufferReadResult; i++) {
      currentVolume = java.lang.Math.abs(buffer[i]);
      if (currentVolume > Constants.NO_VOLUME_AMPLITUDE)
        // ALRIGHT ! This is what I'm looking for :D
   }
}

所以,我的问题是:如何计算 Constants.NO_VOLUME_AMPLITUDE 而不是硬编码?

非常感谢,泽

4

0 回答 0