数字信号处理课程项目

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数字信号处理B》课程项目

实施报告

题目:数字音效处理器.

目录

一、设计要求: (3)

二、盲信号处理 (3)

(1)Fast ICA算法简介 (3)

(2)遇到问题 (5)

三、去噪 (5)

(1)遇到问题 (5)

(2)维纳滤波器 (6)

四、性能与结果分析 (7)

1维纳滤波 (7)

(1)去噪时域图 (7)

(2)去噪频域图 (8)

(3)频域瀑布图 (8)

2盲信号分离 (9)

(1)分离男声 (9)

(2)分离女声 (9)

3用户界面 (10)

五、源程序代码 (11)

(1)FastICA盲信号分离代码: (11)

(2)维纳滤波去噪: (13)

(3)瀑布图代码: (15)

(4)主界面代码: (16)

七、小组分工 ............................................................................................ 错误!未定义书签。

一、设计要求:

设计一个基于MATLAB的数字音频分析与处理系统,能够实现对数字音频的测试分析与处理。要求:

(1)输入语音信号源为实际环境采集语音;

(2)至少实现1种音效测试分析功能(频率响应,瀑布频谱图,相位响应曲线,抗阻曲线,谐波失真曲线,互调失真曲线,音压曲线等);并

至少实现1中语音处理功能(声纹识别,关键词识别,语音去噪,声

源分离等);并分别对其进行实际运用。

(3)用人机交互界面操控、扬声器/耳机输出音效。

二、盲信号处理

(1)Fast ICA算法简介

快速ICA算法,由于采用了定点迭代的思想,所以又称固定点(Fixed-Point)算法或定点算法,是一种快速寻优神经网络算法。与普通的神经网络算法不同的是这种算法采用了牛顿迭代的思想对采样点采用批处理的方式,在每一步迭代中有大量的样本数据参与运算。基于目标函数的选择不同,从而产生了FastICA 算法的基于负熵最大、峭度、互信息最小、最大似然估计等的多种形式。FastICA 算法的优点如下:

1.收敛速度快,FastICA收敛速度为2次以上,普通的ICA算法收敛仅为1次。

2.能利用任何的非线性函数直接找出任何非高斯分布的独立分量,而对于其他的算法来说,概率密度函数的估计不得不首先进行。

3.独立分量可被逐个估计出来,类似于做投影追踪,这在仅需要估计几个(不是全部)独立分量的情况下,能减小计算量。

4.Fast-ICA算法有许多神经算法的优点,它是并行、分布式的且计算简单,内存要求很少,它的性能能够通过选择适当的非线性函数来最佳化。

从Fast-ICA算法流程图可以看出,通常先对数据进行初步的白化或球化处理,白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程。这是由于一般情况下,所获得的数据都具有相关性。通过去均值和白化等预处理在对其进行真正的算法分离。通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性比较好。概括来说,Fast-ICA算法主要包含两部分:预处理部分和核心算法部分。预处理部分主要包括去均值化和白化处理;核心算法部分是基于拟牛顿算法,具体的实现见附录程序。

Fast-ICA算法流程图:

观测信号x去均值

对去均值后的观测信号x进行白化

基于负熵最大化理论确定目标函数

应用牛顿迭代算法求目标函数的最大值,即分

离矩阵w

收敛?

由获得信号源

在所有等方差的随机变量中,高斯变量的熵最大,因而我们可以利用熵来度量非高斯性,常用熵的修正形式,即负熵。在分离过程中,可通过对分离结果的非高斯性度量来表示分离结果间的相互独立性,当非高斯性度量达到最大时,则表明已完成对各独立分量的分离。

负熵的定义:,H为随机变量的微分熵

当Y具有高斯分布时Ng(Y)=0,Y的非高斯性越强,其微分熵越小,所以Ng(Y)可以作为随机变量Y非高斯性的测度。快速ICA学习规则是找一个方向以便具有最大的非高斯性。

FastICA算法的迭代公式:

(2)遇到问题

对于声源分离的理解一开始我们将其理解为经典的“鸡尾酒会效应”,经过大量的数据查询和整理,我们发现目前情况下,我们只能用机器实现分离简单叠加的盲信号,或者说是以特定形式混合在一起的信号,不能分离一些复杂的盲信号。在近几年的有效方法中,FastICA算法可以有效的分离简单叠加的盲信号,并且可以用matlab编程的方式得以实现。于是,我们使用matlab中的FastICA 算法进行了简单叠加的盲信号分离。

三、去噪

(1)遇到问题

在本次课程项目中,我们一开始选用了最基础的低通滤波器,并花了一些时间做出了巴特沃斯低通滤波器进行测试。但是除了语音变得更沉闷一些了对噪音

并没有什么实质性的消除效果。因为我们组要消除的噪音是雪花噪音。

我们尝试了维纳滤波器,维纳滤波器可以将大部分噪音都滤除,只留下需要的人声信号以及几乎听不见的混在人声特定地方的噪音。

(2)维纳滤波器

维纳(Wiener )是用来解决从噪声中提取信号的一种过滤(或滤波)方法。这种线性滤波问题,可以看作是一种估计问题或一种线性估计问题。

一个线性系统,如果它的单位样本响应为)(n h ,当输入一个随机信号)(n x ,且

)()()(n v n s n x += (1) 其中)(n x 表示信号,)(n v )表示噪声,则输出)(n y 为

∑-=m

m n x m h n y )()()( (2)

我们希望)(n x 通过线性系统)(n h 后得到的)(n y 尽量接近于)(n s ,因此称)(n y 为

)(n s 的估计值,用^

)(n s 表示,即

^

)()(n s n y = (3) 则维纳滤波器的输入—输出关系可用下面图1表示。

图1

实际上,式(2)所示的卷积形式可以理解为从当前和过去的观察值)(n x ,)1(-n x ,)2(-n x …)(m n x -,…来估计信号的当前值^

)(n s 。因此,用)(n h 进行过滤问题实际上是一种统计估计问题。

一般地,从当前的和过去的观察值)(n x ,)1(-n x ,)2(-n x …估计当前的信号值^

)()(n s n y =成为过滤或滤波;从过去的观察值,估计当前的或者将来的信号值)0)(()(^

≥+=N N n s n y 称为外推或预测;从过去的观察值,估计过去的信号值

相关文档
最新文档