基本谱减法进行语音增强的matlab程序求注释

我这边有一个用基本谱减法进行语音增强的matlab程序,有哪位好心人帮我注释一下啊,我是matlab菜鸟,这个毕业设计要用,谢谢。%基本减谱法clear;%[xx,fs]... 我这边有一个用基本谱减法进行语音增强的matlab程序,有哪位好心人帮我注释一下啊,我是matlab菜鸟,这个毕业设计要用,谢谢。
%基本减谱法
clear;
%[xx,fs]=wavread('E:\mywhisper\shu.wav');
%[xx,fs]=wavread('E:\speech\x\w1xun_01.wav');
%[xx,fs]=wavread('E:\speech\耳语音切割\b\w1ba_5');
[xx,fs]=wavread('D:\yuan');% 读取音频文件yuan
[team,row]=size(xx);
if row==2
x=(xx(:,1)+xx(:,2))/2;
yy=x;
else
x=xx;
yy=x;
end
x=x-mean(x)+0.1*rand(length(x),1);
N=length(x);
n=220;
n1=160;
frame=floor((N-n)/(n-n1));
%frame=floor(N/n);
for i=1:frame
y1=x((i-1)*(n-n1)+1:(i-1)*(n-n1)+n).*hamming(n);
fy=fft(y1,n);
nen(i,:)=abs(fy).^2;
ang(i,:)=angle(fy);
end
yuzhi=sum(sum(nen(2:5,:)))/(4*n);
for i=1:frame
nen(i,:)=nen(i,:)-yuzhi;
nen(i,find(nen(i,:)<0))=0;
%chuli=nen(i,1:n/2);
%chuli=chuli-yuzhi;
%chuli(find(chuli<0))=0;
%nen(i,:)=[chuli,fliplr(chuli)];
% nen(i,:)=filter(1,[0.5 0.5],nen(i,:));
% nen(i,find(nen(i,:)<0))=0;
end
for i=1:frame
nen(i,:)=sqrt(nen(i,:));
jie=nen(i,:).*exp(j*ang(i,:));
out(i,:)=real(ifft(jie))./hamming(n)'; %取滤波后信号的实部
end
zong=out(1,:)';
jiewei=n;
for i=2:frame
zong(jiewei-n1+1:jiewei)
=(zong(jiewei-n1+1:jiewei)+out(i,1:n1)')/2;
jiewei=jiewei+n-n1;
zong=[zong;out(i,n1+1:end)'];
end
%zong=out(1,:)';
%for i=2:frame
%zong=[zong;out(i,:)'];
%end
%
%for i=1:frame
% zong=[zong,nen(i,:)'];
% zong(i*(n-n1)+1:(i-1)*(n-n1)+n)
=zong(i*(n-n1)+1:(i-1)*(n-n1)+n)/2;
figure(1);
subplot(211);
plot(x);
axis([1,(n-n1)*frame+n,min(x),max(x)]);
subplot(212);
specgram(x,fs,1024,n,n1);
figure(2);
subplot(211);
plot(zong);
axis([1,(n-n1)*frame+n,min(zong),max(zong)]);
subplot(212);
specgram(zong,fs,1024,n,n1);
wavplay(x,fs);
wavplay(zong,fs);
展开
 我来答
百度网友e48e271
2009-05-30
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
%基本减谱法
clear;
%[xx,fs]=wavread('E:\mywhisper\shu.wav');
%[xx,fs]=wavread('E:\speech\x\w1xun_01.wav');
%[xx,fs]=wavread('E:\speech\耳语音切割\b\w1ba_5');
[xx,fs]=wavread('D:\yuan.wav');% 读取音频文件yuan.wav,并返回采样数据给变量xx及采样率Fs
[team,row]=size(xx);%将数组xx的行数赋给team,列数赋给row
if row==2
x=(xx(:,1)+xx(:,2))/2;
yy=x;
%如果语音信号xx为2列,即信号为双声道,则将其转换成单声道信号,即取两列的平均值赋给x,并将x的值赋给yy
else
x=xx;
yy=x;
%若语音信号xx为单声道,则将xx的值赋给x,并将x的值赋给yy
end
x=x-mean(x)+0.1*rand(length(x),1
N=length(x);%将语音信号长度赋给变量N
n=220;%对语音信号进行分帧,帧长为220
n1=160;%帧移为160
frame=floor((N-n)/(n-n1));%将分帧数赋给变量frame
%frame=floor(N/n);
for i=1:frame
y1=x((i-1)*(n-n1)+1:(i-1)*(n-n1)+n).*hamming(n);
%对每段分帧进行加窗处理
fy=fft(y1,n);
nen(i,:)=abs(fy).^2;% 将频域信号功率赋给矩阵变量nen
ang(i,:)=angle(fy);%将频域信号的相位角赋给矩阵变量ang
end

yuzhi=sum(sum(nen(2:5,:)))/(4*n);
for i=1:frame
nen(i,:)=nen(i,:)-yuzhi;
nen(i,find(nen(i,:)<0))=0;
%chuli=nen(i,1:n/2);
%chuli=chuli-yuzhi;
%chuli(find(chuli<0))=0;
%nen(i,:)=[chuli,fliplr(chuli)];
% nen(i,:)=filter(1,[0.5 0.5],nen(i,:));
% nen(i,find(nen(i,:)<0))=0;
end
for i=1:frame
nen(i,:)=sqrt(nen(i,:));%将纯语音功率谱开根,得到频域值
jie=nen(i,:).*exp(j*ang(i,:));
out(i,:)=real(ifft(jie))/hamming(n)'; %对纯语音频谱进行逆傅里叶变换,并取其实部,并进行去窗处理
end
zong=out(1,:)';%将第一帧中未重叠部分记入数组zong
jiewei=n;
for i=2:frame
zong(jiewei-n1+1:jiewei)
=(zong(jiewei-n1+1:jiewei)+out(i,1:n1)')/2;
jiewei=jiewei+n-n1;% 使指针jiewei依次指向下一帧的帧尾
zong=[zong;out(i,n1+1:end)'];将从第二帧开始的每一帧中未重叠部分记入数组zong
end
%zong=out(1,:)';
%for i=2:frame
%zong=[zong;out(i,:)'];
%end
%
%for i=1:frame
% zong=[zong,nen(i,:)'];
% zong(i*(n-n1)+1:(i-1)*(n-n1)+n)
=zong(i*(n-n1)+1:(i-1)*(n-n1)+n)/2;
figure(1); %创建图1
subplot(211); %把图形窗口分成2*1个小窗口,取第1个小窗口
plot(x);%以数组x绘图基本二维曲线
axis([1,(n-n1)*frame+n,min(x),max(x)]);% 对当前二维图形对象的X轴和Y轴进行标定,x轴的范围为1到最后一个分帧结尾,y轴的范围为带噪语音时域最小值到最大值
subplot(212); %把图形窗口分成2*1个小窗口,取第2个小窗口
specgram(x,fs,1024,n,n1);%画出语音的语谱图
figure(2); %创建图2
subplot(211); %把图形窗口分成2*1个小窗口,取第1个小窗口
plot(zong); %以数组zong绘图基本二维曲线
axis([1,(n-n1)*frame+n,min(zong),max(zong)]); % 对当前二维图形对象的X轴和Y轴进行标定,x轴的范围为1到最后一个分帧结尾,y轴的范围为纯语音时域最小值到最大值
subplot(212); %把图形窗口分成2*1个小窗口,取第2个小窗口
specgram(zong,fs,1024,n,n1); %画出语音的语谱图
wavplay(x,fs);%播放单声道带噪语音音频
wavplay(zong,fs);%播放单声道纯净语音音频
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机原理及其应用是一门研究将计算机和数字电子技术应用于具体实践中的学科,主要包括单片机的结构、工作原理、指令系统、汇编语言程序设计、C语言程序设计、嵌入式系统及其开发环境、抗干扰技术、数模与模数转换技术、单片机应用系统的开发等内容。单片机... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式