吉他音符的Python FFT频率

时间:2018-10-31 13:27:08

标签: python audio signal-processing fft

我一直在尝试创建一个程序来确定吉他弹奏的音符。当我将此代码与正弦波(例如440hz)一起使用时,它可以工作并正确恢复频率。但是,当我给它弹吉他弹奏的音符时,结果却遥遥无期。例如,我在吉他上弹低E弦,期望82.41,但我得到18947.25。我是数字信号处理的新手,所以我可能会缺少一些我不知道的基本知识。任何帮助都是很好的帮助。

干杯!

from scipy import fftpack
from scipy.io import wavfile as scipy_wav
import numpy as np

def get_frequency(filename):
    sample_rate, data = scipy_wav.read(filename)

    fft_out = fftpack.fft(data)
    freqs = np.fft.fftfreq(len(fft_out))

    # Find the peak in the coefficients
    idx = np.argmax(np.abs(fft_out))

    freq = freqs[idx]
    freq_in_hertz = abs(freq * sample_rate)
    return freq_in_hertz

0 个答案:

没有答案