0

我用 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。这不是我正在寻找的从 Hz 到 mels 的转换公式。

提前致谢

4

1 回答 1

0

使用librosa.core.mel_frequencies函数计算 mel 过滤器的中心点。确保传递与 to 相同的参数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

于 2018-10-06T20:04:11.703 回答