我正在尝试实现自动录音功能,类似于会说话的汤姆应用程序。我使用以下代码从录音机读取输入并分析缓冲区:
float totalAbsValue = 0.0f;
short sample = 0;
numberOfReadBytes = audioRecorder.read( audioBuffer, 0, bufferSizeInBytes);
// Analyze Sound.
for( int i=0; i<bufferSizeInBytes; i+=2 )
{
sample = (short)( (audioBuffer[i]) | audioBuffer[i + 1] << 8 );
totalAbsValue += Math.abs( sample ) / (numberOfReadBytes/2);
}
// Analyze temp buffer.
tempFloatBuffer[tempIndex%3] = totalAbsValue;
float temp = 0.0f;
for( int i=0; i<3; ++i )
temp += tempFloatBuffer[i];
现在我能够检测到来自录音机的语音输入,并且可以分析音频缓冲区。
缓冲区转换为浮点值,如果增加一定量,则假定背景中有一些声音并开始录制。但问题是应用程序开始记录所有背景噪音,包括风扇/交流管道的声音。
谁能帮我分析缓冲区以仅检测人声?还是有其他替代方法可以从录音机输入中检测人声?
提前致谢,