可能重复:
Real time pitch detection
Determine the audio frequency of sound received via the microphone
我正在开发自己的Android吉他调音器。在这里,我将不得不使用吉他音符频率。因此,我想知道如何将通过麦克风端口发出的声音转换为其在android中的频率?
答案 0 :(得分:1)
您将需要一种音高估计算法(已发布许多,如自相关,ASDF / AMDF,倒频谱处理,谐波积频谱,RAPT,YAAPT等)。单独的频率估计不适合吉他调音,因为音高与频谱频率不同。
答案 1 :(得分:0)
编辑:链接死了---这个问题已经解决了here ---
我将总结一下这篇论文:
记录内容:
int minSize = AudioRecord.getMinBufferSize(sampleRate,AudioFormat.
CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioRecord audioInput = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
minSize);
...
short[] buffer = new short[readSize];
audioInput.startRecording();
audioInput.read(buffer, index, readSize); // record data from mic into buffer
使用FFT对频率进行分析。
我说你在它上面记录了大约4秒的FFT。就像hotpaw2所说,你必须使用音高估计算法来确定来自弹拨的录音声音的频率范围。