语音信号处理试验报告Word文件下载.docx

上传人:b****6 文档编号:8657054 上传时间:2023-05-12 格式:DOCX 页数:17 大小:65.26KB
下载 相关 举报
语音信号处理试验报告Word文件下载.docx_第1页
第1页 / 共17页
语音信号处理试验报告Word文件下载.docx_第2页
第2页 / 共17页
语音信号处理试验报告Word文件下载.docx_第3页
第3页 / 共17页
语音信号处理试验报告Word文件下载.docx_第4页
第4页 / 共17页
语音信号处理试验报告Word文件下载.docx_第5页
第5页 / 共17页
语音信号处理试验报告Word文件下载.docx_第6页
第6页 / 共17页
语音信号处理试验报告Word文件下载.docx_第7页
第7页 / 共17页
语音信号处理试验报告Word文件下载.docx_第8页
第8页 / 共17页
语音信号处理试验报告Word文件下载.docx_第9页
第9页 / 共17页
语音信号处理试验报告Word文件下载.docx_第10页
第10页 / 共17页
语音信号处理试验报告Word文件下载.docx_第11页
第11页 / 共17页
语音信号处理试验报告Word文件下载.docx_第12页
第12页 / 共17页
语音信号处理试验报告Word文件下载.docx_第13页
第13页 / 共17页
语音信号处理试验报告Word文件下载.docx_第14页
第14页 / 共17页
语音信号处理试验报告Word文件下载.docx_第15页
第15页 / 共17页
语音信号处理试验报告Word文件下载.docx_第16页
第16页 / 共17页
语音信号处理试验报告Word文件下载.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

语音信号处理试验报告Word文件下载.docx

《语音信号处理试验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《语音信号处理试验报告Word文件下载.docx(17页珍藏版)》请在冰点文库上搜索。

语音信号处理试验报告Word文件下载.docx

0N=3232.51.5020.514x1042

0N=64311.522.50.504x1042

0N=12831.5202.50.514x10105

0N=25631.522.500.514x102010

0N=512322.50.5011.54x10

2)短时平均过零率

a=wavread('

n=length(a);

N=320;

subplot(3,1,1),plot(a);

h=linspace(1,1,N);

%求卷积得其短时能量函数En

subplot(3,1,2),plot(En);

fori=1:

n-1

ifa(i)>

=0

b(i)=1;

else

b(i)=-1;

end

ifa(i+1)>

b(i+1)=1;

b(i+1)=-1;

w(i)=abs(b(i+1)-b(i));

%求出每相邻两点符号的差值的绝对值

k=1;

j=0;

while(k+N-1)<

n

Zm(k)=0;

fori=0:

N-1;

Zm(k)=Zm(k)+w(k+i);

j=j+1;

k=k+N/2;

%每次移动半个窗

forw=1:

j

Q(w)=Zm(160*(w-1)+1)/(2*N);

%短时平均过零率

subplot(3,1,3),plot(Q),grid;

1

0-100.511.522.534x1020

10000.511.522.534x100.50020406080100120140160180

3)自相关函数

N=240

