簡體   English   中英

波形頻率低於音符頻率?

[英]Waveform frequency lower than musical note frequency?

我正在嘗試從mp3文件中提取一個筆記的頻率,該文件包含一個合成的A3筆記樣本,應為220 Hz。

這是我使用librosa獲得的波形的一部分:

鋸波形放大

如您所見,該波似乎每400個樣本重復一次。 因此,通過將22050 Hz的采樣率除以400 I,可以得到波形的頻率。 但是,我得到的頻率是55.125 Hz,而不是220。我是否遺漏了某些東西或出錯了?

編輯 :這是我正在使用的代碼

import librosa
from matplotlib import pyplot as plt
import numpy as np
%matplotlib notebook

y, sr = librosa.load("Simple_synth/A3-saw.mp3")

plt.figure(figsize=(18,6))
plt.plot(y[2000:3000])

note_freq = sr/400

鏈接到音頻文件: https : //www.filefactory.com/file/7aqmrvq375n9/A3-saw.mp3

對於給定的音頻樣本

import librosa
from matplotlib import pyplot as plt
import numpy as np

y, sr = librosa.load("A3-saw.mp3")

可以計算傅立葉變換(請參閱如何在python中提取與fft值關聯的頻率

# calculate fast fourier transform
w = np.fft.fft(y)

# frequencies associated to the fourier transform
freqs = np.fft.fftfreq(len(y))

然后在傅立葉變換中找到最高峰,其頻率以Hz為單位

idx = np.argmax(np.abs(w))
freq = freqs[idx]
freq_in_hertz = abs(freq * sr)
print(freq_in_hertz)

54.90196078431373

樣品中還包含更高的諧波,可以通過繪制更多的峰來看出

plt.plot(sr*freqs[0:500],abs(w[0:500]))

在此處輸入圖片說明

plt.plot(sr*freqs[0:2000],abs(w[0:2000]))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM