⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bss_audio.m

📁 盲信号分离(BSS)是指在对彼此独立的源信号混合过程及各源信号本身均未知的情况下
💻 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 + -