我是靠谱客的博主 美好河马,最近开发中收集的这篇文章主要介绍以任意频率重采样语音信号1. Direction Interpolation2. Lagrange Interpolation3. Sine Interpolation4. 重采样结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

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. 重采样结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部