我正在尝试实现自动录音功能,类似于Talking Tom应用程序。 我使用以下代码从音频录制器中读取输入并分析缓冲区:
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];
现在我能够检测来自音频录制器的语音输入,并分析音频缓冲区。
将缓冲区转换为浮点值,如果它增加了一定数量,则假定背景中有一些声音并开始录制。但问题是,这个应用程序开始记录所有背景噪音,包括风扇/空调管道声。
是否有人可以帮助我分析缓冲区以仅检测人类的语音?或者是否有其他替代方法从音频录制器输入中检测人类的语音?
提前致谢,