2012-04-02 37 views
5

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?

Trả lời

0

FFT trả về một mảng các độ lớn phức tạp cho một nhóm các dải tần số phổ âm thanh được chọn. Nó không trực tiếp ước lượng tần số sân, vì sân khấu âm nhạc không chỉ là một tần số phổ tần.

Nếu bạn sử dụng phương pháp phát hiện hoặc ước tính quảng cáo chiêu hàng (trọng số tự tương quan, cepstrum, RAPT, v.v.), công thức bạn trích dẫn sẽ cung cấp cho bạn số MIDI cho tần suất quảng cáo chiêu hàng đó.

+1

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

Các vấn đề liên quan