数字音效处理器 项目报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字信号处理B》课程项目
终期报告
题目:数字音效处理器
组号: 14 号
任课教师:
组长:
成员:
成员:
成员:
成员:
联系方式:
二0一五年 10月 24日
目录一.项目介绍
二.项目原理
三.项目完成过程四.项目结果与分析五.工作分配
六.参考文献
一.项目介绍
本次项目要求设计一个数字音效处理器,通过一系列相关算法以及借助相关工具(MATLAB),对声音信号进行处理,要求具备语音识别以及降除噪声的功能,另外我们又加入了语音均衡器,丰富了数字音效处理器的功能。最后加入GUI 界面设计,方便了用户的使用。
二.项目原理
本部分主要分为三部分,分别是语音识别,噪声降除以及语音均衡器的相关原理。
语音识别:
1.1项目大体步骤
我们主要采用基于VQ的说话人识别,我们采用的识别结构框图如下,
1.2 语音信号的预处理
预处理包括:预加重,端点检测,分帧以及加窗。
预加重的目的是将更为有用的高频部分频谱进行提升,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求取频谱,以便于进行频谱分析或声道参数分析。
端点检测即是对输入语音信号的起始点与结束点的判定。
分帧:由于语音信号的准平稳特性,使得其只有在短时段上才可被视为一个平稳过程,所以需要把一定长度的语音分为很多帧来分析。
加窗:为了减少语音帧的截断效应,降低帧两端的坡度,使语音帧的两端不引起急剧变化而平滑过渡到零,需要将语音帧乘以一个窗函数。
1.3 MFCC特征函数的提取
Mel频率倒谱系数(MFCC)的分析与传统的线性倒谱系数(LPCC)不同,它的分析是着眼于人耳的听觉机理,因为人类在对1000Hz以下的声音频率范围的感知遵循近似的线性关系;对1000Hz以上的声音频率范围的感知不遵循线性关系,而是遵循在对数频率坐标上的近似线性关系,所以Mel倒谱系数获得了较高的识别率和较好的鲁棒性。实现上,Mel倒谱系数是将语音频率划分成一系列三角形的滤波器序列,这组滤波器在频率的Mel坐标上是等待宽的。
MFCC参数的提取过程为:
1. 对输入的语音信号进行分帧、加窗,然后作离散傅立叶变换,获得频谱分布信息。
设语音信号的DFT为:
10,)()(112-≤≤=∑-=-N k e
n x k X N n N nk j a π ********************************(1)
2. 再求频谱幅度的平方,得到能量谱。
3. 将能量谱通过一组Mel 尺度的三角形滤波器组。
我们定义一个有M 个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m),m=1,2,3,···,M ,本系统取M=100。
4. 计算每个滤波器组输出的对数能量。
N 1
2a m k 1S(m)ln(|(k)|H (k)),0m M 1X -==≤≤-∑ **************************(2)
其中m H (k)为三角滤波器的频率响应。
5. 经过离散弦变换(DCT )得到MFCC 系数。
1
0C(n)()cos((0.5/)),01M m S m n m m n N π-==-≤≤-∑**********************(3)
MFCC 系数个数通常取20—30,常常不用0阶倒谱系数,因为它反映的是频谱能量,故在一般识别系统中,将称为能量系数,并不作为倒谱系数,本文选取20阶倒谱系数。
与线性预测倒谱分析相比,MFCC 的优点是不依赖全极点语音信号产生模型的假定,因而在噪声环境下表现出更强的鲁棒性,在非特定人说话人识别方面有利于减小因说话人不同的差异可能带来的影响。
1.4矢量量化
矢量量化是将若干个幅度连续取值的时域采样信号分成一组,则构成矢量,然后用若干离散数字值,来表示各种矢量,其有效地利用了矢量中各分量的四种相关的性质,因此在量化过程中最大限度地消除数据之间的冗余,从而实现高效的熵压缩码。其基本原理为:
将一帧语音数据中提取的矢量特征在多维空间给予整体量化。首先把信号序列的每隔K 个连续点分成一组,形成K 维欧氏空间中的一个矢量,然后对此矢量进行量化。
本文中矢量量化有两个作用,在训练阶段,把每个说话者所提取的特征参数进行分类,产生不同码子组成的码本;在识别阶段,我们用VQ 方法计算平均失真测度,以此进行说话人识别。
VQ 码本的设计主要采用LBG 算法,该算法是一种递推算法,从一个事先选定的初始码本进行迭代,直到系统性能满足要求或不再有明显的改进为止。
具体LBG 算法如下:
设 (1,2,,)k X k K =⋅⋅⋅ 为训练序列,B 为码本。
1. 取提取出来的所有帧的特征矢量的型心(均值)作为第一个码字矢量B1。
2. 将当前的码本Bm 根据以下规则分裂,形成2m 个码字。
(1)(1)
m m m m B B B B εε+-⎧=+⎨=-⎩ *************************************************(4) 其中m 从1变化到当前的码本的码字数,ε是分裂时的参数,本文ε=0.01。
3. 根据得到的码本把所有的训练序列(特征矢量)进行分类,然后按照下面两个公式计算训练矢量量化失真量的总和[]n D 以及相对失真(n 为迭代次数,初始n=0,[1]D -=∞,B 为当前的码书),若相对失真小于某一阈值ε,迭代结束,当前的码书就是设计好的2m 个码字的码书,转5。否则,转下一步。
量化失真量和:
()1min (,)
K n k k D d X B ==∑
相对失真:
(1)n n
n D D D -- *****************************(6)
4. 重新计算各个区域的新型心,得到新的码书,转3。
5. 重复2 ,3 和4步,直到形成有M 个码字的码书(M 是所要求的码字数),其中D0=10000。
1.5说话人识别
在匹配阶段,VQ 用来计算未知说话人特征矢量(1,2,,)k X k K =⋅⋅⋅和已经训练
说话人码本{}C C C (1)(2)(N ),,...,之间的平均量化失真D ,并设置一个阈值,若
D 小于此阈值,则是原训练者,反之则认为不是原训练者。
注: ∑=≤≤=11]min[/1),(j M m m j T D B x d *****************(7)