Làm cách nào tôi có thể tìm thấy độ lệch tối thiểu, tối đa, trung bình, tiêu chuẩn từ bản ghi âm của mình? Tôi sử dụng AudioRecord để ghi âm giọng nói của mình.Tìm quảng cáo chiêu hàng bằng giọng nói trên Android
frequency = 8000;
channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,frequency, channelConfiguration, audioEncoding, bufferSize);
Sau khi tôi sử dụng thuật toán FFT để xử lý dữ liệu thô giọng nói và float []
sau khi tôi sử dụng chức năng này:
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;
}
chức năng này mảng tần số trở lại. sau khi tìm kiếm tại google tôi tìm thấy công thức này http://en.wikipedia.org/wiki/Pitch_(music)
pitch = 69+12*log2(F/440Hz), where F is frequency in Hz.
sử dụng công thức này tôi có thể tìm min, max, nghĩa và sân std dev.
Tất cả đều đúng không?
Làm cách nào để nhận dữ liệu tần suất với thông tin bằng giọng nói của con người? Có lẽ tôi nên sử dụng một số lib hoặc khuôn khổ? – illiaklimov