基于小波分析语音信号去噪MATLAB实现.pdfVIP

  • 2
  • 0
  • 约4.82千字
  • 约 6页
  • 2026-01-29 发布于北京
  • 举报

基于小波分析语音信号去噪MATLAB实现.pdf

小波去噪matlab程序

******************************************

clearclc%在噪声环境下语音

信号的增强%语音信号为读入

文%噪声为正态随机

噪声sound

wavread(c12345.wav);

count1length(sound);

noise=0.

05*randn(1,count1);fori=1:

count1signal(i)sound(i);

endfori=1:count1y(i)

signal(i)+noise(i);end

%在小波db3下进行一维离散小波变换[

oefscoefs2]dwt(y,db3);%[低频高频]

c1,

count2length(coefs1);

count3length(coefs2);

energy1sum((abs(coefs1)).^2);

energy2sum((abs(coefs2)).^2);

energy3energy1+energy2;

fori=1:count2recoefs1(i)

coefs1(i)/energy3;endfori

=1:count3recoefs2(i)

coefs2(i)/energy3;end

%低频系数用于语音信号的清浊音判

别zhen=160;count4

fix(count2/zhen);fori=1:count4n

=160*(i‑1)+1:160+160*(i‑1);s

sound(n);whamming(160);sw

s.*w;aaryule(sw,10);sw

filter(a,1,sw);

小波去噪matlab程序

******************************************

clear

clc

%在噪声环境下语音信号的增强

%语音信号为读入文件

%噪声为正态随机噪声

sound=wavread(c12345.wav);

count1=length(sound);

noise=0.05*randn(1,count1);

fori=1:count1

signal(i)=sound(i);

end

fori=1:count1

y(i)=signal(i)+noise(i);

end

%在小波基db3下进行一维离散小波变换

[coefs1,coefs2]=dwt(y,db3);%[低频高频]

count2=length(coefs1);

count3=length(coefs2);

energy1=sum((abs(coefs1)).^2);

energy2=sum((abs(coefs2)).^2);

energy3=energy1+energy2;

fori=1:count2

recoefs1(i)=coefs1(i)/energy3;

end

fori=1:count3

recoefs2(i)=coefs2(i)/energy3;

end

%低频系数进行语音信号清浊音的判别

zhen=160;

count4=fix(count2/zhen);

fori=1:count4

n=160*(i-1)+1:160+160*(i-1);

s=sound(n);

w=hamming(160);

sw=s.*w;

a=aryule(sw,10);

sw=filter(a,1,sw);

swsw/sum(sw);rxcorr(sw,biased);corrmax(r);%为清音(无声

音)时,输出为1;为浊音(有声音)时,输出为0ifcorr=0.8output1(i)

=0;elseifcorr=0.1output1(i)=1;endendfori=1:count4n=160

*(i‑1)+1:160+160*(i‑1);ifoutput1(i)1switchabs(recoefs1(i))

caseabs(recoefs1(i))=0.002re

文档评论(0)

1亿VIP精品文档

相关文档