gpt4 book ai didi

matplotlib - Librosa mel 滤波器组递减三角形

转载 作者:行者123 更新时间:2023-12-04 01:50:57 28 4
gpt4 key购买 nike

我有点难以理解 MFCC。

从我读到的 mel 滤波器组应该是一系列三角形,它们变得更宽并且它们的峰值在同一个地方。像这样...

enter image description here

但是,当我使用 librosa 计算 mel 滤波器组时,我得到...

enter image description here

代码:

import librosa
import matplotlib.pyplot as plt

sr = 16000
mel_basis = librosa.filters.mel(sr=sr, n_fft=512, n_mels=10,fmin=0, fmax=sr / 2)
plt.plot(mel_basis)

最佳答案

我现在更了解了,我觉得给出的答案并不完全正确,所以我想我应该回答我自己的问题。

librosa.filters.mel 返回一个形状为 (n_mels, n_fft/2 +1) 的矩阵。这意味着矩阵中的每一行都是一个 mel。列是梅尔滤波器组每个频率的权重。频率以循环数最多 n_fft 的数量表示,由于混叠(奈奎斯特定理),我们丢弃了其中的一半。

这意味着为了正确绘制mels,需要转置矩阵。因为我们实际上想要 N 个不同的图,其中 N 是梅尔的数量。
plt.plot(mel.T)
这给出了以下图像:
enter image description here

请注意,这组 mel 滤波器组仍然不是预期的。这是因为 Librosa 使用了标准化版本的 mel-filter bank,这意味着每个 mel 的面积为 1,而不是传统的等高 1。从 librosa 返回的矩阵可以转换为等高的 mel-过滤组:
mels /= np.max(mels, axis=-1)[:, None]
然后情节是这样的:enter image description here

关于matplotlib - Librosa mel 滤波器组递减三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40197060/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com