¿Cómo puedo encontrar el tono mínimo, máximo, medio, dev estándar de mi registro de voz? Uso AudioRecord para grabar mi voz.Buscar tono de voz en Android
frequency = 8000;
channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,frequency, channelConfiguration, audioEncoding, bufferSize);
Después utilizo algoritmo FFT para procesar los datos en bruto de voz y obtener flotar []
después de usar esta función:
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;
}
esta función de matriz frecuencia de retorno. después de buscar en Google me encontré con esta fórmula http://en.wikipedia.org/wiki/Pitch_(music)
pitch = 69+12*log2(F/440Hz), where F is frequency in Hz.
usando esta fórmula puedo encontrar mínimo, máximo, media y de paso std dev.
¿Son todos correctos?
¿Cómo puedo obtener datos de frecuencia con información de voz humana? Tal vez debería usar alguna lib o framework? – illiaklimov