如何从 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
我已经用 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