倒谱计算与分析综述.docx

上传人:b****9 文档编号:25170790 上传时间:2023-06-05 格式:DOCX 页数:16 大小:369.79KB
下载 相关 举报
倒谱计算与分析综述.docx_第1页
第1页 / 共16页
倒谱计算与分析综述.docx_第2页
第2页 / 共16页
倒谱计算与分析综述.docx_第3页
第3页 / 共16页
倒谱计算与分析综述.docx_第4页
第4页 / 共16页
倒谱计算与分析综述.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

倒谱计算与分析综述.docx

《倒谱计算与分析综述.docx》由会员分享,可在线阅读,更多相关《倒谱计算与分析综述.docx(16页珍藏版)》请在冰豆网上搜索。

倒谱计算与分析综述.docx

倒谱计算与分析综述

《视频语音处理技术》

倒谱计算与分析

学院名称:

计算机与信息工程学院

专业名称:

计算机科学与技术

年级班级:

姓名:

学号:

计算机与信息技术学院综合性、设计性实验报告

专业:

计算机科学技术年级/班级:

2011级2012—2013学年第一学期

课程名称

视频语音处理技术

指导教师

张新明

本组成员学号姓名

1108114153王彦秋

实验地点

计科楼324

实验时间

项目名称

倒谱计算与分析

实验类型

设计性

一、实验目的:

对语音信号进行同态分析可得到语音信号的倒谱参数。

语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号的激励反映在倒谱上是同样周期的冲激,借此,可从倒谱波形中估计出基音周期。

对倒谱进行低时窗选,通过语音倒谱分析的最后一级,进行DFT后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振峰频率,对于平滑过的对数谱中的峰值进行定位,即可估计共振峰。

对于倒谱计算与分析的设计实验可作如下训练:

1、复倒谱的几种计算方法:

2、最小相位信号法和递归法;

3、基音检测;

4、共振峰检测。

二、实验仪器或设备:

windowsXP下的Matlab编程环境

三、总体设计(设计原理、设计方案及流程等)

1.复倒谱的几种计算方法:

在复倒谱分析中,z变换后得到的是复数,所以取对数时要进行复对数运算。

这时存在相位的多值性问题,称为“相位卷绕”。

设信号为x(n)=为(n)X2(n)

则其傅里叶变换为X(e')二Xje八)/(e八)

对上式取复对数为lnX(e')=lnX1(e「)7nX2(e「)

则其幅度和相位分别为:

lnX(e鬥=lnX'e鬥+lnX2(e今

「)「(•)*)

(■)=-i(■)2()

上式中,虽然iCO,2()的范围均在—二,二内,但(.)的值可能超过

(―.兀)范围。

计算机处理时总相位值只能用其主值①(国)表示,然后把这个相位

主值“展开”,得到连续相位。

所以存在下面的情况:

2k二(K为整数)

此时即产生了相位卷绕。

下面介绍几种避免相位卷绕求复倒谱的方法。

最小相位信号法

这是解决相位卷绕的一种较好的方法。

但它有一个限制条件:

被处理的信号想x(n)

必须是最小相位信号。

实际上许多信号就是最小相位信号,或可以看作是最小相位信号。

语音信号的模型就是极点都在z平面单位圆内的全极点模型,或者极零点都在z平

面单位圆内的极零点模型。

设信号x(n)的z变换为X(z)=N(z)/D[z),则有

根据z变换的微分特性有

 

D(z)N(z)-N(z)D(z)1

N(z)D(z)

若x(n)是最小相位信号,则対必然是稳定的因果序列。

由Hilbert变换的性质可知,任一因果复倒谱序列都可分解为偶对称分量和奇对称分量之和:

X(n)=鬼(n)XO(n)

其中xe(n)-x(n)x(_n)1/2

xO(n)-x(n)-?

(-n)1/2

这两个分量的傅里叶变换分别为x(的傅里叶变换的实部和虚部。

)?

(er)x(n)e$二)?

R(e?

)j*(ej)

n=•:

:

:

从而可得

0n£0

x(n)二鬼(n)n=0

2?

e(n)n0

其中

此即复倒谱的性质3,也就是说一个因果序列可由其偶对称分量来恢复。

如果引入一个

 

最小相位信号法求复倒谱原理框图如下

递归法

这种方法仅限于是最小相位信号的情况。

