Частота Python FFT от Guitar Note - PullRequest
       28

Частота Python FFT от Guitar Note

0 голосов
/ 31 октября 2018

Я пытался создать программу, чтобы определить, какую ноту играет гитара. Когда я использую этот код с синусоидальной волной, например 440 Гц, он работает и возвращает частоту правильно. Однако, когда я даю аудио ноты гитары, играющей одну ноту, результат уже далеко. Например, я играю на гитаре с низкой 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
...