创建一个识别最高频率并命名音调的程序

时间:2019-05-15 12:37:58

标签: python-3.x fft pitch

我想创建一个程序,该程序读取声音文件并识别哪个频率(傅立叶中的abs)具有最高振幅,并使用功能pitch()来识别音调的名称。

这是功能pitch():

A4 = 440.0 # frekvens för minsta värdet: tonen C
C0 = A4 * pow (2, -4.75)
name = ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#",         "A", "A#", "B"]
enter code here


def pitch(freq):
    h = round(12 * log2(freq / C0)) 
    n = h % 12
    return name[n]

这是我到目前为止尝试过的方法,但是它返回了错误的音调:

def find_argmax():
    rate, data = wav.read('Piano_1_C.wav')
    frequency_data = (np.argmax(abs(fft(data))))  
    tone = pitch(frequency_data)

    return tone

0 个答案:

没有答案