我试图使用scipy.decimate
库中提供的函数,但我有一个问题 - 我想要一个预处理算法以完全确定的方式对音频进行下采样,即它总是输出相同的抽取信号,提供原始信号。
因此,该算法应该能够在所有音频片段上以类似的方式对其进行下采样 - 并且有一种方法来重建原始信号将是一个好处,但不是必须完成的。
有谁知道这种方法是否存在?chebyshev
过滤器是否scipy.decimate
完全确定并符合我的预期目的?
我试图使用scipy.decimate
库中提供的函数,但我有一个问题 - 我想要一个预处理算法以完全确定的方式对音频进行下采样,即它总是输出相同的抽取信号,提供原始信号。
因此,该算法应该能够在所有音频片段上以类似的方式对其进行下采样 - 并且有一种方法来重建原始信号将是一个好处,但不是必须完成的。
有谁知道这种方法是否存在?chebyshev
过滤器是否scipy.decimate
完全确定并符合我的预期目的?
我想要一个预处理算法以完全确定的方式对音频进行下采样
所有编码算法都是确定性的,除非它们专门设计为不(使用随机种子)或存在不一致的初始化。这就是回归测试背后的基本思想。所以是的:除非你做错了什么,否则任何下采样算法都是确定性的。
并且有办法重建原始信号将是一个奖励
一般情况下是做不到的。
我不建议在 signal.decimate 函数中使用任何默认过滤器进行抽取操作。如果观察到“非确定性”效应可能是由于噪声混叠造成的。使用最小二乘算法 (scipy.signal.firls) 设计的 FIR 滤波器更适合,因为对于相同数量的系数(复杂度),它在最小二乘意义上总体上具有最小的噪声,并且重要的是会表现出阻带随频率增加而下降的滚降。随着抽取率的增加,这是一个重要的点,因为对于每个抽取因子,都有直接折叠到感兴趣的主要频带上的混叠区域。1 型 Chebyshev 还具有显着的阻带滚降(不像 Hamming 是次要的或使用 Parks-McLellan 没有的等波纹 FIR 设计),但对大部分频带的抑制远不如可以使用多频带滤波器轻松实现。阻带滚降会将混叠噪声的增长限制在第一对折叠区域。
也就是说,我最喜欢的抽取方法是使用使用 firls 设计的多频带滤波器(这会将拒绝集中到重要的区域),然后选择每个 Dth 样本进行下采样。
这些算法都是确定性的。
切比雪夫设计是否是您的抽取所需要的,这是一个广泛的问题。可能您同样可以使用 scipy.firdes 设计一个低通滤波器,然后在丢弃您想要忽略的样本数量(例如,每个奇数样本)之前使用它来过滤您的输入。