5
如何從我的語音記錄中查找最小,最大,平均值,標準開發音高? 我使用AudioRecord錄製我的聲音。在Android上查找語音音調
frequency = 8000;
channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,frequency, channelConfiguration, audioEncoding, bufferSize);
後我使用FFT算法來處理語音的原始數據,並獲得漂浮[]
後我使用此功能:
private float[] spectrumAnalyz(float[] spectr) {
float Re;
float Im;
float[] spectruData = spectr;
float[] mySpectrum = new float[(spectruData.length/2) - 1];
for (int i = 1, j = 0; i < spectruData.length/2; i++, j++) {
Re = spectruData[2 * i];
Im = spectruData[2 * i + 1];
mySpectrum[j] = (float) Math.sqrt(Re * Re + Im * Im);
}
return mySpectrum;
}
此函數返回頻率陣列。在谷歌搜索後,我發現使用這個公式我能找到的最小,最大這個公式 http://en.wikipedia.org/wiki/Pitch_(music)
pitch = 69+12*log2(F/440Hz), where F is frequency in Hz.
,平均值和標準偏差間距。
全部正確嗎?
如何獲取帶有人聲信息的頻率數據?也許我應該使用一些庫或框架? – illiaklimov 2012-04-12 08:00:31