如何将 Mel 频谱图拆分为不同频率范围的子带
How do I split Mel Spectrogram into sub-bands of different frequency ranges
我对音频信号处理还很陌生,但是我遇到了这个作业,但遇到了困难。
我想要实现的是,假设我已经使用 Mel Spectrogram 对语音音频进行了特征提取,频率范围为 Mel 标度(300Hz,3400Hz)。
我怎样才能进一步将其分成 5 个不重叠的子带,例如
频段 1:[300Hz,627Hz]
频段 2:[628Hz,1060Hz]
频段 3:[1061Hz,1633Hz]
频段 4:[1634Hz,2393Hz]
频段 5:[2394Hz,3400Hz]
我一直试图到处寻找实际实施的例子,但找不到。
如果有人能给我一些建议或指导我正确的方向,我将不胜感激。
由于您的问题基于作业,因此此答案将提供您需要的工具(不是实际答案!)。
假设您像这里一样使用了 librosa 的 Mel Spectrogram:
https://librosa.org/doc/latest/generated/librosa.feature.melspectrogram.html
然后,您将获得频谱图的二维 numpy 数组。
对于上面的例子,使用 S.shape
给出 (128, 230)
这意味着产生了128个mel-bands(频率分组)和230个时间分组。
然后您需要做一些 array slicing 以获得正确的波段。示例:S[0:5]
获取所有时间步长的前五个波段。您需要计算一下哪些波段代表哪些频率。
我对音频信号处理还很陌生,但是我遇到了这个作业,但遇到了困难。
我想要实现的是,假设我已经使用 Mel Spectrogram 对语音音频进行了特征提取,频率范围为 Mel 标度(300Hz,3400Hz)。 我怎样才能进一步将其分成 5 个不重叠的子带,例如
频段 1:[300Hz,627Hz]
频段 2:[628Hz,1060Hz]
频段 3:[1061Hz,1633Hz]
频段 4:[1634Hz,2393Hz]
频段 5:[2394Hz,3400Hz]
我一直试图到处寻找实际实施的例子,但找不到。
如果有人能给我一些建议或指导我正确的方向,我将不胜感激。
由于您的问题基于作业,因此此答案将提供您需要的工具(不是实际答案!)。
假设您像这里一样使用了 librosa 的 Mel Spectrogram:
https://librosa.org/doc/latest/generated/librosa.feature.melspectrogram.html
然后,您将获得频谱图的二维 numpy 数组。
对于上面的例子,使用 S.shape
给出 (128, 230)
这意味着产生了128个mel-bands(频率分组)和230个时间分组。
然后您需要做一些 array slicing 以获得正确的波段。示例:S[0:5]
获取所有时间步长的前五个波段。您需要计算一下哪些波段代表哪些频率。