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