用哪种插值方法对语音信号进行重采样?

4
3个回答

3

您可能不想使用这些方法之一,而是使用interpft函数。该函数通过在频域中进行零填充来实现上采样。这意味着所有高频信号(超过4kHz)都为零 - 这些信号在录制过程中已经丢失。


这是wav文件fileName的正确用法吗? [s,fs] = audioread(fileName); y = interpft(s,length(s)* 2); - Sonal
如果我使用上述代码,有时会出现“警告:写入文件时数据被剪切。”这样的情况,这是可以接受的吗? - Sonal

0

线性采样结果不佳,因为它不能捕捉低采样率信号的“曲度”,结果是高频伪像(如果您对上采样的信号进行傅里叶变换就会看到)。

样条(即立方样条)是一种 pchip。基本上,如果您知道自己在做什么并想微调参数,则可以使用 pchip。由于您不知道自己在做什么,只需使用默认参数的立方样条即可。从视觉上看,它们看起来还不错,尽管当我在插值宽度点(用于图形)时发现它们不够灵活,必须使用五次样条。高于五次,样条会变得非常扭曲和难以控制。但是手动调整参数后的五次样条可能会给您带来最好的质量。

在 Baby X 资源编译器中,我有复杂的上/下采样代码。不过,这不是我开发的。

https://github.com/MalcolmMcLean/babyxrc

0

最佳的上采样方法是使用Sinc核插值或重构,使用(如果需要)分段Sinc加窗以实现计算可行性。使用零填充IFFT进行上采样会产生类似的高质量插值,但会出现循环边界效应。

如果必须使用您的三种可用方法之一,则样条比pchip更好,因为后者可能会稍微截断,这两种方法都比线性更好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接