1 / 7
文档名称:

用Matlab求语音序列的倒谱.doc

格式:doc   大小:19KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

用Matlab求语音序列的倒谱.doc

上传人:文库旗舰店 2019/9/22 文件大小:19 KB

下载得到文件列表

用Matlab求语音序列的倒谱.doc

相关文档

文档介绍

文档介绍:用Matlab求语音序列的倒谱将采样序列保存到x向量中,然后首先选取5450点到5950点做分析,这一段对应的是浊音语音段。之所以要选512点(比较大)是为了减小在用离散傅立叶变换计算倒谱时造成的混叠。然后对这段信号求FFT、取模、取log、IFFT得到倒谱,并画图。接着我又读进了这段语音信号,选取30500点到31011点进行分析,这一段对应的是清音语音段。接下来的处理与对浊音的处理完全相同。这段代码如下:“”文件:clearall;x=wavread('');%对声音文件中的数据采样,结果保存到x向量中x=x';%转置成行向量,便于处理N=length(x)%显示声音样点的总长度x=x(5450:5961);%取中间的一段样点浊音段a=fft(x);%对x做DFT变换b=abs(a);%取模运算d=log(b);%取对数c=ifft(d);%做IDFT变换figure(1);%浊音段的倒谱图subplot(2,1,1);%画原始序列图plot(x);title('浊音段的原始序列');ylabel('x(n)');subplot(2,1,2);%画该序列的倒谱图plot(c);title('浊音段的倒谱');ylabel('c(n)');x=wavread('');%重新对声音文件中的数据采样,结果保存到x向量中x=x';%转置成行向量,便于处理x=x(30500:31011);%取中间的一段样点清音段a=fft(x);%对x做DFT变换b=abs(a);%取模运算d=log(b);%取对数c=ifft(d);%做IDFT变换figure(2);%清音段的倒谱图subplot(2,1,1);%画原始序列图plot(x);title('清音段原始序列');ylabel('x(n)');subplot(2,1,2);%画该序列的倒谱图plot(c);title('清音段的倒谱');ylabel('c(n)');。,所以这里只是验证求一段N点序列的倒谱。#include<>#include<>constdoublepi=;constintN=8;//N点序列,N值可以在这里改变voidmain(){doublex[N],X[N],ReX[N],ImX[N],c[N],Rec[N],Imc[N];intn,k,i;charflag;while(1){cout<<"请输入一列"<<N<<"点离散语音信号:"<<endl;//输入一段离散语音序列for(i=0;i<N;i++)cin>>x[/font][font=宋体];for(k=0;k<N;k++)//对该序列进行DFT变换{ReX[k]=0;ImX[k]=0;for(n=0;n<N;n++){ReX[k]=x[n]*cos(2*pi*k*n/N)+ReX[k];ImX[k]=x[n]*sin(-2*pi*k*n/N)+ImX[k];}}cout<<"该语音序列的DFT是:"<<endl;for(k=0;k<N;k++)cout<<"X["<<k<<"]="<<ReX[k]<<"+j("<<I