?? bss_audio.m
字號:
%語音信號分離clc;clear;%EASI參數u=0.006;%RLS參數beta=0.99;%讀語音信號N=1:100000;%信號范圍[au1 F1 bits1]=wavread('audio1.wav');[au2 F2 bits2]=wavread('audio2.wav');S=[au1(N)';au2(N)'];A=[1 0.9;0.9 1];X=A*S;%畫源信號和混合信號figure;subplot(2,2,1);plot(N,S(1,N));title(strcat('source1'));subplot(2,2,2);plot(N,S(2,N));title(strcat('source2'));subplot(2,2,3);plot(N,X(1,N));title(strcat('Mix1'));subplot(2,2,4);plot(N,X(2,N));title(strcat('Mix2'));wavwrite(X(1,:),F1,bits1,'mix1.wav');wavwrite(X(2,:),F1,bits1,'mix2.wav');[We ECTe]=EASI(X,A,u);%EASI[Wr ECTr]=RLS(X,A,beta,0);%普通梯度RLS[Wrn ECTrn]=RLS(X,A,beta,1);%自然梯度RLS%恢復信號Ye=We*X;for ind=1:size(Ye,1) Ye(ind,:)=Ye(ind,:).*0.8./max(abs(Ye(ind,:)));endYr=Wr*X;for ind=1:size(Yr,1) Yr(ind,:)=Yr(ind,:).*0.8./max(abs(Yr(ind,:)));endYrn=Wrn*X;for ind=1:size(Yrn,1) Yrn(ind,:)=Yrn(ind,:).*0.8./max(abs(Yrn(ind,:)));end%輸出音頻結果wavwrite(Ye(1,:),F1,bits1,'EASI1.wav');wavwrite(Ye(2,:),F1,bits1,'EASI2.wav');wavwrite(Yr(1,:),F1,bits1,'RLS1.wav');wavwrite(Yr(2,:),F1,bits1,'RLS2.wav');wavwrite(Yrn(1,:),F1,bits1,'RLSN1.wav');wavwrite(Yrn(2,:),F1,bits1,'RLSN2.wav');%畫ECT曲線figure;plot(1:length(N),ECTe,'r',1:length(N),ECTr,'g',1:length(N),ECTrn,'b');legend('EASI(LMS)','普通梯度RLS','自然梯度RLS');ylabel('ECT');%分離效果比較 figure;for ind=1:2 subplot(4,2,ind); plot(N,S(ind,N)); title(strcat('source',num2str(ind)));endfor ind=1:2 subplot(4,2,ind+2); plot(N,Ye(ind,N)); title(strcat('EASI',num2str(ind)));endfor ind=1:2 subplot(4,2,ind+4); plot(N,Yr(ind,N)); title(strcat('RLS',num2str(ind)));endfor ind=1:2 subplot(4,2,ind+6); plot(N,Yrn(ind,N)); title(strcat('RLS_N',num2str(ind)));end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -