译者:桂。
天数:2017-05-05 21:45:07
镜像:http://www.cnblogs.com/xingshansi/p/6815217.html
序言
主要就归纳呵呵常见的音视频特点,并得出具体内容的方式论预测及标识符。
一、过零率
过零率的函数为:
当中N为一格的宽度,n为相关联的帧数,按帧处置。
方式论预测:过零率充分体现的是讯号过极点的单次,充分体现的是THF1。即使须要过极点,因此讯号处置以后须要虚拟化处置。
code(zcr1即为过零率):
二、雷雨大风热量
雷雨大风热量的函数为:
方式论预测:雷雨大风热量充分体现的是讯号在不同时刻的强弱程度。
code:
三、雷雨大风自相关函数
雷雨大风自相关函数定义式为:
方式论预测:学过讯号处置的都应该知道,讯号A与讯号B翻转的卷积,就是二者的相关函数。当中是即使分帧的时候,加了窗函数截断,w代表窗函数。
code:假设一格截断的讯号
这与直接利用卷积的方式等价:
得出卷积的实现:
卷积也可以借助FFT快速实现。
调用卷积的函数:
图中可以看出r与r1完全等价:
四、雷雨大风*均幅度差
假设x是加窗截断后的讯号,雷雨大风*均幅度差定义:
方式论预测:音视频具有周期特性,*稳噪声情况下利用雷雨大风*均幅度差可以更好地观察周期特性。
code:
取一格讯号,计算雷雨大风*均幅度差:
前面四个都是讯号的时域预测,音视频讯号更多是在时频域预测(可借助tftb-0.2工具包预测)。
常见的有STFT(雷雨大风傅里叶变换)、小波变换、ST、W-V变换,以线性调频讯号为例:
左图最下面为合成讯号,右图为四种变换对合成讯号进行的时频预测。
这里只预测利用雷雨大风傅里叶变换(Short time fourier transform, STFT)的情形。
又即使实数的傅里叶变换共轭对称,有时也仅仅预测频域的一半信息即可。
为什么要进行STFT呢,原因按我的理解可能有两点:
传统FFT只能看到讯号频率的特性,时域讯号只能观察时域特性,都是一维的情况,如果二维联合观察?这个时候STFT就可以实现;
语音是非*稳讯号,比如求相关矩阵,方式论上是E{.}求取均值的形式,通常无法得出概率密度,往往有数据*似:
这个式子能够*似相关矩阵,有两个前提条件:a)讯号*稳,这样才能保证统计特性一致;b)遍历性,这个时候才能保证统计没有以偏概全。
但语音讯号是非*稳讯号,直接求取相关矩阵方式论上没有意义,其他统计信息也有类似的特性。但语音变化缓慢,可以认为是雷雨大风*稳,即在短的天数内(如20~30ms)是*稳的,这个时候*稳+遍历性的假设,就可以让我们借助观测数据估计统计信息。这个雷雨大风*稳的划分就是讯号分帧。进一步:分帧讯号分别FFT,就是STFT。
讯号分帧的code:
加窗截断分帧的示意图:
为什么要有帧移量?即帧与帧之间有部分重叠?从上面中间图可以看出,加窗阶段后相邻两帧在端点处变化较大,对于变化较大的情况一般思路就是*滑,比如进行插值处置,其实帧移的操作就是插值呀。
五、语谱图(基于FFT)
有时FFT也换成DCT实现,FFT延展与DCT是等价的,就不一一列出了。只预测FFT情况。
基于FFT语谱图的定义:
就是分帧,对每一格讯号FFT
然后求绝对值/*方。
方式论预测:
得出示意图,语音分帧→每一格分别FFT→求取FFT之后的幅度/热量,这些数值都是正值,类似图像的像素点,显示出来就是语谱图。
语谱图code:
读取语音调用语谱图code:
常见对数谱,修改上面的一句code即可:
效果图:
有时对数中添加常数项;
效果图:
六、雷雨大风功率谱密度
先来看看功率谱定义:
可见对于有限的讯号,功率谱之因此可以估计,是基于两点假设:1)讯号*稳; 2)随机讯号具有遍历性
A-功率谱密度
1)周期图法
已知N个采样点的讯号,对其进行傅里叶变换:
进一步得到功率谱密度:
按照上文预测相关函数的思路,得出一个预测:
就是讯号u的相关函数就是u卷积上u的翻转,而相关函数与功率谱密度是互为傅里叶变换。u相关联傅里叶变换U,u的翻转相关联U的共轭,时域的卷积相关联频域的相乘,就得到了功率谱估计的函数,同样标识符实现依然可以借助上文预测相关函数的特性加以预测。
相关联code,当中my_direct_convolution仍然调用上面的函数:
效果图中可以看出讯号30Hz可以明显从功率谱图观察:
可以看出:功率谱密度与相关函数相关联,而相关函数是统计信息,按前文提到的,它是建立在讯号*稳的假设之上。如果讯号不够*稳呢?周期图法的思路显然是不适用的,Welch就是对这一问题的改进。
2)*均周期图法(Welch)
与周期图谱求功率谱密度不同,Welch不再从整个天数段考虑,而是做了三点改进:
截断,将这个讯号分成多个片段
加窗:即使截断,截断就要泄露,通常都选择加窗处置
重叠:截断之后,为了防止相邻两段差异过大,通常插值*滑处置,也就是取重叠
得出Welch定义,每一段的功率:
当中,d2(n)是窗函数,M是每一段的宽度,假设总宽度为L,则Welch*均功率谱密度为:
简单来理解就是:分段的每一段用周期图法得到功率谱密度,然后加权*均,不再细说了。
B-雷雨大风功率谱密度
按前面预测,周期图法针对的是*稳讯号,而Welch虽然考虑了非*稳的特性,但分段的数量通常较小,每一段的宽度较大,对音视频讯号而言,这也是不够的。音视频讯号可以看作雷雨大风间的*似*稳(如一格讯号),对每一格利用周期图法预测,这个就是雷雨大风功率谱密度的思路。通常为了防止一格的讯号不够*稳,每一格也可以进一步利用Welch方式处置。
相关联code,分帧、Welch都是上面的思路,直接调用了:
七、谱熵
谱熵的定义,首先对每一格讯号的频谱绝对值归一化:
这样就得到了概率密度,进而求取熵:
方式论预测:熵充分体现的是不确定性,例如抛骰子一无所知,每一面的概率都是1/6,信息量最大,也就是熵最大。如果知道商家做了手脚,抛出3的概率大,这个时候我们已经有一定的信息量,抛骰子本身的信息量就少了,熵也就变小。对于讯号,如果是白噪声,频谱类似均匀分布,熵就大一些;如果是语音讯号,分布不均匀,熵就小一些,利用这个性质也可以得到一个粗糙的VAD(有话帧检测)。谱熵有许多的改进思路,滤波取某一频段、设定概率密度上限、子带*滑谱熵,自带*滑通常利用拉格朗日*滑因子,这是即使防止某一段子带没有讯号,这个时候的概率密度就没有意义了,这个思路在利用统计信息估计概率密度时经常见到,比如朴素贝叶斯就用到这个思路。
谱熵code:
八、基频
基频:也就是基频周期。人在发音时,声带振动产生浊音(voiced),没有声带振动产生清音(Unvoiced)。浊音的发音过程是:来自肺部的气流冲击声门,造成声门的一张一合,形成一系列准周期的气流脉冲,经过声道(含口腔、鼻腔)的谐振及唇齿的辐射形成最终的语音讯号。故浊音波形呈现一定的准周期性。所谓基音周期,就是对这种准周期而言的,它反映了声门相邻两次开闭之间的天数间隔或开闭的频率。常见的发声模型:
基音抽取常见的方式有:倒谱法、雷雨大风自相关法、雷雨大风*均幅度差法、LPC法,这里借用上面的雷雨大风自相关法,说一说基频抽取思路。
自相关函数:
通常进行归一化处置,即使r(0)最大,
得到归一化相关函数时候,归一化的相关函数第一个峰值为k=0,第二个峰值方式论上应该相关联基频的位置,即使自相关函数对称,通常取一半预测即可。
取一格讯号为例,整个说话段要配合有话帧检测(VAD技术,这里不提了)自相关法估计基频code:
卷积还是调用上面的函数。波形的雷雨大风周期还是比较明显的,得出一格讯号:
九、共振峰
首先得出共振峰定义:当声门处准周期脉冲激励进入声道时会引起共振特性,产生一组共振频率,这一组共振频率称为共振峰频率或简称共振峰。
共振峰参数包括共振峰频率和频带的宽度,它是区别不同韵母的重要参数,由于共振峰包含在语音的频谱包络中,因此共振峰参数的抽取关键是估计自然语音的频谱包络,并认为谱包括的极大值就是共振峰,通常认为共振峰数量不超过4个。发声模型:
对这个模型抽象,通常有声管模型、声道模型两个思路,以声道模型为例:认为讯号经过与声道的卷积,得到最终发出的声音。声道就是系统H。
共振峰的求解思路非常多,这里得出一个基于LPC内插的例子。
如果表达这个系统响应H呢?一个基本的思路就是利用全极点求取:
从按照时域里讯号与声道卷积的思路,频域就是讯号与声道相乘,因此声道就是包络:
利用线性预测系数(LPC)并选择适当阶数,可以得到声道模型H。LPC以后有预测过,可以点击这里。
其实利用LPC得出的包络,找到四个峰值,就已经完成了共振峰的估计。为了更精确地利用LPC求取共振峰有,两种常见思路:抛物线内插法、求根法,这里以内插法为例。其实就是一个插值的思路,如图
为了估计峰值,取p(k-1)、p(k)、p(k+1)哪一个点都是不合适的,插值构造抛物线,找出峰值就更精确了。
LPC内插法code:
为了更好地估计声道,这里用了预加重,即使类似电磁波等讯号,波讯号传播过程中高频分量衰减更大,因此须要对高频进行一定程度的提升,这个操作叫做:预加重。
相关联的效果图:
求解的共振峰频率(Hz):676.15 1372.53 2734.15 3513.69,基音周期与共振峰不是一回事啊!有时为了表征声道特性,也可以直接利用LPC系数作为特点,而不必求取共振峰。
梅尔倒谱系数(MFCC)打算单拎出来写了,涉及的概念有点多,其他特点用到再补充吧,上一篇文章也提到了很多音视频特点的概念。
参考:
宋知用《MATLAB在语音讯号预测与合成中的应用》
发表评论