【问题标题】:How to optimize N filterbank vectors?如何优化 N 个滤波器组向量?
【发布时间】:2014-12-11 14:07:10
【问题描述】:

我有 40 个三角形 Mel 间隔滤波器组向量,每个向量有 257 个元素。

我想将它们与我的功率谱(使用 20 毫秒音频帧的 FFT 生成)结果相乘,然后将结果相加,这样我就可以获得梅尔间隔功率谱。

但问题是在大多数值为零的情况下具有 257 值有点矫枉过正。简单地说,我只能存储非零元素而不是整个 257 值,但我认为有一种更聪明的方法可以应用多个滤波器组,可能使用矩阵乘法。我的推理正确吗?如果是的话是怎么做的?

【问题讨论】:

    标签: c++ matrix signal-processing mfcc


    【解决方案1】:

    您的 FFT 也是 257 点,所以这是一个简单的元素乘法?您的过滤器组的边缘可能大部分为零。如果您为每个 filterbank 存储第一个和最后一个非零元素的索引,您可能可以消除很多这些零,只存储 min 和 max 之间的切片。

    因此,要将 FFT 与该滤波器组相乘,请将所有低于最小值和高于最大值的 FFT 系数设置为零,并且只需将最小值和最大值之间的切片相乘。

    【讨论】:

    • 这就是我的想法,只是认为有一种(更智能的?)使用矩阵乘法的方法。可能是? (将帧存储在矩阵中并与滤波器组向量相乘?但直观地说,第一种方法会比矩阵乘法更快。
    • 矩阵乘法不太可能胜过不乘法;)
    猜你喜欢
    • 2012-04-06
    • 2017-03-17
    • 1970-01-01
    • 2015-01-08
    • 2012-04-18
    • 2017-01-17
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    相关资源
    最近更新 更多