基于RLS算法的多麦克风降噪(保证正确) 下载本文

武汉理工大学《信息处理课群综合训练与设计》报告

附录 源程序

clc;

[source,fs,bits]=wavread('hen.wav'); noise=0.01*randn(length(source),1); source=source(:,1); source1=source+noise;

wavwrite(noise,fs,'RLSrefns'); %输出模拟噪声信号 wavwrite(source1,fs,'RLSprimsp'); %输出模拟主语音信号 primary=wavread('RLSprimsp.wav'); %读入麦克风语音信号 primary=primary';

fref=wavread('RLSrefns.wav'); fref=fref';

Worder=32; %滤波器阶数 Delta=0.001;

p=(1/Delta)*eye(Worder,Worder); w=zeros(Worder,1);

output=primary; %主语音输出 loopsize=max(size(primary));

for i=1+Worder:loopsize %写RLS算法公式 z=primary(i)-w'*(fref(i-Worder+1:i))'; n2=fref(i-Worder+1:i)'; k=p*n2; K=k/(1+n2'*k); w=w+K*z; p0=K*n2'; p=(p-p0*p); output(i-Worder)=z; end

%************************************************************************

figure; %作图

%************************************************************************

subplot(2,4,1);

24

武汉理工大学《信息处理课群综合训练与设计》报告

plot(source); %画出原始语音波形 title('原始语音波形');

[y1,Fs1,bits1]=wavread('hen.wav'); Y1=fft(y1,4096); subplot(2,4,5);

plot(abs(Y1)); %画出原始语音频谱 title('原始语音频谱');

%************************************************************************

subplot(2,4,2);

plot(primary); %画出麦克风主语音波形 title('麦克风主语音波形');

[y2,Fs2,bits2]=wavread('RLSprimsp.wav'); Y2=fft(y2,4096); subplot(2,4,6);

plot(abs(Y2)); %画出麦克风主语音频谱 title('麦克风主语音输入频谱');

%************************************************************************

subplot(2,4,3);

plot(fref); %画出噪声语音波形 title('噪声语音波形');

[y3,Fs3,bits3]=wavread('RLSrefns.wav'); Y3=fft(y3,4096); subplot(2,4,7);

plot(abs(Y3)); %画出噪声语音频谱 title('噪声输入频谱');

%************************************************************************

subplot(2,4,4);

plot(output); %画降噪后的语音波形 title('降噪后语音波形');

wavwrite(output,fs,'asd'); %生成降噪后的语音 [y,Fs4,bits4]=wavread('asd.wav'); Y=fft(y,4096);

25

武汉理工大学《信息处理课群综合训练与设计》报告

subplot(2,4,8);

plot(abs(Y)); %画出降噪后语音频谱 title('降噪后语音输出频谱');

%************************************************************************

f=1; while f==1

flag=input('请选择输出语音;1-原始语音 2-加噪主语音 3-噪声语音 4-降噪后语音 : ');

switch flag case 1

sound(source,fs,bits); case 2

sound(y2,Fs2,bits2); case 3

sound(y3,Fs3,bits3); case 4

sound(output,Fs4,bits4); end

f=input('是否重新选择? 是 输入1 否 输入0 :'); end

26

武汉理工大学《信息处理课群综合训练与设计》报告

本科生综合训练成绩评定表

姓 名 专业、班级 通信1201班 性 别 男 综合训练题目:基于RLS 算法的多麦克风降噪 综合训练答辩或质疑记录: 成绩评定依据: 最终评定成绩(以优、良、中、及格、不及格评定)

指导教师签字:

年 月 日