y=wavread('

y=y(:

x=y(13271:

13510);

x=x.*rectwin(240);

R=zeros(1,240);

fork=1:

240

forn=1:

240-k

R(k)=R(k)+x(n)*x(n+k);

j=1:

240;

plot(j,R);

grid;

2.5

21.510.50-0.5-1-1.5050100150200250

分析语音信号频域特征MATLAB基于实验二

1)短时谱

clear

subplot(2,1,1),

plot(a);

title('

originalsignal'

grid

N=256;

h=hamming(N);

form=1:

N

b(m)=a(m)*h(m)

y=20*log(abs(fft(b)))

subplot(2,1,2)

plot(y);

短时谱'

originalsignal1

0.50-0.5-100.511.522.534x10谱时短1

0.5000.20.40.60.811.21.41.61.82

2)语谱图

[x,fs,nbits]=wavread('

x=x(:

specgram(x,512,fs,100);

xlabel('

时间(s)'

ylabel('

频率(Hz)'

'

语谱图'

title(

语谱图

50004000)3000zH(率频2000100000.511.52(s)时间

3)倒谱和复倒谱

(1)加矩形窗时的倒谱和复倒谱

clear

[4000,4350]);

N=300;

b(m)=a(m)*h(m);

c=cceps(b);

c=fftshift(c);

d=rceps(b);

d=fftshift(d);

subplot(2,1,1)

plot(d);

加矩形窗时的倒谱'

加矩形窗时的复倒谱'

plot(c);

加矩形窗时的倒谱1

0-1-2050100150200250300加矩形窗时的复倒谱10

50-5-10050100150200250300

(2)加汉明窗时的倒谱和复倒谱

a=a(;

加汉明窗时的倒谱'

加汉明窗时的复倒谱'

加汉明窗时的倒谱1

0-1-2-3050100150200250300加汉明窗时的复倒谱10

实验三基于MATLAB的LPC分析

MusicSource=wavread('

MusicSource=MusicSource(:

Music_source=MusicSource'

;

N=256;

%windowlength,N=100--1000;

Hamm=hamming(N);

%createHammingwindow

frame=input('

请键入想要处理的帧位置='

%originiscurrentframe

origin=Music_source(((frame-1)*(N/2)+1):

((frame-1)*(N/2)+N));

Frame=origin.*Hamm'

%ShortTimeFourierTransform

[s1,f1,t1]=specgram(MusicSource,N,N/2,N);

[Xs1,Ys1]=size(s1);

fori=1:

Xs1

FTframe1(i)=s1(i,frame);

N1=input('

请键入预测器阶数='

%N1ispredictor'

sorder

[coef,gain]=lpc(Frame,N1);

%LPCanalysisusingLevinson-Durbinrecursion

est_Frame=filter([0-coef(2:

end)],1,Frame);

%estimateframe(LP)

FFT_est=fft(est_Frame);

err=Frame-est_Frame;

%error

%FFT_err=fft(err);

subplot(2,1,1),plot(1:

N,Frame,1:

N,est_Frame,'

-r'

原始语音帧vs.预测后语音帧'

subplot(2,1,2),plot(err);

误差'

pause

%subplot(2,1,2),plot(f'

20*log(abs(FTframe2)));

%GainsolutionusingG^2=Rn(0)-sum(ai*Rn(i)),i=1,2,...,P

fLength(1:

2*N)=[origin,zeros(1,N)];

Xm=fft(fLength,2*N);

X=Xm.*conj(Xm);

Y=fft(X,2*N);

Rk=Y(1:

N);

PART=sum(coef(2:

N1+1).*Rk(1:

N1));

G=sqrt(sum(Frame.^2)-PART);

A=(FTframe1-FFT_est(1:

length(f1'

)))./FTframe1;

%inversefilterA(Z)

subplot(2,1,1),plot(f1'

20*log(abs(FTframe1)),f1'

(20*log(abs(1./A))),'

subplot(2,1,2),plot(f1'

(20*log(abs(G./A))));

LPC谱'

%plot(abs(ifft(FTframe1./(G./A))));

excited'

%plot(f1'

20*log(abs(FFT_est(1:

)).*A/G)));

%pause

%find_pitch

temp=FTframe1-FFT_est(1:

));

%notmovehigherfrequnce

pitch1=log(abs(temp));

pLength=length(pitch1);

result1=ifft(pitch1,N);

%movehigherfrequnce

pitch1((pLength-32):

pLength)=0;

result2=ifft(pitch1,N);

%directdorealcepstrumwitherr

pitch=fftshift(rceps(err));

origin_pitch=fftshift(rceps(Frame));

subplot(211),plot(origin_pitch);

原始语音帧倒谱(直接调用函数)'

subplot(212),plot(pitch);

预测误差倒谱(直接调用函数)'

subplot(211),plot(1:

length(result1),fftshift(real(result1)));

预测误差倒谱(根据定义编写,没有去除高频分量)'

subplot(212),plot(1:

length(result2),fftshift(real(result2)));

预测误差倒谱(根据定义编);

)'

写,去除高频分量

原始语音帧vs.预测后语音帧0.4

0.20-0.2-0.4050100150200250300差误0.2

0.10-0.1-0.2300250100050150200

短时谱50

0-50-100010203040506070谱LPC100

806040010203040506070

原始语音帧倒谱(直接调用函数)0.5

0-0.5-1050100150200250300预测误差倒谱(直接调用函数)0.5

0-0.5-1050100150200250300

预测误差倒谱(根据定义编写,没有去除高频分量)0.2

0-0.2-0.4-0.6050100150200250300预测误差倒谱(根据定义编写,去除高频分量)0.1

0-0.1-0.2-0.3050100150200250300

实验四基于VQ的特定人孤立词语音识别研究

1、mfcc.m

ccc=mfcc(x)function);

m'

bank=melbankm(24,256,8000,0,0.5,bank=full(bank);

bank=bank/max(bank(:

k=1:

12forn=0:

23;

dctcoef(k,:

)=cos((2*n+1)*k*pi/(2*24));

end

w=1+6*sin(pi*[1:

12]./12);

w=w/max(w);

xx=double(x);

xx=filter([1-0.9375],1,xx);

xx=enframe(xx,256,80);

i=1:

size(xx,1)fory=xx(i,:

s=y'

.*hamming(256);

t=abs(fft(s));

t=t.^2;

c1=dctcoef*log(bank*t(1:

129));

c2=c1.*w'

m(i,:

)=c2'

dtm=zeros(size(m));

i=3:

size(m,1)-2fordtm(i,:

)=-2*m(i-2,:

)-m(i-1,:

)+m(i+1,:

)+2*m(i+2,:

enddtm=dtm/3;

ccc=[mdtm];

ccc=ccc(3:

size(m,1)-2,:

2、vad.m

[x1,x2]=vad(x)functionx=double(x);

x=x/max(abs(x));

FrameLen=240;

FrameInc=80;

amp1=10;

amp2=2;

zcr1=10;

zcr2=5;

%6*10ms=30msmaxsilence=8;

%15*10ms=150msminlen=15;

status=0;

count=0;

silence=0;

tmp1=enframe(x(1:

end-1),FrameLen,FrameInc);

tmp2=enframe(x(2:

end),FrameLen,FrameInc);

signs=(tmp1.*tmp2)<

0;

diffs=(tmp1-tmp2)>

0.02;

zcr=sum(signs.*diffs,2);

amp=sum(abs(enframe(filter([1-0.9375],1,x),FrameLen,FrameInc)),

2);

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

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

x1=0;

x2=0;

n=1:

length(zcr)forgoto=0;

statusswitch

{0,1}case

ifamp(n)>

amp1

x1=max(n-count-1,1);

status=2;

silence=0;

count=count+1;

...amp(n)>

amp2|elseifzcr(n)>

zcr2status=1;

elsestatus=0;

count=0;

2,case

amp(n)>

amp2|...ifzcr(n)>

zcr2count=count+1;

else

silence=silence+1;

ifsilence<

maxsilence

count=count+1;

count<

minlenelseif

status=0;

status=3;

3,case;

breakend

end

count=count-silence/2;

x2=x1+count-1;

3、codebook.m

%clear;

xchushi=codebook(m)function[a,b]=size(m);

[m1,m2]=szhixin(m);

[m3,m4]=szhixin(m2);

[m1,m2]=szhixin(m1);

[m7,m8]=szhixin(m4);

[m5,m6]=szhixin(m3);

[m15,m16]=szhixin(m8);

[m13,m14]=szhixin(m7);

[m11,m12]=szhixin(m6);

[m9,m10]=szhixin(m5);

chushi(1,:

)=zhixinf(m1);

chushi(2,:

)=zhixinf(m2);

chushi(3,:

)=zhixinf(m3);

chushi(4,:

)=zhixinf(m4);

chushi(5,:

)=zhixinf(m5);

chushi(6,:

)=zhixinf(m6);

chushi(7,:

)=zhixinf(m7);

chushi(8,:

)=zhixinf(m8);

chushi(9,:

)=zhixinf(m9);

chushi(10,:

)=zhixinf(m10);

chushi(11,:

)=zhixinf(m11);

chushi(12,:

)=zhixinf(m12);

chushi(13,:

)=zhixinf(m13);

chushi(14,:

)=zhixinf(m14);

chushi(15,:

)=zhixinf(m15);

chushi(16,:

)=zhixinf(m16);

sumd=zeros(1,1000);

k=1;

dela=1;

xchushi=chushi;

(k<

=1000)whilesum=ones(1,16);

p=1:

afor

16ford(i)=odistan(m(p,:

),chushi(i,:

dmin=min(d);

sumd(k)=sumd(k)+dmin;

16for

d(i)==dminifxchushi(i,:

)=xchushi(i,:

)+m(p,:

sum(i)=sum(i)+1;

endend

xchushi(i,:

)/sum(i);

k>

1ifdela=abs(sumd(k)-sumd(k-1))/sumd(k);

endk=k+1;

chushi=xchushi;

endreturn

4、testvq.m

clear;

)这是一个简易语音识别系统,请保证已经将您的语音保存在相应文件夹中'

disp('

)正在训练您的语音模版指令,请稍后...'

10for,i-1);

\\ú

.wav'

海儿的声音fname=spr

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2