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];
これで、オーディオ レコーダーからの音声入力を検出し、オーディオ バッファーを分析できるようになりました。
バッファは float 値に変換され、一定量増加すると、バックグラウンドに何らかの音が存在すると見なされ、録音が開始されます。しかし問題は、アプリがファンや AC ダクトの音を含むすべてのバックグラウンド ノイズの録音を開始することです。
人間の声だけを検出するためにバッファを分析するのを手伝ってくれる人はいますか? または、オーディオ レコーダーの入力から人間の声を検出する別の方法はありますか?
前もって感謝します、