python - 如何从 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。这不是我正在寻找的从 Hz 到 mels 的转换公式。
提前致谢
解决方案
使用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
推荐阅读
- java - 如何在对象的数组属性中添加 Rest 验证?
- jquery - 使用 jquery 添加、删除或编辑后数据表未更新
- leaflet - 如何将 GeoMet WMS 与传单一起使用
- python-3.x - 如何修复“ImportError:无法导入名称'_win32stdio'”?遇到障碍的典型解决方案
- c# - 如何使用 Task.WaitAny() 确定哪些任务首先完成?
- laravel - 如何删除 2 个数组 Laravel 之间的重复值?
- python - 如何在 Single Flask App 中使用 Plotly-Dash 创建多个仪表板?
- numpy - 外积所有维度上的 Numpy 总和
- r - 从字符串格式 "c(\"4\", \"5\", \"7\", \"8\", \"9\", \"10\")" 转换为字符
- javascript - 无法获得输出.. 函数中给出的参数未读取