倒谱计算与分析

上传人:飞*** 文档编号:38024761 上传时间:2018-04-25 格式:PDF 页数:12 大小:358.28KB
返回 下载 相关 举报
倒谱计算与分析_第1页
第1页 / 共12页
倒谱计算与分析_第2页
第2页 / 共12页
倒谱计算与分析_第3页
第3页 / 共12页
倒谱计算与分析_第4页
第4页 / 共12页
倒谱计算与分析_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《倒谱计算与分析》由会员分享,可在线阅读,更多相关《倒谱计算与分析(12页珍藏版)》请在金锄头文库上搜索。

1、河南师范大学计算机与信息技术学院视频语音处理技术倒谱计算与分析学院名称:计算机与信息工程学院专业名称:计算机科学与技术年级班级:姓名:学号:河南师范大学计算机与信息技术学院计算机与信息技术学院综合性、设计性实验报告专业:计算机科学技术年级/ 班级: 2011级 20122013 学年第一学期课程名称视频语音处理技术指导教师张新明本组成员 学号姓名1108114153 王彦秋实验地点计科楼 324 实验时间项目名称倒谱计算与分析实验类型设计性一、 实验目的 :对语音信号进行同态分析可得到语音信号的倒谱参数。语音的倒谱是将语音的短时谱取对数后再进行IDFT 得到的,所以浊音信号的激励反映在倒谱上是

2、同样周期的冲激,借此,可从倒谱波形中估计出基音周期。对倒谱进行低时窗选,通过语音倒谱分析的最后一级, 进行 DFT后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振峰频率,对于平滑过的对数谱中的峰值进行定位,即可估计共振峰。对于倒谱计算与分析的设计实验可作如下训练:1、复倒谱的几种计算方法:2、最小相位信号法和递归法;3、基音检测;4、共振峰检测。二、实验仪器或设备 :windowsXP下的 Matlab 编程环境三、总体设计(设计原理、设计方案及流程等) 1复倒谱的几种计算方法:在复倒谱分析中,z 变换后得到的是复数,所以取对数时要进行

