在android中声音转换为频率

时间:2012-01-19 15:27:32

标签: android signal-processing

  

可能重复:
  Real time pitch detection
  Determine the audio frequency of sound received via the microphone

我正在开发自己的Android吉他调音器。在这里,我将不得不使用吉他音符频率。因此,我想知道如何将通过麦克风端口发出的声音转换为其在android中的频率?

2 个答案:

答案 0 :(得分:1)

您将需要一种音高估计算法(已发布许多,如自相关,ASDF / AMDF,倒频谱处理,谐波积频谱,RAPT,YAAPT等)。单独的频率估计不适合吉他调音,因为音高与频谱频率不同。

答案 1 :(得分:0)

编辑:链接死了---这个问题已经解决了here ---

我将总结一下这篇论文:

  1. 记录内容:

        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
    
  2. 使用FFT对频率进行分析。

  3. 我说你在它上面记录了大约4秒的FFT。就像hotpaw2所说,你必须使用音高估计算法来确定来自弹拨的录音声音的频率范围。