您好,欢迎访问三七文档
河南师范大学计算机与信息技术学院《视频语音处理技术》倒谱计算与分析学院名称:计算机与信息工程学院专业名称:计算机科学与技术年级班级:姓名:学号:河南师范大学计算机与信息技术学院计算机与信息技术学院综合性、设计性实验报告专业:计算机科学技术年级/班级:2011级2012—2013学年第一学期课程名称视频语音处理技术指导教师张新明本组成员学号姓名1108114153王彦秋实验地点计科楼324实验时间项目名称倒谱计算与分析实验类型设计性一、实验目的:对语音信号进行同态分析可得到语音信号的倒谱参数。语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号的激励反映在倒谱上是同样周期的冲激,借此,可从倒谱波形中估计出基音周期。对倒谱进行低时窗选,通过语音倒谱分析的最后一级,进行DFT后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振峰频率,对于平滑过的对数谱中的峰值进行定位,即可估计共振峰。对于倒谱计算与分析的设计实验可作如下训练:1、复倒谱的几种计算方法:2、最小相位信号法和递归法;3、基音检测;4、共振峰检测。二、实验仪器或设备:windowsXP下的Matlab编程环境三、总体设计(设计原理、设计方案及流程等)1.复倒谱的几种计算方法:在复倒谱分析中,z变换后得到的是复数,所以取对数时要进行复对数运算。这时存在相位的多值性问题,称为“相位卷绕”。设信号为则其傅里叶变换为对上式取复对数为则其幅度和相位分别为:)()()(21nxnxnx)()()(21jjjeXeXeX)(ln)(ln)(ln21jjjeXeXeX)(ln)(ln)(ln21jjjeXeXeX)()()(21)()()(21河南师范大学计算机与信息技术学院上式中,虽然,的范围均在内,但的值可能超过范围。计算机处理时总相位值只能用其主值表示,然后把这个相位主值“展开”,得到连续相位。所以存在下面的情况:(K为整数)此时即产生了相位卷绕。下面介绍几种避免相位卷绕求复倒谱的方法。最小相位信号法这是解决相位卷绕的一种较好的方法。但它有一个限制条件:被处理的信号想x(n)必须是最小相位信号。实际上许多信号就是最小相位信号,或可以看作是最小相位信号。语音信号的模型就是极点都在z平面单位圆内的全极点模型,或者极零点都在z平面单位圆内的极零点模型。设信号x(n)的z变换为X(z)=N(z)/D(z),则有根据z变换的微分特性有若x(n)是最小相位信号,则必然是稳定的因果序列。由Hilbert变换的性质可知,任一因果复倒谱序列都可分解为偶对称分量和奇对称分量之和:其中这两个分量的傅里叶变换分别为的傅里叶变换的实部和虚部。从而可得此即复倒谱的性质3,也就是说一个因果序列可由其偶对称分量来恢复。如果引入一个)(1)(2,)(,)(k2)()()()(ln)(ln)(ˆzDzNzXzX)()(ln)(ˆ)(ˆzDzNdzdzzXdzdzznxnnn)()()()()()(zDzNzDzNzNzDz)(ˆnx)(ˆ)(ˆ)(ˆnxnxnxoe2/)(ˆ)(ˆ)(ˆnxnxnxe2/)(ˆ)(ˆ)(ˆnxnxnxo)(ˆnx)(ˆ)(ˆ)(ˆ)(ˆjIjRjnnjeXjeXenxeX0)(ˆ20)(ˆ00)(ˆnnxnnxnnxee)(ˆ)()(ˆnxngnxe河南师范大学计算机与信息技术学院辅助因子g(n),上式可写作其中最小相位信号法求复倒谱原理框图如下递归法这种方法仅限于是最小相位信号的情况。根据z变换的微分特性得对上式求逆z变换,根据z变换的微分特性,有所以设x(n)是最小相位序列,而最小相位信号序列一定为因果序列,所以有由于及可得递推公式递归运算后由复倒谱定义可知如果x(n)是最大相位序列,则变为00()1020ngnnnDFT复对数lg())(nx)(jeX)(lg)(ˆjjReXeX实部IDFT)(ng)(ˆnx)(ˆnxe)()()(zXdzdzzXdzdzzX)()()(ˆnxnnxnxn0)()(ˆ)(nknxkxnknxk100)0()(ˆ)()(ˆ)()(ˆ)()(nknkxnxknxkxnkknxkxnknx)0(0)(ˆkkx)(0)(ˆnkknx)0()()(ˆ)0()()(ˆ10xknxkxnkxnxnxnk])(ln[)(ln)(ˆ11nnznxznxzznx)0(ln)()0(ln)0(ln)0(1xnxxzzx020100)(nnnng0)0()()(ˆ)()0()()(ˆ01nxknxkxnkxnxnxnk河南师范大学计算机与信息技术学院其中2、基音检测;语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号的周期性激励反映在倒谱上是同样周期的冲激。借此,可从倒谱波形中估计出基音周期。一般把倒谱波形中第二个冲激,认为是对应激励源的基频。下面给出一种倒谱法求基音周期的框图及流程图如下3.共振峰检测倒谱将基音谐波和声道的频谱包络分离开来。对倒谱进行低时窗选,通过语音倒谱)0(ln)0(ˆxx峰值检测基音检测s(n)DFT|S(k)|IDFTln|S(k)|w(n)图5.8一种倒谱法求基音周期的实现框图NNY读入语音数据计算基音周期pitch取出一帧语音数据对该帧数据加窗求该帧语音的倒谱设置基音搜索范围找出该搜索范围内倒谱的最大值max设置门限为0.08基音周期pitch=0max0.08?图5.9一种倒谱法求基音周期的流程图到文件尾吗?Y结束河南师范大学计算机与信息技术学院分析系统的最后一级,进行DFT后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振蜂频率,对平滑过的对数谱中的峰值进行定位,即可估计共振峰。原理框图及流程图如下。四、实验步骤(包括主要步骤、代码分析等)1.倒谱MATLAB实现代码段clearall;%倒谱[s,fs,nbit]=wavread('beijing.wav');%读入一段语音b=s';%将s转置x=b(5000:5399);%取400点语音N=length(x);%读入语音的长度S=fft(x);%对x进行傅里叶变换Sa=log(abs(S));%log为以e为底的对数sa=ifft(Sa);%对Sa进行傅里叶逆变换ylen=length(sa);fori=1:ylen/2;sal(i)=sa(ylen/2+1-i);end分帧加窗|FFT|logIFFT加窗|FFT|log平滑处理共振峰图5.12共振峰检测框图NY计算浊音基音周期NN点取倒谱的前NN点加NN点汉明窗计算频谱formant1formant(1:2)=formant1(1:2)formant(t)=formant2(t-1)*0.25+formant2(t)*0.5+formant2(t+1)*0.25绘图平滑处理formant=formant2t=2?图5.13共振峰检测流程图河南师范大学计算机与信息技术学院fori=(ylen/2+1):ylen;sal(i)=sa(i+1-ylen/2);end%绘图figure(1);subplot(2,1,1);plot(x);%axis([0,400,-0.5,0.5])title('截取的语音段');xlabel('样点数');ylabel('幅度');subplot(2,1,2);time2=[-199:1:-1,0:1:200];plot(time2,sa1);%axis([-200,200,-0.5,0.5])title('截取语音的倒谱');xlabel('样点数');ylabel('幅度');运行结果如图:2.倒谱法求浊音、清音的基音周期functions=p5_2pitchdetectwaveFile='beijing.wav';[y,fs,nbits]=wavread(waveFile);time1=1:length(y);time=(1:length(y))/fs;frameSize=floor(50*fs/1000);%帧长startIndex=round(5000);%起始序号endIndex=startIndex+frameSize-1;%结束序号frame=y(startIndex:endIndex);%取出该帧frameSize=length(frame);河南师范大学计算机与信息技术学院frame2=frame.*hamming(length(frame));%加汉明窗rwy=rceps(frame2);%求倒谱ylen=length(rwy);cepstrum=rwy(1:ylen/2);fori=1:ylen/2;cepstrum1(i)=rwy(ylen/2+1-i);endfori=(ylen/2+1):ylen;cepstrum1(i)=rwy(i+1-ylen/2);end%基因检测LF=floor(fs/500);%基因周期的范围是70~500HzHF=floor(fs/70);cn=cepstrum(LF:HF);[mx_cepind]=max(cn);ifmx_cep0.08&indLF;a=fs/(LF+ind);elsea=0;endpitch=a%画图figure(1);subplot(3,1,1);plot(time1,y);title('语音波形');%axistightylim=get(gca,'ylim');line([time1(startIndex),time1(startIndex)],ylim,'color','r');line([time1(endIndex),time1(endIndex)],ylim,'color','r');xlabel('样点数');ylabel('幅度');subplot(3,1,2);plot(frame);%axis([0,400,-0.5,0.5])title('一帧语音');xlabel('样点数');ylabel('幅度')subplot(3,1,3);time2=[-199:1:-1,0:1:200];plot(time2,cepstrum1);%axis([-200,200,-0.5,0.5])title('一帧语音的倒谱');河南师范大学计算机与信息技术学院xlabel('样点数');ylabel('幅度');运行结果如下图:倒谱法求浊音的基音周期清音的倒谱3.共振峰检测程序waveFile='qinghua.wav';[y,fs,nbits]=wavread(waveFile);time=(1:length(y))/fs;frameSize=floor(40*fs/1000);%帧长startIndex=round(15000);%起始序号河南师范大学计算机与信息技术学院endIndex=startIndex+frameSize-1;%结束序号frame=y(startIndex:endIndex);%取出该帧frameSize=length(frame);frame2=frame.*hamming(length(frame));%加汉明窗rwy=rceps(frame2);%倒谱求ylen=length(rwy);cepstrum=rwy(1:ylen/2);%基音检测LF=floor(fs/500);HF=floor(fs/70);cn=cepstrum(LF:HF);[mx
本文标题:倒谱计算与分析
链接地址:https://www.777doc.com/doc-5264216 .html