搜档网
当前位置:搜档网 › 基于ICA的语音分离技术

基于ICA的语音分离技术

基于ICA的语音分离技术
基于ICA的语音分离技术

通信工程课程设计文档

基于ICA的语音分离技术

本项目主要研究的是低噪声环境下基于ICA的语音分离技术。大致可以将我们的项目分为以下几个内容:

1、语音信号的输入;

2、语音信号的混合处理;

3、混合信号的中心化;

4、混合信号的白化;

5、FASTICA算法;

6、解混输出。

我们希望得到的最终结果是,将我们的输入的三个信号在经过混合和解混后以尽可能小的失真还原出来。

项目成员:

提交日期:

指导教师:

1、项目总结

1.1、设计动机

语音助手是一类可以通过语音交互来实现或替代部分我们在手机上的查询与操作的应用,通过此类应用,可以大大提高在不同场景下操作手机的便利性。现在的语音助手发展已经到了一个很高的位置,其中具有代表性三大语音助手是苹果公司的Siri语音助手、微软公司的Cortana和谷歌的Google Now。这些软件现在已经是在我们生活当中使用了,而语音助手中最重要的一环就是对用户输入的语音信号的识别。语音信号的采集比较简单,但是对语音信号的处理就是一项比较复杂的工作了。

语音信号处理是一门语音学和数字信号处理两个学科相结合的产物。它和认知学、心理学、语言学、计算机科学、模式识别和人工智能等学科有着紧密的联系。语音信号处理的发展依赖于这些学科的发展,而语音信号处理技术的进步也会促进这些领域的进步。

语音信号处理的目的就是要得到某些语音特征参数以便高效地传输或储存;或者是通过某种处理运算以达到某种用途的要求,例如人工合成语音、辨识出讲话者、识别出讲话的内容、进行语音控制等等。

1.2、问题分析

语音信号分离处理就是利用盲源分离(Blind Source Separation,BSS)技术对麦克风检测到的一段语音信号进行处理。混合语音信号的分离是盲分离的重要内容,目前的混叠语音分离大多是建立在低噪声环境中的混叠情形下,以BSS为主,根据信号的统计特性从几个观测信号中恢复出未知的独立源成分。

盲信号分离问题是信号处理中一个传统而又极具挑战性的课题。BSS是指仅从观测的混合信号(通常是多个传感器的输出)中恢复独立的源信号,这里的“盲”是指:

(1) 源信号是不可观测的;

(2) 混合系统是事先未知的。

本项目主要是基于独立分量分析(Independent component analysis,ICA)技术的盲源分离。基本思路是以非高斯信号为研究对象,在独立性假设的前提下,对多路观测信号进行盲源分离。在满足一定的条件下,能够从多路观测信号中,较好地分离出隐含的独立源信号。

1.3、需求分析

声音是人类从外界环境中获取信息的一个重要来源,如何对获取的声音进行加工处理显得尤为重要。对一个好的音频处理系统来说,应尽可能的还原出嘈杂环境中我们所需要的声音。然而在对获取的声音提取过程中,常常不可避免的会混进噪声,噪声可以理解为妨碍人的听觉器官或系统传感器对所接收的声源信息进行理解或分析的各种因素。

多年来,随着科技的发展,人们接收着大量的图像和声音信息,用传感器检测包含信息的信号,并通对这些信息进行加工来获得知识和改造自然的能力。然而传感器检测到的往往是多个未知成分混在一起的信号。在传感器检测方面人们一直追求对真实源信号的检测,新原理新方法新技术不断出现,如尽可能将传感器布置靠近源信号位置,采用多个传感器等措施来检测真实的源信号。由于检测到的信号是混合信号,因此对于有些情况(如公共场合信号等)中的真实源信号检测就更加困难。

所以就需要一种能够比较好的对收到的信号中的独立源信号分离的方法。我们这个项目进行的是初期的研究,也就是在理想的低噪声环境下来进行的模拟仿真实验。

2、系统设计

2.1、系统简介

本项目研究的是输入三个语音信号,然后通过混合这三个信号来模拟我们现实中的情景,达到我们一般的麦克风接收到的语音信号的情况。我们项目的重点是使用FastICA 算法来实现语音信号的分离,所以我们需要有信号的输入、FastICA语音信号分离和最终结果语音信号的输出。我们决定采用的MATLAB来进行仿真,因为我们比较熟悉的就是MATLAB仿真平台。

2.2、系统结构分析

首先在语音信号的输入方面,可以从简单的模型来研究,最后再推广到更加复杂的情况下来运用。因此在语音信号的输入方面我们采用了三个语音信号作为信号源作为输入,然后对其进行混合后再处理。

在混合三个语音信号方面是利用矩阵的方式将三个信号处理到一个矩阵中。再通过一个随机权矩阵与合并的信号矩阵进行乘,得出我们处理过的混合信号。对混合后的观测信号我们做ICA前的预处理。实际接收的数据是复杂而繁多的,其中包含有用信息和无用信

息,特别是传感器数量较多时,计算就很复杂,这时对观测数据进行预处理,能在一定条件下降低数据维数,减少后面处理的计算量。在ICA处理之前,通常先要对观测数据进行预处理,预处理主要有信号的中心化和白化。

