基于DSP的语音分析系统(2)(8)

2019-02-15 13:08

短时能量

%调整能量门限

amp1=min(amp1,max(amp)/4); amp2=min(amp2,max(amp)/8);

%开始零点检测 x1=0; x2=0;

for n=1:length(zcr); goto=0; switch status

case{0,1} %静音=0,1开始

if amp(n)>amp1 %确信进入语音阶段 x1=max(n-count-1,1); status=2; silence=0; count=count+1;

elseif amp(n)>amp2|... %可能处在语音段 zcr(n)>zcr2 status=1; count=count+1; else %静音状态 status=0; count=0; end

case 2, %2=语音段

if amp(n)>amp2|...%保持在语音段 zcr(n)>zcr2; count=count+1; else %语音将结束 silence=silence+1;

if silence

静音不够

长,,没有结束

count=count+1;

elseif count

status=3; end end case 3, break; end end j=0;

for i=1:length(amp)-1;

if (zcr(i)>0.02)&(zcr(i+1)<0.02) j=j+1 jiesu1(j)=i; end end j=1

for i=1:length(jiesu1)-1

if((jiesu1(i+1)-jiesu1(i))>100)&jiesu1(i)~=1 jiesu(j)=jiesu1(i); j=j+1 end

end %找出每段语音结束点 j=1

for i=1:length(amp)-1;

if ((zcr(i)<0.85)&zcr(i+1)>0.85)

32

kaishi1(j)=i+1 j=j+1; end end j=1

for i=1:length(kaishi1)-1

if((kaishi1(i+1)-kaishi1(i))>80) kaishi(j)=kaishi1(i); j=j+1 end end

count=count-silence/2; x2=x1+count-1; subplot(311) plot(x)

axis([1 length(x) -1 1]) ylabel('speech');

line([x1*frameinc x1*frameinc],[-1,1],'color','red'); line([x2*frameinc x2*frameinc],[-1,1],'color','red'); subplot(312) plot(amp);

axis([1 length(amp) 0 max(amp)]) ylabel('energy');

line([x1,x1],[min(amp),max(amp)],'color','red'); line ([x2 x2],[min(amp),max(amp)],'color','red'); subplot(313) plot(zcr);

axis([1 length(zcr) 0 max(zcr)]) ylabel('zcr');

line([x1 x1],[min(zcr),max(zcr)],'color','red'); line([x2 x2],[min(zcr),max(zcr)],'color','red');

附录四:

“河北科技大学”语谱图源程序:

33

frmsize = 256; % 设置贞大小

[x,fs,nbits] = wavread('3.wav'); % 读取语音文件 x = filter([1 -0.95],[1],x); % 高频预加重,抵消频谱倾斜 n = length(x); frmcnt = floor(n/frmsize);

x = reshape(x(1:frmsize*frmcnt),frmsize,frmcnt); % 分帧 xFFT = abs(fft(x)); % 傅里叶谱

xFFT = xFFT(1:frmsize/2,1:frmcnt); % 奈奎斯特频率以内是无效的 xFFTdB = 20*log10(xFFT+eps); % 换算成分贝 xFFTdB(xFFTdB>+20) = +20; % 能量太高的截断 xFFTdB(xFFTdB<-40) = -40; % 能量太低的截断

xFFTdB = (xFFTdB+40); % 能量整理到 [0,60] 之间,当然你可以整理到[0,255]范围

subplot(2,1,1);plot(x(1:frmsize*frmcnt)); title('河北科技大学'); % 画波形

subplot(2,1,2);image(flipud(xFFTdB)); colormap(jet)% 画语谱图 附录五:

语音信号的综合仿真分析程序: [y,fs,bits]=wavread('e:\\235.wav'); % sound(y,fs,bits);

Y=fft(y,40000);%采样点数40000 figure(1);

subplot(211);plot(y);title('原始信号波形'); subplot(212);plot(abs(Y));title('原始信号频谱'); fc=20000;%载波频率

y1=modulate(y,fc,fs,'fm');%对原语音信号调制 Y1=fft(y1,40000);%采样点数40000 figure(2);

subplot(211);plot(y1);title('调制后信号波形'); subplot(212);plot(abs(Y1));title('调制后信号频谱'); % sound(y1); y2=y+y1;

Y2=fft(y2,40000);%采样点数40000

34

figure(3);

subplot(211);plot(y2);title('调制信号+原始信号波形'); subplot(212);plot(abs(Y2));title('调制信号+原始信号频谱'); % sound(y2); figure(4);

fp=1000;fc=1200;As=100;Ap=1;fs1=22050; wc=2*fc/fs1;wp=2*fp/fs1; [n,wn]=ellipord(wp,wc,Ap,As); [b,a]=ellip(n,Ap,As,wn); freqz(b,a,512,fs1); x=filter(b,a,y2); X=fft(x,40000); figure(5);

subplot(211);plot(x);title('低通滤波后信号波形');

subplot(212);plot(abs(X));title('低通滤波后信号频谱'); sound(x,40000);

35


基于DSP的语音分析系统(2)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:AN系列静叶可调轴流式通风机使用说明书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: