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);
I 음성 원시 데이터를 처리하여 얻을 FFT 알고리즘을 사용하면 I가이 기능을 사용한 후 []
플로트 :
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.
하는 결과, 평균 및 표준 데브 피치.
모두 맞습니까?
사람의 음성 정보로 어떻게 주파수 데이터를 얻을 수 있습니까? 어쩌면 내가 lib 또는 프레임 워크를 사용해야합니까? – illiaklimov