信号中心化是将观测信号X减去其均值E{X},有X’=X-E{X}这样E{X’}=0,叫做信号X的中心化。在解混合之后,再将均值向量加回到解混得到的信号中去。

白化过程是对观测信号X实施线性变换到V,即V =MX,且使得E {VV’} =I,其中M 为白化矩阵。该变换仅仅是去掉了观测信号X之间的相关性。若要达到降维的作用,可对其协方差阵进行特征值分解,起到降维作用。

通过FastICA算法对预处理后的数据进行处理,对信号进行特征提取处理。

图1 快速ICA算法流程

(1)初始化w(0),令其模1,置k=1;

(2)期望值可由大量x向量的采样点

计算出来;

(3)用||w(x)||去除w(k);

(4)如果|w(k-1)|不是足够接近1,那么令k=k+1,返回第(2)步,否则输出w(k)。

2.3、系统层次

我们将采用自上而下的设计方法来实现这个系统的功能。本系统分为三层:(详细的系统结构会在下一节中具体介绍)

第一层:也就是顶层,是对系统整体结构的设计;

第二层:对其中的核心部分进行分解,分为几个功能模块;

第三层:本层是对各个模块如进行分析,具体分出各个模块的功能是如何实现的。

3、详细设计

出于对分离结果的直观性考虑,本次仿真主要通过以下方式进行:

1、鉴于声音文件的图像不够直观(如下图),我们通过两个主函数通过不同的形式来完

成仿真(main_ica.m主要完成对声音文件的分离;main_ica_fig.m主要完成对通过程序产生的信号的分离)。

2、将各个功能模块函数化,通过函数调用的形式完成仿真。这使得ICA算法的流程在

主程序中显得更加清晰,同时增强了仿真程序的可移植性。

图2 函数调用流程图

3.1、第一层

3.2、第二层

3.3、第三层(如下图)

4、原型设计

4.1、前期准备

我们选择的是MATLAB仿真软件,这个软件我们在以前的课程中学习过,所以掌握起来比较容易。在知识储备方面我们选择了两本书《独立分量分析的原理与应用》[1]《独立成分分析》[2]。我们的仿真需要有音频信号的输入,所以就需要音频文件,这里使用的是man.wav、music.wav、dragen.wav。

4.2、设计方法

因为通过自上而下的设计方法来设计我们这次的系统,所以在MATLAB中建立了一个main文件,这个文件是我们系统的核心文件,而当中的标准化和白化等都采用函数调用的方法来实现,所以主函数是比较简洁的。而调用的函数有mean_ica.m,white_ica.m,fpica.m,fastica.m。

4.3、仿真计划

前期我们准备的是对信号的混合,然后将混合后的信号输出来测试我们的混合效果如何。

中期就是对混合后的信号进行标准化和白化然后再用FastICA算法对其处理,输出解混后的信号。但是在这其中我们遇到了迭代一直循环不出去的情况,就是我们的预处理过的信号一直不收敛。因此在这里用了很长一段时间来解决。最后发现是我们的信号问题,信号如果是没有混合的信号,那么它将不会收敛,而混合后的信号才会收敛。

最后是对程序进行优化和排错。在我们测试的时候就发现,如果我们的音频信号的输入是三维的话,那么信号的混合就会很难得到我们想要的效果,因此会影响到混合那一步的执行,每次到这一步程序都会死掉。所以我们这个程序是有局限性的,那就是对一维的音频信号是可以比较好的实现混合和再解混,然而对多维的信号则会出现程序死掉BUG。这个BUG我们还在讨论解决中。

5、评价标准选择

标准一:直接通过对比分离前后的信号图形,图形越接近则分离效果越好。

标准二:通过设置不同的收敛标准。

当epsilon=1e-4时所得出的分离结果

图3 当epsilon=1e-5时所得出的分离结果

图4 当epsilon=1e-9时所得出的分离结果

图5

由上图可知,当收敛越小的时候(如图2和3),分离结果就越好。同时我们发现,当收敛标准越高的时候,迭代次数会增加,即程序的运算量会加大,所以我们最终将收敛标准定为epsilon=1e-5。

7、阶段成果

7.1、中心化程序

function [newVectors,meanValue] = mean_ica(vectors) (见附录)

%该函数实现信号的中心化

7.2、白化程序

function [newVectors, whiteningMatrix,dewhiteningMatrix] = white_ica

(vectors,s_verbose) (见附录)

%该函数实现对信号的白化并返回白化矩阵

7.3、固定点的ICA算法程序

function [A, W] = fpica(X, whiteningMatrix, dewhiteningMatrix, numOfIC, epsilon, maxNumIterations) (见附录)

%该函数主要实现固定点的fastICA算法迭代

%输出估计矩阵A及其逆阵W.

7.4、仿真图

参考文献

[1]杨福生,洪波著.独立分量分析的原理与应用,清华大学出版社,2006,北京

[2]独立分量分析=Independent component analysis海韦里恩,hai wei

lienA.;Hyvarinen,;Karhumen,Juha;Oja,,Erkki;周宗潭zhou zong tan;董国华dong guo hua;徐昕xu xin,电子工业出版社,2007,北京

[3] 马建仓、牛弈龙、陈海洋编.盲信号处理[M].北京:国防工业出版社,2006.90-92.

