簡體   English   中英

通過 Librosa 中的 fft_frequencies() 函數獲取頻率

[英]Getting frequencies by fft_frequencies() function in Librosa

我想知道fft_frequencies()函數的輸出數組是什么意思。

我聽說每個音符都有對應的泛音,
但是輸出數組似乎每秒每個音符只包含一個頻率。

我想知道,如果數組已經包含泛音。

我寫的代碼如下:

import librosa
from scipy import signal

y, sr = librosa.load('./data/dreamy.wav')
Nfft = 256
stft = librosa.stft(y, n_fft=Nfft, window=signal.windows.hamming)
freqs = librosa.fft_frequencies(sr=sr, n_fft=Nfft)

print(freqs)

結果是這樣的:

[    0.           86.1328125   172.265625    258.3984375   344.53125
   430.6640625   516.796875    602.9296875   689.0625      775.1953125
   861.328125    947.4609375  1033.59375    1119.7265625  1205.859375
   ... ]

FFTSTFT不會產生您可以在樂譜中找到的音符 相反,它提供特定頻率倉的幅度和相位。 fft_frequencies()以赫茲 (Hz) 為單位為您提供這些頻率區間。 請注意,這與泛音無關。

您可能正在尋找的是Constant-Q-Transform (又名 CQT),它可以配置為提供類似於“筆記”的內容。 但是,它將包含泛音。 如果你真的很喜歡單獨的筆記,你可能想試試 Mauch 和 Dixon 的pYIN算法。

librosa恰好提供了 CQT 和 pYIN 實現。 您可以在此處此處找到文檔。

暫無
暫無

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

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