如何从 Mel 频谱图中计算 "normalized" 频率?

How to compute "normalized" frequency from Mel Spectrogram?

我已经用 librosa 计算了梅尔频谱图:

self.Spectrogram = librosa.feature.melspectrogram(y=self.RawSignal, sr=self.sampling_frequency,
                                                      n_mels=128, fmax=8000)

我需要在归一化尺度 [0,127] 中获得给定频率(例如 4400 Hz)的相应值,因为 n_mels=128。我已经看到 103 是 4400 Hz 的对应值,但我想要一个通用公式。 PS。我要找的不是赫兹到梅尔的换算公式

提前致谢

使用 librosa.core.mel_frequencies 函数计算梅尔过滤器的中心点。确保传递与 melspectrogram 相同的参数。有了中心点后,您可以通过查找最接近的值来找到特定频率属于哪个 bin。

import numpy
import librosa

find = 4400 
freqs = librosa.core.mel_frequencies(fmin=0.0, fmax=8000, n_mels=128)
bin = numpy.argmin(abs(freqs - find))

print(bin)

103