[4] 胡昌华,周涛.基于MATLAB的系统分析与设计-时频分析[M].西安:西安电子科技大学出版社,2002.

[5] 谭丽丽.语音信号盲分离算法的研究.博士学位论文,华南理工大学,2001.

[6]https://www.sodocs.net/doc/fa16298699.html,/link?url=ygq3GC5X5x38PUMvOYz6sEvh12KM9ZDJHabYO-

cpLHR1D6XvTpDzigKBNw7V0PBbvRB1i-mDEGjgzOPBUoUdPAgn1R4LXhtf_jK5dKmVidW&qq-pf-

to=pcqq.c2c

[7] 曹慧荣,马莉电子学报:基于快速ICA算法的混合图象分离.

[8]https://www.sodocs.net/doc/fa16298699.html,/link?url=lraOYEsl1sLVTZODKroTB6PGbXSdwJAVhMvj6oAI1OtuyC7xpd3tSH z2MiAamBoBByF7bhNSHx6GuKmwF_6ojWvkMK0uip9SxeRV4q3ihQm

[9]https://www.sodocs.net/doc/fa16298699.html,/s/blog_6218d35501013b75.html

附录

主程序(main_ica.m)部分

clc;clear all;close all;

% 读入声音文件

I1=wavread ('dragen.wav')';

[y1,fs1,nbits1]=wavread ('dragen.wav');

I2=wavread ('man.wav')';

[y2,fs2,nbits2]=wavread ('man.wav');

I3=wavread ('music.wav')';

[y3,fs3,nbits3]=wavread ('music.wav');

% 将声音组成混合矩阵

S=[I1;I2;I3];

Sweight=rand(size(S,1)); % 取一随机矩阵,作为信号混合的权矩阵MixedS=Sweight*S;

%写出混合声音文件

wavwrite(MixedS(1,:),fs1,nbits1,'MixS1_');

wavwrite(MixedS(2,:),fs2,nbits2,'MixS2_');

wavwrite(MixedS(3,:),fs3,nbits3,'MixS3_');

% 调用函数,实现ica分离

[icasig] = fastica(MixedS);

% 写出解混声音

wavwrite(icasig(1,:),fs1,nbits1,'ica1_');

wavwrite(icasig(2,:),fs2,nbits2,'ica2_');

wavwrite(icasig(3,:),fs3,nbits3,'ica3_');

主程序(main_ica_fig.m)部分

%信号产生程序

clear all;clc;

N=200;n=1:N;%N为采样点数

I1=2*sin(0.02*pi*n);%正弦信号

t=1:N;I2=2*square(100*t,50);%方波信号

a=linspace(1,-1,25);I3=2*[a,a,a,a,a,a,a,a];%锯齿信号

% 将声音组成混合矩阵

S=[I1;I2;I3];

Sweight=rand(size(S,1)); % 取一随机矩阵,作为信号混合的权矩阵MixedS=Sweight*S;

%源信号波形图

figure(1);

subplot(3,3,1);plot(I1);axis([0 N -5,5]);title('源信号');

subplot(3,3,2);plot(I2);axis([0 N -5,5]);

subplot(3,3,3);plot(I3);axis([0 N -5,5]);xlabel('Time/ms');

%观测信号波形图

subplot(3,3,4);plot(MixedS(1,:));title('观测(混合)信号'); subplot(3,3,5);plot(MixedS(2,:));

subplot(3,3,6);plot(MixedS(3,:));xlabel('Time/ms');

% 调用函数,实现ica分离

[icasig] = fastica(MixedS);

%解混信号波形图

subplot(3,3,7);plot(icasig(1,:));title('解混信号');

subplot(3,3,8);plot(icasig(2,:));

subplot(3,3,9);plot(icasig(3,:));xlabel('Time/ms');

函数调用(fastica.m)部分

function [Out1 Out2 Out3] = fastica(mixedsig)

%该函数主要通过函数调用实现ICA算法流程

%其中调用了中心化和白化函数实现ICA预处理

%以及调用了ICA迭代函数

%判断输入参数的规范性

if nargin == 0,

error ('请输入信号.');

end

if ~isa (mixedsig, 'double')

fprintf ('输入信号数据类型错误(double).\n');

mixedsig = double (mixedsig);

end

%调用函数,实现中心化

[mixedsig,mixedmean] = mean_ica(mixedsig);

%调用函数,实现白化

verbose = 'on';

[whitesig, whiteningMatrix,dewhiteningMatrix] = white_ica ... (mixedsig,verbose);

%------调用函数,实现ica迭代------

X=whitesig;

[vectorSize, numSamples] = size(X);

numOfIC = vectorSize; %分量个数

%epsilon = 0.0001; %收敛标准

epsilon = 1e-5; %收敛标准

maxNumIterations = 1000; %最大迭代次数

[A, W] = fpica (whitesig, whiteningMatrix, dewhiteningMatrix, ... numOfIC, epsilon, maxNumIterations);

icasig=W*mixedsig+(W*mixedmean)*ones(1,numSamples); Out1 = icasig;

Out2 = A;

Out3 = W;

中心化部分

function [newVectors,meanValue] = mean_ica(vectors)

%该函数实现信号的中心化

