Как я могу найти минимальную, максимальную, среднюю, стандартную высоту звука в моей голосовой записи?Я использую AudioRecord для записи своего голоса.
frequency = 8000;
channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,frequency, channelConfiguration, audioEncoding, bufferSize);
После того, как я использую алгоритм FFT для обработки голосовых необработанных данных и получаю float []
после того, как я использую эту функцию:
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;
}
эта функция возвращает массив частот,после поиска в Google я нашел эту формулу http://en.wikipedia.org/wiki/Pitch_(music)
pitch = 69+12*log2(F/440Hz), where F is frequency in Hz.
, используя эту формулу, я могу найти минимальное, максимальное, среднее значение и шаг стандартного отклонения.
Все правильно?