我已经用librosa计算出了梅尔频谱图:
self.Spectrogram = librosa.feature.melspectrogram(y=self.RawSignal, sr=self.sampling_frequency,
n_mels=128, fmax=8000)
由于n_mels=128
,我需要获得归一化比例[0,127]中给定频率(例如4400 Hz)的相应值。我已经看到103是4400 Hz的对应值,但是我想要一个通用公式。
PS。不是从Hz转换为我要搜索的内容的转换公式。
预先感谢
答案 0 :(得分:0)
使用librosa.core.mel_frequencies函数来计算您的梅尔滤波器的中心点。确保传递与melspectrogram
相同的参数。有了中心点后,您可以通过查找最接近的值来找到特定频率属于哪个频段。
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