Как вычислить «нормированную» частоту из Mel Spectrogram? - PullRequest
0 голосов
/ 05 сентября 2018

Я вычислил спектрограмму mel с помощью либроса:

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

Мне нужно получить соответствующее значение данной частоты (скажем, 4400 Гц) в нормализованной шкале [0,127], начиная с n_mels=128. Я видел, что 103 соответствует значению, равному 4400 Гц, но мне нужна общая формула. PS. это не формула преобразования из Гц в мель, что я ищу.

Заранее спасибо

1 Ответ

0 голосов
/ 06 октября 2018

Используйте функцию librosa.core.mel_frequencies , чтобы вычислить центральную точку ваших фильтров mel. Обязательно передайте те же параметры, что и для 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

...