newVectors = zeros (size (vectors));

meanValue = mean (vectors')'; %计算各信号均值

newVectors = vectors - meanValue * ones (1,size (vectors, 2)); %中心化

白化部分

function [newVectors, whiteningMatrix,dewhiteningMatrix] = white_ica ... (vectors,s_verbose)

%该函数实现对信号的白化并返回白化矩阵

%参数s_verbose(on,off)供用户检测信号白化的效果

%初始化参数s_verbose

if nargin < 2, s_verbose = 'on'; end

switch lower(s_verbose)

case 'on'

b_verbose = 1;

case 'off'

b_verbose = 0;

end

covarianceMatrix = cov(vectors',1); %计算协方差矩阵

[E, D] = eig(covarianceMatrix); %计算协方差阵的特征值和特征向量whiteningMatrix = inv(sqrt (D)) * E'; %白化矩阵

newVectors = whiteningMatrix * vectors; %白化

dewhiteningMatrix = E * sqrt (D); %反白化矩阵

%检测白化后的信号的正交化程度

if b_verbose

fprintf ('白化信号的协方差阵与单位阵的逼近程度 [ %g ].\n', ...

max (max (abs (cov (newVectors', 1) - eye (size (newVectors, 1)))))); end

ica迭代算法部分

function [A, W] = fpica(X, whiteningMatrix, dewhiteningMatrix, ...

numOfIC, epsilon, maxNumIterations)

%该函数主要实现固定点的fastICA算法迭代

%输出估计矩阵A及其逆阵W.

% whitesig(白化信号)whiteningMatrix(白化矩阵)

%dewhiteningMatrix(反白化矩阵)均可由白化函数求得

%判断输入的参数数量

if nargin < 3, error('输入参数不足!'); end

[vectorSize, numSamples] = size(X);

if ~isreal(X)

error('输入信号不能为复数.');

end

%初始化寄存矩阵B

B = zeros(vectorSize);

round = 1;

%设置合理迭代范围内不收敛的标志

numFailures = 0;

failureLimit=vectorSize;

%ICA外层循环

while round <= numOfIC,

% 显示循环的进程...

fprintf('ICA %d ', round);

%随机设置初始权矢量,并对其标准化

w = randn (vectorSize, 1);

w = w - B * B' * w;

w = w / norm(w);

wOld = zeros(size(w));%寄存前次迭代结果

% 固定点fastICA迭代算法

i = 1;

while i <= maxNumIterations + 1

w = w - B * B' * w;

w = w / norm(w);

if i == maxNumIterations + 1 %循环结束处理

fprintf('\n分量 %d 在第 %d 次迭代中不收敛.\n', round, maxNumIterations); round = round - 1;

numFailures = numFailures + 1;

if numFailures > failureLimit

fprintf('各分量(%d)迭代结果均不收敛. 分离失败!.\n', numFailures);

if round == 0

A=[];

W=[];

end

return;

end

% 各分量迭代均不收敛,则跳出循环

break;

end

% 显示循环的进程...

fprintf('.'),

%若收敛,则...

if norm(w - wOld) < epsilon | norm(w + wOld) < epsilon

numFailures = 0;

% 保存所得向量w

B(:, round) = w;

% 计算估计矩阵

A(:,round) = dewhiteningMatrix * w;

W(round,:) = w' * whiteningMatrix;

% 显示循环的进程...

fprintf('迭代 %d 次 \n', i);

break;

end

wOld = w;

w = (X * ((X' * w) .^ 3)) / numSamples - 3 * w; % 标准化 w.

w = w / norm(w);

i = i + 1;

end

round = round + 1;

end

fprintf('完成!\n');

% 若结果为复数,则只保留实部

if ~isreal(A)

fprintf('结果为复数,只保留实部\n');

A = real(A);

W = real(W);

end

语音信号的盲分离

课程设计任务书 学生:专业班级:通信1103 指导教师:许建霞工作单位:信息学院 题目: 语音信号的盲分离 初始条件:Matlab软件、PC机 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计任务 根据盲信号分离原理,用matlab采集两路以上的语音信号,选择合适的混合矩阵生成若干混合信号。选取合适的盲信号分离算法(如独立成分分析ICA等)进行训练学习,求出分离矩阵和分离后的语音信号。 设计要求 (1) 用matlab做出采样之后语音信号的时域和频域波形图 (2) 选择合适的混合矩阵,得到混合信号,并做出其时域波形和频谱图 (3) 采用混合声音信号进行训练学习,求出分离矩阵,编写出相应的确matlab代码。 (4) 用求出的分离矩阵从混合信号中分离出原语音信号,并画出各分离信号的时域波形和频谱图。 (5) 对结果进行对比分析。 时间安排:

指导教师签名:2014年 6 月10 日 系主任(或责任教师)签名:2014 年 6 月10 日 摘要 盲信号处理(Blind Signal Processing,BSP)是指从观测到的混合信号中,在没有任何先验条件的情况下,恢复出未知的源信号过程。盲信号分离已成为信号处理学界和通信工程学界共同感兴趣的一个极富挑战性的研究热点问题,并获得了迅速的发展。 盲分离根据信号源的不同可以分为确定信号盲分离、语音信号盲分离和图像盲分离等,本设计主要讨论语音信号的盲分离。 语音信号的盲分离主要是利用盲源分离(Blind Signal Separation,BSS)技术对麦克风检测到的一段语音信号进行处理,本文重点研究了以语音信号为背景的盲处理方法,在语音和听觉信号处理领域中,如何从混有噪声的的混叠语音信号中分离出各个语音源信号,来模仿人类的语音分离能力,成为一个重要的研究问题。根据盲信号分离原理,本设计用matlab采集3路语音信号,选择合适的混合矩阵生成若干混合信号。 具体实现主要结合独立分量分析ICA技术,选取混合矩阵对3个语音信号进行混合,并从混合信号中分离出原语音信号,最后画出各分离信号的时域波形和频谱图和原来的信号进行比较。此外还运用PCA算法进行了混合语音信号的分离实现,最终对两种算法进行比较。 关键字:盲信号处理;语音信号;盲源分离BSS;独立分量分析ICA技术

基于ICA的语音分离技术.

通信工程课程设计文档 基于ICA的语音分离技术 本项目主要研究的是低噪声环境下基于ICA的语音分离技术。大致可以将我们的项目分为以下几个内容: 1、语音信号的输入; 2、语音信号的混合处理; 3、混合信号的中心化; 4、混合信号的白化; 5、FASTICA算法; 6、解混输出。 我们希望得到的最终结果是,将我们的输入的三个信号在经过混合和解混后以尽可能小的失真还原出来。 项目成员: 提交日期: 指导教师:

1、项目总结 1.1、设计动机 语音助手是一类可以通过语音交互来实现或替代部分我们在手机上的查询与操作的应用,通过此类应用,可以大大提高在不同场景下操作手机的便利性。现在的语音助手发展已经到了一个很高的位置,其中具有代表性三大语音助手是苹果公司的Siri语音助手、微软公司的Cortana和谷歌的Google Now。这些软件现在已经是在我们生活当中使用了,而语音助手中最重要的一环就是对用户输入的语音信号的识别。语音信号的采集比较简单,但是对语音信号的处理就是一项比较复杂的工作了。 语音信号处理是一门语音学和数字信号处理两个学科相结合的产物。它和认知学、心理学、语言学、计算机科学、模式识别和人工智能等学科有着紧密的联系。语音信号处理的发展依赖于这些学科的发展,而语音信号处理技术的进步也会促进这些领域的进步。 语音信号处理的目的就是要得到某些语音特征参数以便高效地传输或储存;或者是通过某种处理运算以达到某种用途的要求,例如人工合成语音、辨识出讲话者、识别出讲话的内容、进行语音控制等等。 1.2、问题分析 语音信号分离处理就是利用盲源分离(Blind Source Separation,BSS)技术对麦克风检测到的一段语音信号进行处理。混合语音信号的分离是盲分离的重要内容,目前的混叠语音分离大多是建立在低噪声环境中的混叠情形下,以BSS为主,根据信号的统计特性从几个观测信号中恢复出未知的独立源成分。 盲信号分离问题是信号处理中一个传统而又极具挑战性的课题。BSS是指仅从观测的混合信号(通常是多个传感器的输出)中恢复独立的源信号,这里的“盲”是指: (1) 源信号是不可观测的; (2) 混合系统是事先未知的。 本项目主要是基于独立分量分析(Independent component analysis,ICA)技术的盲源分离。基本思路是以非高斯信号为研究对象,在独立性假设的前提下,对多路观测信号进行盲源分离。在满足一定的条件下,能够从多路观测信号中,较好地分离出隐含的独立源信号。

语音信号盲分离测试工具

基于Tcl/Tk 与C 的语音信号盲分离测试工具 马骏 西安市地下铁道有限责任公司 西安 710018 摘要:如何分离多说话人环境下麦克风所采集的混合语音信号是盲源分离研究的一个重要课题。文章采用TCL/TK 与C 语言混合编程,自主开发了用于语音信号盲分离测试的工具,并介绍了该工具的结构、界面和功能。最后通过试验验证了该工具的正确性。 关键词:盲源分离 语音信号 Tcl/Tk A Tcl/Tk & C-based testing tool for blind separation of audio signals Ma Jun Xi'an Metro Co., Ltd. Xi'an 710018 Abstract: Separating independent signal from audio mixtures is one of the elementary problems in Blind Source Separation (BSS) research. The interface between Tcl/Tk is explained, and a testing tool for blind separation of audio signals is developed. The structure, interface and function of the tool are introduced. The validity of the tool is proved by experiment. Keywords :Blind source separation Audio signals Tcl/Tk 1.引言 盲源分离(BSS )[1,2,3,4]是人工神经网络与统计信号处理以及信息论相结合的产物,而混 合语音信号的盲分离是该领域的一个重要课题。使计算机具有和人类一样的听觉,是计算机智能领域研究者们的梦想。语音识别技术为我们实现计算机听觉的这一目标提供了有效的途径,使得计算机能听懂我们人类的语言,计算机操作从此变得更互动和简单自然,方便了人机的交流。混合语音信号盲分离虽然不能实现计算机听觉这一目标,但是通过该技术却能使原本相互混叠的语音信号相互剥离,来作为语音识别的预处理,从而使得噪声环境下和多说话人情形下的语音识别的实现成为可能,增大了识别算法的鲁棒性和适应能力,从这种意义上来讲该问题的研究具有很大的现实意义。 本文首先阐述了盲源分离的基本理论知识以及Tcl/Tk [5]与C 语言的接口编程,然后采用 分层软件模型开发了用于语音信号盲分离的测试工具,其外壳选择灵活的事件驱动脚本Tcl/Tk 作为基本的界面开发平台,完成配置、控制任务;而其低层的BSS 核心算法库则利用高效的编译型C 语言实现。另外为了完成语音信号的读写等操作还参考了snack [6]语音处理库及其源代码。文章介绍了该工具的结构、界面和功能,最后通过实验验证了该测试工具的正确性。 2.盲源分离模型及算法 设由N 个未知的统计独立的信号源)(t s i 构成了一个列向量,)](),...,([)(1T N t s t s t S =其中t 是离散采样时刻。设A 是一个未知的N M ?维矩阵,通常称为混合矩阵。设[]T M t x t x t X )(),...,()(1=是由M 个传感器观测到混合信号)(t x i 构成的列向量,且满足下列方程: )()((t)t V t AS X += (1) 其中T M 1t ,...,v t v t V )]()([)(=是由M 个空间白化、统计独立噪声信号(t)i v 构成的列向量。盲源分 离的命题是,对任何t ,根据观测到的)(t X ,在A 未知的条件下求)(t S 。 图1给出了语音信号盲分离算法框架图。

智能麦克风阵列语音分离和说话人跟踪技术研究_杜江

智能麦克风阵列语音分离和说话人跟踪技术研究 杜 江1,朱 柯2 (1 电子科技大学通信学院,四川成都610054;2 韩国三星电子数字媒体技术研究所) 摘 要: 本文介绍一种新的基于麦克风阵列的语音分离和说话人跟踪技术.该技术使用麦克风阵列,形成一个指向感兴趣说话人的波束来增强信号,并通过方向置零来抑制其他说话人的声音和噪声,同时用自适应算法跟踪说话人的方位变化.仿真验证了该技术的有效性.与常规的自适应算法相比,该算法不需训练序列,具有显著的优势. 关键词: 麦克风阵列;语音分离;说话人跟踪;波束形成 中图分类号: TN912 文献标识码: A 文章编号: 0372 2112(2005)02 0382 03 Smart M icrophone Arrays for Speech Sources Separa tion and Speaker Tracking DU Jiang 1 ,ZHU Ke 2 (1.Institute o f Communication and In f o rmation Engine ering ,U ESTC ,Chengdu,Sic huan 610054,China ;2.Conne ctivity L ab,R &D Cente r ,Digital Me dia ,Samsung Elect roncs Co.Lt d.Korea) Abstract: A new speech sources separation and speaker tracking technique is introduced based on microphone arrays.By means of spatial property of the received speech signals from microphone arrays,thi s method utilizes beamforming to estimate the DOA of the speaker of interest,and attenuates un wan ted voices by nulling other directions.Considering the speech environments where the speaker may freely move and the background voices ex is t,an adaptive al gorithm is used to track the movements and the source direc tion variations au https://www.sodocs.net/doc/fa16298699.html,pu ter si mulations validate the effectiveness of the https://www.sodocs.net/doc/fa16298699.html,pared with the conventional meth ods,the scheme needs no training sequence,and have great p otential practical advantages. Key words: microphone arrays;speech separation;speaker tracking;beamforming 1 引言 选择性增强感兴趣的语音信号并同时压制噪声和干扰有 相当重要的实用价值[1].涉及到的关键技术之一是信源分离,即在多个混合声音信号中,选择并放大某个或几个声源.但是,在嘈杂的背景下,由于各种声音混迭和说话人位置改变,用常规的时频域处理技术几乎不可能有效的跟踪和分离出感兴趣的声音.基于上述事实,本文利用麦克风阵列对接收的信号进行空时处理,介绍的算法在空域为线性的,在时域为非线性,利用空间信号的位置和每个声源的独立不相关统计特性提取和跟踪感兴趣的说话人的声音[2,3].本技术主要包括以下几个方面:(1)使用改进的MUSIC 算法,实现麦克风阵列接收范围的信源数目和方位;(2)介绍了一种基于神经网络的自适应盲源分离算法,它是对文献[2,4]的信源分离方法的改进.该算法用神经网络作为信号分离的约束条件,构成一个最优化盲算法准则.它能自适应语音通信环境,使分离的信号保持统计独立条件下的最优;(3)对空间分离后的每路语音在时频域采用谱抵消技术进一步抑制噪声[5]. 2 麦克风阵列的近场声音传播模型 当信源离阵列很近时,麦克风阵列处理必须采用更精确的球面波前模型,要考虑声波波前在传播过程中发生的幅度 衰减,其衰减因子与传播距离呈反比[6].对于一个长度为L 的阵列,如果信源与阵列的距离r <2L 2/ , 为声波的波长,则该信源位于近场之内 . 如图1定义一个参考麦克风作为三维向量空间的原点.设位于(r s , s , s )的信源S 的空间位置向量为P s .其中,r s 为信源与参考麦克风的距离, s 和 s 分别表示信源的方位角和仰角.在该坐标系中,同样定义麦克风的空间位置向量p i (i =1,2, ,N ).从信源S 到第i 个麦克风的欧氏距离为:d t = p s -p i , 这种麦克风阵元的距离差使每个麦克风的接收的信号产生幅度相位差.在有N 个麦克风,M 个信源的阵列中,第i 个麦克风的接收信号为: x i (t)= N k =1 a (r k , k , k )s k (t)+ n i (t)(1) 式中,s i (t )为信号,n i (t )为加性噪声,a (r k , k , k )= [ 1e -j 2 f 1 , , M e -j 2 f M ]T 是阵列响应向量, k =d 1/d k 为幅 度衰减因子.式(1)表示为矩阵形式: 收稿日期:2003 10 16;修回日期:2004 10 16 第2期2005年2月电 子 学 报ACTA ELECTRONICA SINICA Vol.33 No.2 Feb. 2005

语音信号的盲分离分析

目录 摘要.................................................................... I ABSTRACT ............................................................... II 第一章前言.. (2) 1.1语音特性分析 (2) 1.2语音信号的基本特征 (2) 1.3语音信号处理的理论基础 (2) 第二章盲分离的基本概念 (2) 2.1盲分离的数学模型 (2) 2.2盲源分离的基本方法 (2) 2.3盲分离的目标准则 (2) 2.4盲分离的研究领域 (2) 2.5盲分离的研究内容 (2) 第三章独立分量分析的基本算法 (2) 3.1ICA的线性模型 (2) 3.2ICA研究中的主要问题及限制条件 (2) 3.3ICA的基本算法 (2) 3.4F AST ICA算法原理 (2) 第四章语音信号盲分离仿真及分析 (2) 4.1ICA算法实现 (2) 4.2频谱分析 (2) 第五章总结 (2) 参考文献 (2)

摘要 盲源分离(BSS)是一种多维信号处理方法,它指在未知源信号以及混合模型也未知的情况下,仅从观测信号中恢复出源信号各个独立分量的过程。盲源分离已近成为现代信号处理领域研究的热点问题,在通信、语音处理、图像处理等领域具有非常重要的理论意义和广泛的应用价值。本文主要内容如下: 首先,介绍了语音信号的产生机理,特性,基本特征及语音信号处理的理论基础,为后文语音信号盲分离奠定了基础。 其次,从盲源分离的理论出发,研究了盲分离的数学模型以及基本方法,并对盲分离的目标准则、研究领域以及研究内容进行了探讨。 然后,引出了独立分量分析(ICA),并对其的概念以及相关的知识进行了研究,探讨了ICA研究中的主要问题,列出了ICA的3种基本算法:信息极大化、负熵最大化和最大似然估计法。 最后,用FastICA对三路语音信号进行了盲分离的仿真并求出了混合矩阵和分解矩阵,再接着进行了频谱,幅度,相位的分析,找出了FastICA的特点。 关键词:盲源分离;独立分量分析;频谱分析 III

语音信号的盲分离(毛丽娟)

课程设计任务书 学生姓名:毛丽娟专业班级:通信0906 指导教师:黄铮工作单位:信息工程学院 题目: 语音信号的盲分离 初始条件 ①matlab软件 ②盲信号处理知识 要求完成的主要任务: 根据盲信号分离原理,用matlab采集两路以上的语音信号,选择合适的混合矩阵生成若干混合信号。选取合适的盲信号分离算法(如独立成分分析ICA等)进行训练学习,求出分离矩阵和分离后的语音信号。 设计要求 (1)用matlab做出采样之后语音信号的时域和频域波形图 (2)选择合适的混合矩阵,得到混合信号,并做出其时域波形和频谱图 (3)采用混合声音信号进行训练学习,求出分离矩阵,编写出相应的确matlab 代码。 (4)用求出的分离矩阵从混合信号中分离出原语音信号,并画出各分离信号的时域波形和频谱图。 (5)对结果进行对比分析。 时间安排 第17周,仿真设计 第18周,完成(答辩,提交报告,演示) 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要 (3) Abstract (4) 1 语音信号 (5) 1.1 语音特性分析 (5) 1.2 语音信号的基本特征 (6) 2 盲信号处理 (8) 2.1 盲信号处理的概述 (8) 2.1.1 盲信号处理的基本概念 (8) 2.1.2 盲信号处理的方法和分类 (9) 2.1.3 盲信号处理技术的研究应用 (9) 2.2 盲源分离法 (10) 2.2.1 盲源分离技术 (10) 2.2.2 盲分离算法实现 (10) 2.3 独立成分分析 (11) 2.3.1 独立成分分析的定义 (11) 2.3.2 ICA的基本原理 (13) 3 语音信号盲分离的实现 (15) 3.1 盲信号分离的三种算法 (15) 3.1.1 二阶盲辨识(SOBI) (15) 3.1.2 FastICA算法 (15) 3.1.3 CICA算法 (16) 3.2 不同算法的分离性能比较 (17) 3.3 FastlCA的算法仿真及结果分析 (17) 4 结论 (22) 5 参考文献 (23) 附录 (24)

语音信号的盲分离(知识分析)

课程设计任务书 学生姓名:专业班级:通信1103 指导教师:许建霞工作单位:信息学院 题目: 语音信号的盲分离 初始条件:Matlab软件、PC机 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)设计任务 根据盲信号分离原理,用matlab采集两路以上的语音信号,选择合适的混合矩阵生成若干混合信号。选取合适的盲信号分离算法(如独立成分分析ICA等)进行训练学习,求出分离矩阵和分离后的语音信号。 设计要求 (1) 用matlab做出采样之后语音信号的时域和频域波形图 (2)选择合适的混合矩阵,得到混合信号,并做出其时域波形和频谱图 (3) 采用混合声音信号进行训练学习,求出分离矩阵,编写出相应的确matlab代码。 (4) 用求出的分离矩阵从混合信号中分离出原语音信号,并画出各分离信号的时域波形和频谱图。 (5) 对结果进行对比分析。 时间安排: 序号设计内容 所用 时间 1 根据课题的技术指标,确定整体方案,并进行参数设计计算2天 2 根据实验条件进行全部或部分程序的编写与调试,并完成基本功能7天 3 总结编写课程设计报告1天 合计2周指导教师签名: 2014年 6 月 10 日系主任(或责任教师)签名:2014 年 6 月 10 日

摘要 盲信号处理(Blind Signal Processing,BSP)是指从观测到的混合信号中,在没有任何先验条件的情况下,恢复出未知的源信号过程。盲信号分离已成为信号处理学界和通信工程学界共同感兴趣的一个极富挑战性的研究热点问题,并获得了迅速的发展。 盲分离根据信号源的不同可以分为确定信号盲分离、语音信号盲分离和图像盲分离等,本设计主要讨论语音信号的盲分离。 语音信号的盲分离主要是利用盲源分离(Blind Signal Separation,BSS)技术对麦克风检测到的一段语音信号进行处理,本文重点研究了以语音信号为背景的盲处理方法,在语音和听觉信号处理领域中,如何从混有噪声的的混叠语音信号中分离出各个语音源信号,来模仿人类的语音分离能力,成为一个重要的研究问题。根据盲信号分离原理,本设计用matlab采集3路语音信号,选择合适的混合矩阵生成若干混合信号。 具体实现主要结合独立分量分析ICA技术,选取混合矩阵对3个语音信号进行混合,并从混合信号中分离出原语音信号,最后画出各分离信号的时域波形和频谱图和原来的信号进行比较。此外还运用PCA算法进行了混合语音信号的分离实现,最终对两种算法进行比较。 关键字:盲信号处理;语音信号;盲源分离BSS;独立分量分析ICA技术

语音信号的盲分离毕业设计

目录 Abstract (5) 1 语音信号 (6) 1.1 语音特性分析 (6) 1.2 语音信号的基本特征 (7) 2 盲信号处理 (9) 2.1 盲信号处理的概述 (9) 2.2 盲源分离法 (11) 2.3 独立成分分析 (12) 3 语音信号盲分离的实现 (16) 3.1 盲信号分离的三种算法 (16) 3.2 不同算法的分离性能比较 (18) 3.3 FastlCA的算法仿真及结果分析 (18) 4 结论 (23) 5 参考文献 (24) 附录 (25) 本科生课程设计成绩评定表 (29) 指导教师签字: (29) 年月日 (29)

程设计任务书 题目: 语音信号的盲分离 初始条件 ①matlab软件 ②盲信号处理知识 要求完成的主要任务: 根据盲信号分离原理,用matlab采集两路以上的语音信号,选择合适的混合矩阵生成若干混合信号。选取合适的盲信号分离算法(如独立成分分析ICA等)进行训练学习,求出分离矩阵和分离后的语音信号。 设计要求 (1)用matlab做出采样之后语音信号的时域和频域波形图 (2)选择合适的混合矩阵,得到混合信号,并做出其时域波形和频谱图 (3)采用混合声音信号进行训练学习,求出分离矩阵,编写出相应的确matlab 代码。 (4)用求出的分离矩阵从混合信号中分离出原语音信号,并画出各分离信号的时域波形和频谱图。 (5)对结果进行对比分析。 时间安排 第17周,仿真设计 第18周,完成(答辩,提交报告,演示) 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要 (4) Abstract (5) 1 语音信号 (6) 1.1 语音特性分析 (6) 1.2 语音信号的基本特征 (7) 2 盲信号处理 (9) 2.1 盲信号处理的概述 (9) 2.1.1 盲信号处理的基本概念 (9) 2.1.2 盲信号处理的方法和分类 (10) 2.1.3 盲信号处理技术的研究应用 (10) 2.2 盲源分离法 (11) 2.2.1 盲源分离技术 (11) 2.2.2 盲分离算法实现 (11) 2.3 独立成分分析 (12) 2.3.1 独立成分分析的定义 (12) 2.3.2 ICA的基本原理 (14) 3 语音信号盲分离的实现 (16) 3.1 盲信号分离的三种算法 (16) 3.1.1 二阶盲辨识(SOBI) (16) 3.1.2 FastICA算法 (16) 3.1.3 CICA算法 (17) 3.2 不同算法的分离性能比较 (18) 3.3 FastlCA的算法仿真及结果分析 (18) 4 结论 (23) 5 参考文献 (24) 附录 (25)

相关主题