概述
目录
1. Direction Interpolation
2. Lagrange Interpolation
3. Sine Interpolation
4. 重采样结果
语音信号重采样是语音信号处理中常用的方法,许多语音信号处理算法只支持一两种采样频率,当使用其他采样频率的语音数据送过来时,就可以使用重采样的方法使得其符合语音算法的采样频率。重采样分为上采样和下采样,其原理都是通过插值来实现的,常用的插值方法有直接插值、拉格朗日插值和正弦插值,下面分别进行介绍。
1. Direction Interpolation
直接插值的基本思想就是,通过使用一条穿过两个固定点的线来近似插值点。我们假设原始语音x长度为N,采样率为L,重采样后的语音y长度为K,采样率为M。那么对于y中的每个点k都可以在x中找到与之对应的点nk,即
其中L/M称为缩放因子(scaling factor),然后我们取与nk相邻的点n,
赋予它们不同的权重
最后,将它们的加权和作为此时y[k]的值,即
这样就完成一次插值,对y每个时刻都进行上述的操作,就完成了整个重采样的过程。
2. Lagrange Interpolation
直接插值简单粗暴,但是简单的算法往往效果不好,直接插值的算法是线性的,在有些条件下插值的效果不是很好。由于语音信号的采样周期相同,因此很自然地想到将拉格朗日插值方法应用于语音重采样。拉格朗日插值法是使用拉格朗日插值多项式估计插值点的值,前面的直接插值可以看做拉格朗日插值的一个简单的情况。有了直接插值的基础,拉格朗日插值在重采样中插值计算公式为
其中w为窗口长度,那么可以知道拉格朗日多项式阶数为2w+1,即使用2w+1个原始数据的采样点来计算这次插值点。对于公式(5)如果只x[n-i]前面的系数
可以发现当w趋于无穷大的时候,有
这就是我们后面要介绍的正弦插值。
3. Sine Interpolation
关于正弦插值前面已经铺垫很多了,这里就直接给出插值的计算公式,
重采样之后,最好使用低通滤波器来过滤掉超出的频率分量,特别是在下采样的情况下。
4. 重采样结果
从TIMIT中随机选取了一个样本,采样频率是16KHz,下面把它重采样为8KH和32KHz。首先看下三种方法的时间开销,可以发现拉格朗日插值法的时间开销最大,正弦插值次之,直接插值用时最少。
原始音频:
上采样音频:
下采样音频
本文相关的数据和Python代码可以在语音算法组公众号菜单栏点击->More ->Code->SpeechAlgorithms->Resample中获得
参考文献:
[1]. Speech signal resampling by arbitrary rate
[2]. https://wenku.baidu.com/view/b7831911a2161479171128c5.html
最后
以上就是美好河马为你收集整理的以任意频率重采样语音信号1. Direction Interpolation2. Lagrange Interpolation3. Sine Interpolation4. 重采样结果的全部内容,希望文章能够帮你解决以任意频率重采样语音信号1. Direction Interpolation2. Lagrange Interpolation3. Sine Interpolation4. 重采样结果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复