Tim*_*son 28 android android-audiorecord
我正在尝试实现自动录音功能,类似于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];
Run Code Online (Sandbox Code Playgroud)
现在我能够检测来自录音机的语音输入,我可以分析音频缓冲区.
缓冲区被转换为浮点值,如果它增加一定量,则假设背景中有一些声音并开始录制.但问题是该应用程序开始记录所有背景噪音,包括风扇/交流管声音.
任何人都可以帮我分析缓冲区来检测人声吗?或者还有其他方法可以从录音机输入中检测人声吗?
提前致谢,
处理输入的方法是使用专门的库来消除噪音。
例如,http://audacity.sourceforge.net可以消除噪音。
只要您已经描述了噪声的主要类型,您就应该只剩下语音了。
在从用户捕获之前以及用户结束捕获之后收集采样数据是值得的,因为这将提供当时环境中的噪声样本。如果每个用户面临独特的背景噪音挑战,这非常有用。
| 归档时间: |
|
| 查看次数: |
12831 次 |
| 最近记录: |