3、复对数运算。这时存在相位的多值性问题,称为“相位卷绕”。设信号为则其傅里叶变换为对上式取复对数为则其幅度和相位分别为:)()()(21nxnxnx)()()(21jjjeXeXeX)(ln)(ln)(ln21jjjeXeXeX)(ln)(ln)(ln21jjjeXeXeX)()()(21)()()(21河南师范大学计算机与信息技术学院上式中,虽然,的范围均在内,但的值可能超过范围。计算机处理时总相位值只能用其主值表示,然后把这个相位主值“展开”,得到连续相位。所以存在下面的情况:(K为整数)此时即产生了相位卷绕。下面介绍几种避免相位卷绕求复倒谱的方法。最小相位信号法这是解决相位卷绕的一种较好的

4、方法。但它有一个限制条件:被处理的信号想x(n)必须是最小相位信号。实际上许多信号就是最小相位信号,或可以看作是最小相位信号。语音信号的模型就是极点都在z 平面单位圆内的全极点模型,或者极零点都在z平面单位圆内的极零点模型。设信号x(n) 的z变换为X(z)=N (z)/ D(z) ,则有根据z变换的微分特性有若x(n)是最小相位信号,则必然是稳定的因果序列。由 Hilbert变换的性质可知, 任一因果复倒谱序列都可分解为偶对称分量和奇对称分量之和 : 其中这两个分量的傅里叶变换分别为的傅里叶变换的实部和虚部。从而可得此即复倒谱的性质3,也就是说一个因果序列可由其偶对称分量来恢复。如果引入一个

5、)(1)(2,)(,)(k2)()()()(ln)(ln)(? zDzNzXzX)()(ln)(?)( ?zDzN dzdzzXdzdzznxnnn)()()()()()(zDzNzDzNzNzDz)( ? nx)(?)(?)( ?nxnxnxoe2/)( ?)( ?)(?nxnxnxe2/)( ?)( ?)(?nxnxnxo)( ? nx)(?)(?)( ?)(?j Ij RjnnjeXjeXenxeX0)(?20)(?00)( ?nnxnnxnnxee)(?)()( ?nxngnxe河南师范大学计算机与信息技术学院辅助因子g(n) ,上式可写作其中最小相位信号法求复倒谱原理框图如下递归法这

6、种方法仅限于是最小相位信号的情况。根据z 变换的微分特性得对上式求逆z变换,根据z变换的微分特性,有所以设x(n)是最小相位序列,而最小相位信号序列一定为因果序列,所以有由于及可得递推公式递归运算后由复倒谱定义可知如果x(n)是最大相位序列,则变为00( )1020ng nnnDFT 复对数lg( ) )(nx)(jeX)(lg)(?jj ReXeX实部IDFT )(ng)(? nx)(? nxe)()()(zXdzdzzXdzdzzX)()()( ?nxnnxnxn0)()( ?)(nknxkxnknxk100)0()( ?)()( ?)()( ?)()(nknkxnxknxkxnkknxk

7、xnknx)0(0)(?kkx)(0)( ?nkknx)0()()( ?)0()()( ?10xknxkxnk xnxnxnk)(ln)(ln)( ?11nnznxznxzznx)0(ln)()0(ln)0(ln)0(1xnxxzzx020100)(nnnng0)0()()( ?)()0()()( ?01nxknxkxnk xnxnxnk河南师范大学计算机与信息技术学院其中2、基音检测;语音的倒谱是将语音的短时谱取对数后再进行IDFT 得到的,所以浊音信号的周期性激励反映在倒谱上是同样周期的冲激。借此,可从倒谱波形中估计出基音周期。一般把倒谱波形中第二个冲激,认为是对应激励源的基频。下面给出一

8、种倒谱法求基音周期的框图及流程图如下3. 共振峰检测倒谱将基音谐波和声道的频谱包络分离开来。对倒谱进行低时窗选, 通过语音倒谱)0(ln)0(?xx峰值检测基音检测s(n) DFT|S(k)|IDFTln|S(k)|w(n) 图 5.8 一种倒谱法求基音周期的实现框图N N Y 读入语音数据计算基音周期pitch 取出一帧语音数据对该帧数据加窗求该帧语音的倒谱设置基音搜索范围找出该搜索范围内倒谱的最大值max 设置门限为 0.08 基音周期 pitch =0 max0.08?图 5.9 一种倒谱法求基音周期的流程图到文件尾吗? Y 结束河南师范大学计算机与信息技术学院分析系统的最后一级,进行D

9、FT 后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振蜂频率,对平滑过的对数谱中的峰值进行定位,即可估计共振峰。原理框图及流程图如下。四、实验步骤(包括主要步骤、代码分析等) 1倒谱 MATLAB 实现代码段clear all; %倒谱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=i

10、fft(Sa); %对 Sa 进行傅里叶逆变换ylen=length(sa); for i=1:ylen/2; sal(i)=sa(ylen/2+1-i); end 分帧加窗|FFT| log IFFT 加窗|FFT| log 平滑处理共振峰图 5.12 共振峰检测框图N Y 计算浊音基音周期NN 点取倒谱的前NN 点加 NN 点汉明窗计算频谱formant1 formant(1:2)=formant1(1:2) formant(t)=formant2( t-1)*0.25+formant2( t)*0.5+formant2( t+1)*0.25 绘图平滑处理formant=formant2

11、t0.08 a=fs/(LF+ind); else a=0; end pitch=a % 画图figure(1); subplot(3,1,1); plot(time1,y); title(语音波形 ); %axis tight ylim=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); %

12、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=

13、(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/

14、2); % 基音检测LF=floor(fs/500); HF=floor(fs/70); cn=cepstrum(LF:HF); mx_cepind=max(cn);% 找到最大的突起的位置% 共振峰检测核心代码NN=ind+LF; ham=hamming(NN); cep=cepstrum(1:NN); ceps=cep.*ham; %汉明窗formant1=20*log(abs(fft(ceps); formant(1:2)=formant1(1:2); for t=3:NN % do some median filtering z=formant1(t-2:t); md=median(z

15、); formant2(t)=md; end for t=1:NN-1 if t=2 formant(t)=formant1(t); else formant(t)=formant2(t-1)*0.25+formant2(t)*0.5+formant2(t+1)*0.25; end end subplot(3,1,1); plot(cepstrum); title(倒谱 ); xlabel(样点数 ); ylabel(幅度 ) %axis(0,220,-0.5,0.5) spectral=20*log(abs(fft(frame2); subplot(3,1,2); xj=(1:length(spectral)/2)*fs/length(spectral); plot(xj,spectral(1:length(spectral)/2); title(频谱 ); xlabel(频率 /Hz); 河南师范大学计算机与信息技术学院ylabel(幅度 /dB) %axis

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号