当我尝试将语音记录从 8kHz 重新采样到 16kHz 时会发生什么?

信息处理 重采样
2022-02-20 04:13:22

我有一个关于在语音上下文中重新采样的问题。给定以 16kHz 采样的语音记录,下采样到 8kHz 基本上会删除一半的样本(每 16000 个样本变成 8000 个)。现在,我想知道反向情景,给定以 8kHz 采样的电话质量语音记录(300Hz -> 3400Hz),如果我尝试将信号重新采样到 16kHz 会发生什么?如何计算每秒 8000 个额外的样本?

我使用 sox 进行了尝试,并且生成了一个新的记录,没有任何投诉或错误消息,所以我的问题是:这是如何完成的?是否有某种标准程序,例如用于构建缺失样本的插值?

1个回答

新样本是通过在原始样本之间进行插值生成的。具体如何做到这一点将因实现而异,但最典型的方法是使用线性插值滤波器使用这种技术,您可以通过在每个输入样本之间插入零来进行 2 倍的插值。假设您的输入信号是X[n],您的扩展信号将如下所示:

Xe[n]=[X[0],0,X[1],0,X[2],0,]

由于离散时间傅里叶变换的特性,这具有压缩和复制输入信号频谱的效果(因此存在于 DC 和原始信号的奈奎斯特速率之间的所有频谱内容都被压缩到一个区域中一半宽,然后复制两次)。

最后,您然后应用低通滤波器来删除上面频谱的额外副本Fs/4在扩展信号中。结果是输入信号的 2 插值版本,其带宽限制在与原始信号相同的频率区域。

对音频信号执行此操作可能对您没有太大帮助,除非您有一些需要特定输入采样率的设备或算法。插值音频在以新速率播放时,听起来应该与原始信号相同;插值过程不会创建任何新信息。

编辑:我还应该注意,以上只是对该过程的概念性描述。在实践中,您不会使用零填充的显式步骤,然后是线性过滤。相反,您可以使用多速率技术,例如插值滤波器的多相实现,允许您以更少的计算实现相同的效果。