【问题标题】:Getting frequencies by fft_frequencies() function in Librosa通过 Librosa 中的 fft_frequencies() 函数获取频率
【发布时间】:2021-07-21 02:19:30
【问题描述】:

我想知道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
   ... ]

【问题讨论】:

    标签: python signal-processing fft librosa


    【解决方案1】:

    FFTSTFT 不会像您在 sheet music 中找到的那样生成 注释。相反,它提供特定频率区间的幅度和相位。 fft_frequencies() 以赫兹 (Hz) 为单位为您提供这些频率区间。请注意,这与overtones 无关。

    您可能正在寻找的是 Constant-Q-Transform(又名 CQT),它可以配置为提供类似于“笔记”的内容。但是,它将包含泛音。如果你真的很喜欢单个音符,你可能想试试 Mauch 和 Dixon 的 pYIN 算法。

    librosa 恰好提供了 CQT 和 pYIN 实现。您可以找到文档 herehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      相关资源
      最近更新 更多