关于matlab噪声消除的谱减法
clc,clear=wavread('E:\Matlab\bin\12.wav');%程序读入2.wav音频文件,并将文件频率和位数分别返还fs值和bits值y=x(1:4096,1);%截取原语音信号的前4096点生成新的语音信号,因为在该段没有有用语音信息,所以认为是噪声信号Y=fft(y); %噪声信号频谱magY=abs(Y);b=[];for i=0:126;n=4096;x1=x(1+n*i:n+n*i);X1=fft(x1); %含噪信号频谱magX=abs(X1);S=(magX.^2-magY.^2);S1=abs(S).^0.5;s1=ifft(S1); %相减后的幅值信息进行逆傅里叶变换a=s1';b=; %将每个增强后的语音连接起来endx2=b';plot(x2);sound(x2,fs,bits);wavwrite(x2,fs,'E:\Matlab\bin\13.wav');%将重新生成的增强后的语音信号以文件名3.wav保存在work文件夹下这个程序运行的错误是Index exceeds matrix dimensions.不知道该怎么修改,求指导
页:
[1]