根据z变换的微分特性得

 

对上式求逆z变换,根据z变换的微分特性,有

n?

(n)丨x(n)二nx(n)

 

设x(n)是最小相位序列,而最小相位信号序列一定为因果序列,所以有

x(n)=瓦(b)x(k)x(n-k)=迟-*(k)x(n-k)+?

n)x(0)

k=onk=0in丿

由于?

(k)=0(k:

0)及x(n-k)=0(kn)可得递推公式

 

x(0)心in

 

递归运算后由复倒谱定义

x(n)=zrnzk(n)D=z°」ln[送x(n)z^可知x(0)=z,lnz〔x(0)H-Inx(0)、(n)二Inx(0)如果x(n)是最大相位序列,则变为

0n0

g(n)=」1n=0

2nC0

x(0)k卅nx(0)

其中5?

(0)=1nx(0)

2、基音检测;

语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号的周期

性激励反映在倒谱上是同样周期的冲激。

借此,可从倒谱波形中估计出基音周期。

一般把倒谱波形中第二个冲激,认为是对应激励源的基频。

下面给出一种倒谱法求基音周期的框图及流程图如下

w(n)

图5.8一种倒谱法求基音周期的实现

框图

图5.9一种倒谱法求基音周期的流程图

3.共振峰检测

倒谱将基音谐波和声道的频谱包络分离开来。

对倒谱进行低时窗选,通过语音倒谱

分析系统的最后一级,进行DFT后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振蜂频率,对平滑过

的对数谱中的峰值进行定位,即可估计共振峰。

原理框图及流程图如下。

分帧加窗H~|FFT|卜「Og~}TIFFTH加窗卜I|FFT|卜厂lQg~—|平滑处斗{共振峰

图5.12共振峰检测框图

 

 

 

读入一段语音

将s转置

取400点语音

读入语音的长度

对x进行傅里叶变换

为以e为底的对数

图5.13共振峰检测流程图

四、实验步骤(包括主要步骤、代码分析等)

1.倒谱MATLAB实现代码段

clearall;%倒谱

[s,fs,nbit]=wavread('beijing.wav');%b=s';%

x=b(5000:

5399);%

N=length(x);%

S=fft(x);%

Sa=log(abs(S));%log

对Sa进行傅里叶逆变换

sa=ifft(Sa);ylen=length(sa);fori=1:

ylen/2;

sal(i)=sa(ylen/2+1-i);

end

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_2pitchdetect

waveFile='beijing.wav';

[y,fs,nbits]=wavread(waveFile);

time1=1:

length(y);

HF=floor(fs/70);

cn=cepstrum(LF:

HF);

[mx_cepind]=max(cn);

ifmx_cep>0.08&ind>LF;

a=fs/(LF+ind);

else

a=0;

end

pitch=a

%画图

figure

(1);

subplot(3,1,1);

plot(time1,y);

title('语音波形');

%axistight

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);

%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('幅度');

运行结果如下图:

倒谱法求浊音的基音周期

 

语音波形

0511.622.5335

一帧语音的倒谱

语音波形

0.511522.533.5

0.5

赳0

样点数

一帧语音

□50100150200250300390400

样点数

SO6

清音的倒谱

 

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_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);

fort=3:

NN

%dosomemedianfiltering

z=formant1(t-2:

t);

md=median(z);

formant2(t)=md;

end

fort=1:

NN-1

ift<=2formant(t)=formant1(t);

elseformant(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([0,500,-100,50])subplot(3,1,3);

xi=(1:

NN/2)*fs/NN;

plot(xi,formant(1:

NN/2));

title('平滑对数幅度谱');

xlabel('频率/Hz');

ylabel('幅度/dB');

%axis([0,5500,-80,0])

运行结果如图所示:

020406080100120140160180200220

样点数

频谱

50

B0

度-50

-100

05001000150020002500300035004000450050005500

频率/Hz

平滑对数幅度谱

五、结果分析与总结

对语音信号进行同态分析可得到语音信号的倒谱参数。

语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号的激励反映在倒谱上是同样周期的冲激,借此,可从倒谱波形中估计出基音周期。

对倒谱进行低时窗选,通过语音倒谱分析的最后一级,进行DFT后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振峰频率,对于平滑过的对数谱中的峰值进行定位,即可估计共振峰。

教师签名:

年月日

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1