本科毕业设计-信息处理课群综合训练与设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学号:
课程设计
题目信息处理课群综合训练与设计—
语音信号的盲分离
学院信息工程学院
专业通信工程
班级通信1104
姓名
指导教师周建新
2014 年 6 月20 日
《信息处理课群综合训练与设计》任务书
学生姓名:专业班级:通信1104 指导教师:周建新工作单位:信息工程学院
题目: 语音信号的盲分离
初始条件:
Matlab软件、信号与系统、通信处理等
要求完成的主要任务:
设计任务
根据盲信号分离原理,用matlab采集两路以上的语音信号,选择合适的混
合矩阵生成若干混合信号。
选取合适的盲信号分离算法(如独立成分分析ICA
等)进行训练学习,求出分离矩阵和分离后的语音信号。
设计要求
(1)用matlab做出采样之后语音信号的时域和频域波形图
(2)选择合适的混合矩阵,得到混合信号,并做出其时域波形和频谱图
(3)采用混合声音信号进行训练学习,求出分离矩阵,编写出相应的确matlab 代码。
(4)用求出的分离矩阵从混合信号中分离出原语音信号,并画出各分离信号的时域波形和频谱图。
(5)对结果进行对比分析。
参考书:
[1] 马建仓,牛奕龙,陈海洋.盲信号处理. 国防工业出版社, 2006.6
[2] 赵艳.盲源分离与盲信号提取问题研究. 西安理工大学.2004.3
[3] 马建芬.语音信号分离与增强算法的研究.电子工业出版社.2012.3
时间安排:
1、理论讲解,老师布置课程设计题目,学生根据选题开始查找资料;
2、课程设计时间为2周。
(1)理解相关技术原理,确定技术方案,时间2天;
(2)选择仿真工具,进行仿真设计与分析,时间6天;
(3)总结结果,完成课程设计报告,时间2天。
指导教师签名: 2014年 6月10日系主任(或责任教师)签名:年月日
目录
摘要 (I)
Abstract (II)
1 绪论 (1)
2 盲信号处理BSP (2)
2.1 盲信号处理 (2)
2.2 盲分离处理 (2)
2.3 Matlab语音信号的采集 (3)
2.3.1 语音信号的采集方法 (3)
2.3.2三路语音信号的采集 (4)
2.4盲信号分离的两种算法介绍 (4)
2.4.1 PCA算法原理 (4)
2.4.2独立分量分析ICA (5)
3 语音信号的分离方案设计 (6)
3.1 FAST-ICA算法分离 (6)
3.1.1基于负熵最大的快速ICA (6)
3.2 主分量分析PCA (9)
3.2.1 主成分分析原理 (9)
3.2.2 PCA算法原理 (10)
3.3 主分量分析PCA和ICA比较 (11)
4 语音信号的分离方案实现 (12)
4.1 语音信号的混合 (12)
4.2 语音信号的分离实现 (13)
4.2.1 FAST-ICA算法分离 (13)
4.2.2 主分量分析算法分离 (14)
4.2.3 分离语音频谱分析及比较 (15)
5 总结 (18)
参考文献 (19)
附录1 原始语音Matlab信号频谱程序 (20)
附录2 预处理部分matlab程序 (21)
附录3 算法的matlab程序 (23)
(1)FAST-ICA算法 (23)
(2)PCA算法分离 (24)
摘要
了解盲信号处理(Blind Signal Processing,BSP)的概念,并掌握语音盲分离技术和Matlab的运用。
本文重点研究了以语音信号为背景的盲处理方法,从混有噪声的的混叠语音信号中分离出各个语音源信号,来模仿人类的语音分离能力。
本设计用matlab 采集3路语音信号,选择合适的混合矩阵生成若干混合信号。
结合独立分量分析ICA技术,选取混合矩阵对3个语音信号进行混合,并从混合信号中分离出原语音信号,画出各分离信号的时域波形和频谱图和原来的信号进行比较。
此外还运用PCA算法进行了混合语音信号的分离实现,最终对两种算法进行比较。
关键字:盲信号处理语音信号盲源分离BSS 独立分量分析ICA技术
Abstract
Understanding the concept of blind signal processing (Blind Signal Processing, BSP), and master the voice of blind separation technology and the use of Matlab.
This paper focuses on the background to the speech signal blind approach, mixed with the noise from the speech signal aliasing isolated individual voice source signal, to mimic the human voice separation ability. The 3-way design with matlab voice signal acquisition, select the appropriate mixing matrix to generate a number of mixed signals.
ICA technology combined with independent component analysis to select the mixing matrix for three voice signals are mixed and separated from the mixed signals out of the original speech signal, draw each separated signal time-domain waveform and frequency spectrum and compare the original signal. In addition, the use of PCA algorithm to achieve the separation of mixed speech signals, and ultimately the two algorithms were compared.
Keywords: blind signal processing speech signals blind source separation BSS independent component analysis ICA technology
1 绪论
近年来,盲信号处理逐渐成为当今信息处理领域中热门的课题之一,并且已经在尤其在、地震探测、移动通信、语音处理、阵列信号处理及生物医学工程领域展现出诱人的应用前景。
盲处理应用中的三个主要方面:语音处理,图片处理,生物医信号处理。
本文主要学习的是语音的处理。
语音信号分离、语音识别是盲处理应用的一个重要领域。
也是本文学习研究的重点。
最典型的应用就是声控计机,计算机所接受到的语音指令肯定是带有各种环境噪声的,还可能存在其他的语音信号(如有其他人说话),而且这些信号源与接收器的相对位置也未知,计算机需要在这种情况下识别出正确的语音命令。
此次实践主要目的在掌握matlab对语音的采集,了解盲处理的相关知识,掌握盲分离的原理,从而确定盲分离的方法,根据盲信号分离原理,用matlab 采集两路以上的语音信号,选择合适的混合矩阵生成若干混合信号。
选取合适的盲信号分离算法(如独立成分分析ICA等)进行训练学习,求出分离矩阵和分离后的语音信号。
为达到良好的学习效果,此次实践有如下要求:
(1)用matlab做出采样之后语音信号的时域和频域波形图
(2)选择合适的混合矩阵,得到混合信号,并做出其时域波形和频谱图
(3)采用混合声音信号进行训练学习,求出分离矩阵,编写出相应的matlab代码。
(4)用求出的分离矩阵从混合信号中分离出原语音信号,并画出各分离信号的时域波形和频谱图。
(5)对结果进行对比分析。
通过此次实践,加深的对Matlab功能的认识,掌握了Matlab对语音信号的采集及处理,了解了盲分离的原理及运用,运用了合适的矩阵得到了混合信号,减少了计算量,同时达到了将得到的混合信号分离的目的,将前后信号进行对比,了解了Matlab的处理效率。
2 盲信号处理BSP
2.1 盲信号处理
盲信号处理作为计算机智能学的核心研究的内容,在生物医学、医疗图像、图像增强、远程传感、雷达与通信系统、地震勘测等方面均具有突出的作用。
盲处理的工作原理框图如图1-1所示:
图2-1 盲处理的工作原理框图
其中,s(k)是未知源的信号向量,x(k)是混合信号向量(或观测信号、传感器检测信号),n(k)是噪声信号向量,混合信号向量经过分离系统可以得到分离的信号,可与原信号比较。
2.2 盲分离处理
盲分离的算法比较多,此次选择较为简单的瞬时线性混叠盲分离,瞬时线性混叠数学模型如下:
x(t)=As(t) (公式1-1)
y(t)=Wx(t) (公式1-2)其中(1)式为混叠模型,(2)式为分离模型;s(t)=(s1(t),s2(t),…,Sn(t))T 为源信号未知的m×n的混叠矩阵,源信号s(t)也是未知的,W为分离矩阵。
瞬时线性混叠盲分离的目的就是通过调节分离矩阵W(或混叠矩阵A),使得分离信号与对应的源信号的波形保持一致,即:
y(t)=PDs(t) (公式1-3)其中P为置换矩阵,D为对角矩阵。
y(t)是对源信号s(t)的估计,瞬时线性混叠盲分离问题允许存在两个方面的不确定性:
(1)排列顺序的不确定性,无法了解所抽取的信号应是源信号s(t)为哪一个分量.
(2)信号幅度的不确定性,即无法知道源信号的真实幅值。
瞬时线性盲分离实现的数学模型如图1-2所示,其中LA表示学习算法(LearningAlgorithm)。
图2-2 瞬时线性盲分离实现的数学模型图
2.3 Matlab语音信号的采集
2.3.1 语音信号的采集方法
在Matlab环境中,主要可以通过以下几种方法驱动声卡,采集语音信号:
1.将声卡作为对象处理采集语音信号Matlab将声卡作为对象处理,其后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备(声卡)。
操作时首先要对声卡产生一个模拟输入对象,给对象添加一个通道设置采样频率后,就可以启动设备对象,开始采集数据,采集完成后停止对象并删除对象。
2.调用wavrecord功能函数采集语音信号。
wavrecord功能函数只适用windows95/98/N平台,它使用windows声音输入设备录制声音。
函数调用方式:wavrecord(N,fs,ch,nbits),其中N采集的样本数据量,fs是样本采集频率有8000Hz、11025Hz、22050Hz和44100Hz几个选项,默认值为11025Hz;ch是样本采集通道,1为单声道,2为双声道,默认值为单声道;nbits是每个样本的位数(或称解析度),double、single或int16、uint8。
3.运用audiorecorder对象采集语音信号audiorecorder(fs,nbits,ch)可以创设一个audiorecorder对象。
fs是样本采集频率,为8000Hz、11025Hz、22050Hz和44100Hz之一,默认值为8000Hz;nbits是每个样本的位数,8位或16位,默认值为8位;ch:样本采集通道,1为单声道,2为双声道,默认值为
1(单声道);audiorecorder对象创设后,就可以进行相应的录音、暂停、停止、播放以及数据读取等操作。
2.3.2三路语音信号的采集
这次设计用Matlab程序采集三路语音信号,基本步骤如下:创建工程文件-编写程序-调试-运行-录音,程序如下。
在干扰噪声很小的环境下用麦克风录制进行3段不同的语音文件,保存成*.wav文件。
为了便于语音信号的盲分离要将这3段语音用软件进行处理使其文件大小一样,仿真时所用的3段语音是gequ1 gequ2, gequ3,时间是5秒,单通道。
clc;
fs=8000;
channel=1;
t=5;
fprintf('按任意键后开始%d 秒录音:',t);
Pause;
fprintf('录音中...');%文字提示
y=wavrecord(t*fs, fs,channel,'double');%录制语音信号
fprintf('录音结束\n');%文字提示
wavwrite(y,fs,'D:\Documents\Desktop\gequ3.wav');% 存储录音信号,先创建文件
在matlab中对上述语音信号进行分析,接下来对3段语音信号进行的时域分析、频谱分析。
2.4盲信号分离的两种算法介绍
盲源分离在许多领域中都有成功的应用,近十几年来,受到了越来越多的重视,已经有大量的算法不断地提出。
其算法可以大致的分为基于高阶累积量的盲源分离、基于信息理论的盲源分离和基于神经网络的盲源分离三种类型。
这三类也包含很多不同类型的算法,下面主要介绍本次设计要用到的ICA算法和PCA算法。
2.4.1 PCA算法原理
令x为表示环境的m维随机向量。
假设x均值为零,即:E[x]=O。
令w表示为m维单位向量,x在其上投影。
这个投影被定义为向量x和w的内积,表示为:
信号源1()s t 2()s t 3()s t ()M s t 混合系统
A
观察信号1()x t 2()x t 3()x t ()M x t 解混矩阵
B 估计信号1()y t 2()y t 3()y t ()M y t 1信道2信道3信道n 信道(t)S (t)X (t)
Y 而主成分分析的目的就是寻找一个权值向量w 使得表达式E[y2]的值最大
化:
根据线性代数的理论,可以知道满足式子值最大化的训应该满足下式:
即使得上述式子最大化的w 是矩阵Cx 的最大特征值所对应的特征向量。
特征向量的选择取决于协方差矩阵的特征值的大小。
经过 PCA 分析,一个多变量的复杂问题被简化为低维空间的简单问题。
可以利用这种简化方法进行作图,形象地表示和分析复杂问题。
2.4.2独立分量分析ICA
对于盲源分离问题,独立分量分析(Independent Component Analy2sis,ICA )是指在只知道混合信号,而不知道源信号、噪声以及混合机制的情况下,分离或近似地分离出源信号的一种分析过程。
假设源信号若干个统计上相互独立的信号组成的,它们在空间中形成交叠,独立分量分析(Independent Component Analysis ,ICA)是借助于多个信道同步观察交叠信号,将观察信号经过解混分解成若干独立成分,作为对源信号的一组估计,如图2-3所示:
图2-3 独立分量分析法
可以假设:A 是线性系统可用矩阵表示,实际仿真时是随机阵。
且信道对信
号无影响,观察信道数与信号数相同(A ,B 方阵)。
独立分量分析ICA 有多种算法,如基于代数结构的AMUSE,SOBI,JADE 以及基
于信息论的Fast-ICA 和Info-max 。
其中,Fast-ICA 的收敛速度快,且有一定的精度保证。
Fast-ICA 算法能够更科学的去除元素组合之间的相关性,得到的元素组合
比传统方法更具有说服力。
3 语音信号的分离方案设计
3.1 FAST-ICA 算法分离
Fast-ICA 算法是一种快速而数值稳定的方法,采用拟牛顿算法实现寻优,
具有超线性收敛速度,通常收敛速度较梯度下降寻优算法快得多;矩阵特征值分解盲分离方法通过对矩阵进行特征分解或者广义特征分解估计分离矩阵,是一种解析方法,可直接找到闭形式解,没有迭代寻优过程,因此运行速度很快。
快速ICA 算法,由于采用了定点迭代的思想,所以又称固定点(Fixed-Point)
算法或定点算法,是一种快速寻优神经网络算法。
FastICA 算法的优点如下:
1.收敛速度快,FastICA 收敛速度为2次以上,普通的ICA 算法收敛仅为1
次。
2.能利用任何的非线性函数直接找出任何非高斯分布的独立分量,而对于其
他的算法来说,概率密度函数的估计不得不首先进行。
3.独立分量可被逐个估计出来,类似于做投影追踪,这在仅需要估计几个(不
是全部)独立分量的情况下,能减小计算量。
4.Fast-ICA 算法有许多神经算法的优点,它是并行、分布式的且计算简单,
内存要求很少,它的性能能够通过选择适当的非线性函数来最佳化。
3.1.1基于负熵最大的快速ICA
Fast-ICA 算法有基于峭度、基于似然最大、基于负熵最大等形式,这里,
我们介绍基于负熵最大的FastICA 算法。
它以负熵最大作为一个搜寻方向,可以实现顺序地提取独立源,充分体现了投影追踪(Projection Pursuit )这种传统线性变换的思想,
由信息论理论可知:在所有等方差的随机变量中,高斯变量的熵最大,因
而我们可以利用熵来度量非高斯性,常用熵的修正形式,即负熵。
根据中心极限定理,若一随机变量X 由许多相互独立的随机变量()N i S i ,...3,2,1=之和组成,只要i S 具有有限的均值和方差,则不论其为何种分布,随机变量X 较i S 更接近高斯分布。
换言之,i S 较X 的非高斯性更强。
因此,在分离过程中,可通过对分离结果的非高斯性度量来表示分离结果间的相互独立性,当非高斯性度量达到最大时,则表明已完成对各独立分量的分离。
负熵的定义: ()()()Y H Y H Y N Gauss g -= (公式3-1)
式中,Gauss Y 是一与Y 具有相同方差的高斯随机变量,()⋅H 为随机变量的微分熵
()()()ξξξd p p Y H Y Y lg ⎰-= (公式3-2)
根据信息理论,在具有相同方差的随机变量中,高斯分布的随机变量
具有最大的微分熵。
当Y 具有高斯分布时,()0=Y N g ;Y 的非高斯性越强,其微分熵越小,()Y N g 值越大,所以()Y N g 可以作为随机变量Y 非高斯性的测度。
由于根据式(3.6)计算微分熵需要知道Y 的概率密度分布函数,这显然不切实际,于是采用如下近似公式:
()()[]()[]{}2
Gauss g Y g E Y g E Y N -= (公式3-3) 其中,[]⋅E 为均值运算;()⋅g 为非线性函数,可取())tanh(11y a y g =,或
()()
2/ex p 22y y y g -=或()33y y g =等非线性函数,这里,211≤≤a ,通常我们取11=a 。
快速ICA 学习规则是找一个方向以便()X W Y X W T T =具有最大的非高斯性。
这里,非高斯性给出的负熵)(X W N T g 的近似值来度量,X W T 的方差约束为1,对于白化数据而言,这等于约束W 的范数为1。
FastICA 算法的推导如下。
首先,X W T 的负熵的最大近似值能通过对(){}X W G E T 进行优化来获得。
根据Kuhn-Tucker 条件,在(){}122==W X W E T 的约束下,(){}X W G E T 的最优值能在满足下式的点上获得。
(){}0=+W X W Xg E T β (公式3-4)
这里,β是一个恒定值, (){}X W Xg W E T T 00=β,0W 是优化后的W 值。
下面
我们利用牛顿迭代法解方程(3.4)。
用F 表示式(3.4)左边的函数,可得F 的雅可比矩阵()W JF 如下:
()(){}I X W g XX E W JF T T β-=' (公式3-5)
为了简化矩阵的求逆,可以近似为(3.5)式的第一项。
由于数据被球化,
{}I XX E T =,所以,(){}{}(){}(){}
I X W g E X W g E XX E X W g XX E T T T T T '''=⋅≈。
因而雅可比矩阵变成了对角阵,并且能比较容易地求逆。
(){}(){}
*
**=-=W W W W
X W g E X W Xg E W T T /'
简化后就可以得到FastICA 算法的迭代公式: 实践中,FastICA 算法中用的期望必须用它们的估计值代替。
最好的估计是
相应的样本平均。
对于Fast-ICA 算法,数据预处理是一个最基本、最必要的过程。
该过程包
括去均值和白化(或球化)。
去均值过程起到了简化ICA 算法的作用,白化也是信号源盲分离算法中一个
经常用到的预处理方法,对于某些盲分离算法,白化还是一个必须的预处理过程。
对混合信号的白化实际上就是去除信号各个分量之间的相关性。
从图3-1是Fast-ICA 算法流程图可以看出,通常先对数据进行初步的白化
或球化处理,白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程。
这是由于一般情况下,所获得的数据都具有相关性。
通过去均值和白化等预处理在对其进行真正的算法分离。
通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性比较好,快速ICA 算法一般的步骤如下:
1. 对观测数据X 进行中心化,使它的均值为0;
2. 对数据进行白化,Z X →;
3. 选择需要估计的分量的个数m ,设迭代次数1←p ;
4. 选择一个初始权矢量(随机的)p W ;
5. 令(){}(){}W Z W g E Z W Zg E W T p T p p '-=,非线性函数g 的选取见前文;
6. (
)j p j j T p p p W W W W W ∑-=-=1
1 ; 7. 令p p p W W W /=。
8. 假如p W 不收敛的话,返回第5步;
9.令1+=p p ,如果m p ≤,返回第4步。
图3-1 Fast-ICA 算法流程图
概括来说,Fast-ICA算法主要包含两部分:预处理部分和核心算法部分。
预处理部分主要包括去均值化和白化处理;核心算法部分是基于拟牛顿算法,具体的实现见附录程序。
3.2 主分量分析PCA
3.2.1 主成分分析原理
主成分分析(Principal Component Analysis,PCA)是一种掌握事物主要矛盾的统计分析方法,它可以从多元事物中解析出主要影响因素,揭示事物的本质,简化复杂的问题。
计算主成分的目的是将高纬数据投影到较低维空间。
给定n个变量的m个观察值,形成一个n *m的数据矩阵,n通常比较大。
对于一个由多个变量描述的复杂事物,认识难度会很大,于是我们可以抓住事物主要方面进行重点分析,如果事物的主要方面刚好体现在几个主要变量上,那么我们只需要将体现事物主要方面的较少的几个主要变量分离出来,对此进行详细分析。
但是,在一般情况下,并不能直接找出这样的关键变量。
这时我们可以用原有变量的线性组合来表示事物的主要方面,PCA 就是这样一种分析方法。
PCA主要用于数据降维,对于由一系列特征组成的多维向量,其中某些元素本身没有区分性,比如某个元素在所有的样本中都相等,或者彼此差距不大,那么这个元素本身就没有区分性,如果用它做特征来区分,贡献会非常小。
所以我们的目的是找那些变化大的元素,即方差大的那些维,而去除掉那些变化不大的维,从而使特征留下的都是“精品”,使得计算量也相应变小。
对于一个k维的特征来说,相当于它的每一维特征与其他维都是正交的(相当于在多维坐标系中,坐标轴都是垂直的),那么我们可以变化这些维的坐标系,从而使这个特征在某些维上方差大,而在某些维上方差很小。
所以我们的做法就是求得一个k维特征的投影矩阵,这个投影矩阵可以将特征从高维降到低维。
投影矩阵也可以叫做变换矩阵。
新的低维特征必须每个维都正交,特征向量都是正交的。
通过求样本矩阵的协方差矩阵,然后求出协方差矩阵的特征向量,这些特征向量就可以构成这个投影矩阵了。
3.2.2 PCA算法原理
令x为表示环境的m维随机向量。
假设x均值为零,即:E[x]=O。
令w表示为m维单位向量,x在其上投影。
这个投影被定义为向量x和w的内积,表示为:
而主成分分析的目的就是寻找一个权值向量w使得表达式E[y2]的值最大化:
根据线性代数的理论,可以知道满足式子值最大化的训应该满足下式:
即使得上述式子最大化的w是矩阵Cx的最大特征值所对应的特征向量。
特征向量的选择取决于协方差矩阵的特征值的大小。
经过 PCA 分析,一个多变量的复杂问题被简化为低维空间的简单问题。
可以利用这种简化方法进行作图,形象地表示和分析复杂问题。
3.3 主分量分析PCA和ICA比较
主分量分析(ICA)的目的在于降低向量的维数,取出随机信号间的线性相关性,找出原始信号中隐含的内在能量较大的信号。
但是由于PCA方法在实际的计算式只涉及到输入数据概率分布函数的二阶统计特性(仅利用到信号的协方差矩阵),所以分解出的各分量相互正交,主分量之间并不一定不相关,所以并不满足ICA方法对输入信号的独立要求。
从数理统计的角度来说,实际信号的大部分重要的信息往往包含在高阶的统计特性中,因此只有当多变量观测数据是由高斯分布的源信号构成时,PCA方法才能用来实现信号的分离,这是由于服从正态分布的随机过程的不相关性和统计独立是等价的,用一阶、二阶统计特性就可以完全描述信号。
然而,在实际的问题中,真正满足正态分布的随机信号很少,绝大部分的随机信号(如自然景物图像、语音信号和脑电波等等)都不是高斯的。
此外,ICA方法往往需要高阶量,也就是在学习阶段需要使用一定的非线性,然而非线性的使用并不影响输入和输出的线性映射关系。
许多情况下ICA能够提供比PCA更有意义的数据,而PCA仅在源信号为高斯分布时才能实现ICA。
尽管如此,在信号的预处理阶段,PCA方法可以实现数据的预白化,为后续的工作提供了方便。
4 语音信号的分离方案实现
本设计用matlab 采集3路语音信号,选择合适的混合矩阵生成若干混合信号。
然后合语音信号的分离算法对混合信号进行分离出原始信号。
具体实现主要结合独立分量分析ICA 技术,选取混合矩阵对3个语音信号进行混合,并从混合信号中分离出原语音信号,最后画出各分离信号的时域波形和频谱图和原来的信号进行比较。
此外还运用PCA 算法进行了混合语音信号的分离实现,最终对两种算法进行比较。
4.1 语音信号的混合
有题目要求根据盲信号分离原理,用matlab 采集三路语音信号,其语音信号及频谱如图4-1、4-2、4-3所示。
选择合适的混合矩阵生成若干混合信号,接下来在 MATLAB 中实现gequ1.wav 、gequ2.wav 、gequ3.wav 的混合,具体的程序先进行初始化、然后去均值,白化,用随机矩阵对这三路语音信号进行混合,具体的程序代码见附录1,运行的结果如图4-4所示:
x 10
4-10
1
gequ1原始语音信
号
gequ1原始语音信号FFT 频谱
x 10
4-0.50
0.5
gequ2原始语音信
号
gequ2原始语音信号FFT 频谱
x 104-0.50
0.5
gequ3原始语音信
号
gequ3原始语音信号FFT 频谱
4-1 原始语音信号和频谱
图4-2 语音混合信号和频谱
4.2 语音信号的分离实现
4.2.1 FAST-ICA算法分离
独立分量分析的含义是把信号分解成若干个互相独立的成分,它是为了解决盲信号分离的问题而发展起来的。
如果信号本来就是由若干独立信源混合而成的,ICA就能恰好把这些信源分解开来。
故在一般的文献中通常把ICA等同于BSS,ICA不同于主分量分析把目光投注于信号的二阶统计量,研究信号间的相关关系,而是基于信号的高阶统计量,研究信号间的独立关系。
独立分量分析中Fast-ICA算法是一种快速而数值稳定的方法,采用拟牛顿算法实现寻优,具有超线性收敛速度,通常收敛速度较梯度下降寻优算法快得多用FAST-ICA快速主成分分析算法实现混合信号的分离,我们可以借鉴下面的波形,原始的语言信号如图4-3中的信号,用FAST-ICA算法分离的语音信号图形如图4-4所示:
图4-3 三路原始语音信号
图4-4 fastICA 三路分离信号
将原始3路语音信号与分离出来的语音信号作对比,发现分离出来的语音信号和原来的信号的形状一样,不同的是顺序不一样,信号的幅度也减少了,这恰好说明了盲分离算法中
允许存在两个方面的不确定性:
(1)排列顺序的不确定性,无法了解所抽取的信号应是源信号s(t)为哪一个分量.
(2)信号幅度的不确定性,即无法知道源信号的真实幅值。
4.2.2 主分量分析算法分离
当多变量观测数据是由高斯分布的源信号构成时,PCA方法也可以用来实现信号的分离,同样用FAST-ICA快速主成分分析算法实现混合信号的分离,我们可以借鉴下面的波形,原始的语言信号是图4-3中的信号,用FAST-ICA算法分离的语音信号图如图4-5示:。