【问题标题】:Which interpolation method to use for resampling speech signal?使用哪种插值方法对语音信号进行重采样?
【发布时间】:2017-04-15 15:39:00
【问题描述】:

我想使用 MATLAB 进行音频信号重采样(将 fs = 8 kHz 的信号转换为 16 kHz)。

有 3 种插值方法可用:线性、pchip 和样条

https://in.mathworks.com/help/signal/ref/resample.html#bungoxs

其中哪些最适合语音信号,为什么?

【问题讨论】:

    标签: matlab signal-processing


    【解决方案1】:

    您可能不想使用其中任何一个,而是使用interpft,它通过频域中的零填充进行上采样。这假设所有较高频率的信号(高于 4 kHz)都是零 - 这些在记录过程中已经丢失。

    【讨论】:

    • 这是对路径为fileName的wav文件的正确用法吗? [s, fs] = 音频读取(文件名); y = interpft(s,length(s)*2);
    • 如果我使用上面的代码,有时我会收到“警告:写入文件时数据被剪切”。可以接受吗?
    【解决方案2】:

    线性采样不会产生良好的结果,因为它不会捕获低采样率信号的“曲线”,结果是高频伪影(您将看到是否对上采样信号进行傅里叶变换) .

    样条(意思是三次样条)是一种 pchip。基本上,如果您知道自己在做什么并想要微调参数,则可以使用 pchip。由于您不知道自己在做什么,因此只需使用带有默认参数的三次样条。从视觉上看,它们看起来不错,但是当我对宽度点(用于图形)进行插值时,我发现它们不够灵活,并且不得不使用五次样条曲线。高于五次,样条曲线变得非常摇摆且难以控制。但可能带有手动调整参数的五次样条曲线会为您提供最佳质量。

    我在 Baby X 资源编译器中有复杂的上/下采样代码。然而,它不是由我开发的。 https://github.com/MalcolmMcLean/babyxrc

    【讨论】:

      【解决方案3】:

      上采样的最佳方法是使用 Sinc 内核插值或重建,使用(多相,如果需要)加窗 Sinc 在计算上是可行的。使用零填充 IFFT 进行上采样会产生类似的高质量插值,但圆形边界效果除外。

      如果您必须使用 3 种可用方法中的一种,则 spline 不如 pchip 差,因为后者可能会剪裁一点,而且这两种方法都比线性差。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-07
        • 1970-01-01
        • 2010-10-01
        • 2011-04-01
        • 1970-01-01
        相关资源
        最近更新 更多