我想创建一个程序,该程序读取声音文件并识别哪个频率(傅立叶中的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