如何通过梅尔频谱图计算“归一化”频率?

时间:2018-09-05 15:17:50

标签: python spectrogram librosa

我已经用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转换为我要搜索的内容的转换公式。

预先感谢

1 个答案:

答案 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