我试图实现自动语音录音功能,类似于会说话的汤姆应用程序。我使用下面的代码从音频录音机读取输入并分析缓冲区:

float totalAbsValue = 0.0f;

short sample = 0;

numberOfReadBytes = audioRecorder.read( audioBuffer, 0, bufferSizeInBytes);

// Analyze Sound.

for( int i=0; i

{

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];

现在我能够检测来自音频录音机的语音输入,我可以分析音频缓冲区。

缓冲器被转换为浮动值,并且如果它增加一定量,则假设在背景中有一些声音并且开始记录。但问题是,该应用程序开始记录所有背景噪音,包括风扇/ AC风管的声音。

任何人都可以帮助我分析缓冲区以检测人类语音?或者是否有任何其他方法从音频录音机输入检测人类语音?

提前致谢,

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