语音信号的短时分析

合集下载

基于短时过零率的声学信号分析算法

基于短时过零率的声学信号分析算法

基于短时过零率的声学信号分析算法声学信号分析是指对声音信号进行数学处理和分析,以提取出有关声音特征和信息的过程。

其中,基于短时过零率的算法是一种常用的声学信号分析方法。

本文将探讨基于短时过零率的声学信号分析算法的原理、应用场景以及未来发展方向。

1. 短时过零率算法原理声音信号可以被视为一种连续的波形,其振幅在时间上发生变化。

短时过零率(Short-Time Zero Crossing Rate)算法是通过统计一个时间窗口内信号穿过零点的次数来实现声音的分析。

其基本原理是在一个时间窗口内计算信号穿过零点的次数并计算其平均值。

2. 短时过零率算法应用场景2.1 语音识别短时过零率算法可以用于语音识别任务中。

人的语音信号在不同发音的过程中具有不同的过零率,通过分析短时过零率的变化,可以提取出与发音特征相关的信息,进而实现对语音的识别和分析。

2.2 音乐特征提取音乐信号中包含丰富的节奏和音调信息,可以通过短时过零率算法来提取音乐的特征。

通过分析信号的过零率,可以了解音乐的起伏变化、节奏感以及音调变化等特征,有助于音乐风格分类、音乐推荐等应用。

2.3 声音质量评估声音的质量评估是一项重要的任务,尤其在音频编码和语音通信领域。

短时过零率算法可以作为评估声音质量的指标之一。

高过零率的信号通常意味着信号中存在噪音或失真,因此可以通过分析短时过零率的变化来评估声音的质量。

3. 基于短时过零率算法的技术改进虽然基于短时过零率的算法在声学信号分析中具有一定的应用效果,但也存在一些局限性。

未来的研究方向包括以下几个方面,以进一步改进该算法的准确性和鲁棒性:3.1 结合其他特征目前,短时过零率算法主要关注信号的能量变化,但忽略了其他关键特征的信息,如频谱特征和声调变化。

结合其他特征,如短时频谱特征和倒谱系数等,可以更全面地描述声学信号的特性,提高分析算法的效果。

3.2 引入机器学习方法机器学习算法在声学信号处理中有着广泛的应用。

语音信号处理第3章-语音信号分析

语音信号处理第3章-语音信号分析

0.54 0.46cos[2n /( N 1)], 0 n ( N 1) (n) 0, n else
信息科学与工程学院 东南大学
预处理
窗函数的形状和长度对短时参数特征影响 很大 1.窗口形状
时域:要减小时间窗两端的坡度,使窗口边缘 两端不引起急剧变化而平滑过渡到零,这样可 以使截取出的语音波形缓慢降为零,减小语音 帧的截断效应; 频域:要有较窄的3dB带宽以及较大的旁瓣衰 减(较小的边带最大值)。这里只以典型的矩形 窗和汉明窗为例进行比较。
0
20
40
60
80
100
120
140
160
0.1 0.05 0 -0.05 -0.1
0
20
40
60
80 k = -21
100
120
140
160
信息科学与工程学院
东南大学
0.1 0.05 0 -0.05 -0.1
0
20
40
60
80
100
120
140
160
0.1 0.05 0 -0.05 -0.1
0
20
信息科学与工程学院 东南大学
矩形窗与汉明窗的比较
窗类型
矩形窗 汉明窗
旁瓣峰值
-13 -41
主瓣宽度
4π/N 8π/N
最小阻带衰减
-21 -53
汉明窗的主瓣宽度比矩形窗大一倍,即带宽约增 加一倍,同时其带外衰减也比矩形窗大一倍多, 汉明窗比矩形窗更为合适。因此,对语音信号的 短时分析来说,窗口的形状是至关重要的。
信息科学与工程学院 东南大学
数字化和预处理
经过数字化和预处理过程,语音信号就已 经被分割成一帧一帧的加过窗函数的短时 平稳信号 对每一个短时语音帧,利用数字信号处理 技术来提取语音特征参数。

专业的语音分析

专业的语音分析

专业的语音分析语音分析是一门专业领域,它研究和解析人类语音音频以获取信息并提供有关说话者、语言和语音的洞察。

这项技术在语音识别、情感识别、说话人认证等许多领域都有广泛的应用。

一、语音信号的基本分析方法1. 语音信号的采样和量化语音信号是通过麦克风等设备进行采样和量化得到的。

采样是指对连续的语音信号进行离散化处理,将其划分为若干个时间段,并记录在离散的时间点上。

量化是指对每个时间点上的采样值进行测量,将其表示为一个数字。

2. 语音信号的预加重预加重是为了弥补语音信号在传输过程中由于声音高频部分衰减较快而导致的信息损失。

预加重通过对语音信号进行高通滤波来增强高频部分的能量。

3. 语音信号的短时分析短时分析是将语音信号划分为若干个时间窗口,并在每个时间窗口内计算语音信号的能量、频谱等特征。

常用的方法有短时傅里叶变换、短时自相关函数等。

4. 语音信号的特征提取特征提取是从短时分析得到的语音信号中提取出有用的特征。

常用的特征包括梅尔频率倒谱系数(MFCC)、线性预测编码(LPC)系数等。

这些特征可以用来表示语音信号的声音特性和语音内容。

5. 语音信号的模型建立与识别建立语音信号的模型是为了将语音信号与特定的说话者、语言或语音内容关联起来。

常用的模型包括隐马尔科夫模型(HMM)、高斯混合模型(GMM)等。

识别是指通过比较语音信号的特征与模型之间的匹配度从而确定说话者、语言或语音内容。

二、语音分析的应用领域1. 语音识别语音识别是将语音信号转换为文本或命令的过程。

它在智能助理、语音输入、语音翻译等领域有广泛的应用。

通过语音识别技术,人们可以通过语音与计算机进行交互,提高工作效率和用户体验。

2. 情感识别语音信号中包含着说话者的情感信息。

通过语音分析技术,可以识别出语音信号中的情感类别,如愤怒、高兴、焦虑等。

情感识别在人机交互、心理健康评估等领域有着重要的应用价值。

3. 说话人认证说话人认证是通过语音信号判断说话者的身份。

语音信号采集与时频域分析正文

语音信号采集与时频域分析正文

第一章引言语音信号是一种非平稳的时变信号,它携带着各种信息。

在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。

语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。

语音信号分析可以分为时域和频域等处理方法。

语音信号可以认为在短时间内(一般认为在 10~30ms 的短时间内)近似不变,因而可以将其看作是一个准稳态过程, 即语音信号具有短时平稳性。

任何语音信号的分析和处理必须建立在“短时”的基础上, 即进行“短时分析”。

时域分析:直接对语音信号的时域波形进行分析,提取的特征参数有短时能量,短时平均过零率,短时自相关函数等。

频域分析:对语音信号采样,并进行傅里叶变换来进行频域分析。

主要分析的特征参数:短时谱、倒谱、语谱图等。

本文采集作者的声音信号为基本的原始信号。

对语音信号进行时频域分析后,进行加白噪声处理并进行了相关分析,设计滤波器并运用所设计的滤波器对加噪信号进行滤波, 绘制滤波后信号的时域波形和频谱。

整体设计框图如下图所示:图1.1时频域分析设计图图1.2加噪滤波分析流程图第二章 语音信号时域分析语音信号的时域分析可直接对语音信号进行时域波形分析,在此只只针对语音信号的短时能量、短时平均过零率、短时自相关函数进行讨论。

2.1窗口选择由人类的发生机理可知,语音信号具有短时平稳性,因此在分析讨论中需要对语音信号进行加窗处理进而保证每个短时语音长度为10~30ms 。

通常选择矩形窗和哈明窗能得到较理想的“短时分析”设计要求。

两种窗函数的时域波形如下图2.1所示:samplew (n )samplew (n )图2.1 矩形窗和Hamming 窗的时域波形矩形窗的定义:一个N 点的矩形窗函数定义为如下{1,00,()n Nw n ≤<=其他(2.1)哈明窗的定义:一个N 点的哈明窗函数定义为如下0.540.46cos(2),010,()n n NN w n π-≤<-⎧⎨⎩其他= (2.2)这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发现(如图2.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB ),会导致泄漏现象;哈明窗的主瓣宽8*pi/N ,旁瓣峰值低(-42.7dB ),可以有效的克服泄漏现象,具有更平滑的低通特性。

语音信号短时分析.ppt

语音信号短时分析.ppt
❖ 如果窗的起点是n=0,短时过零率Z为
Z01 2N n 0 1Sg (Sw n (n) )Sg (Sw n (n1))
将Z应用于语音信号分析中
❖ 发浊音时,声带振动,因而声门激励是以此音调频 率为基频来使声道共振;尽管有若干个共振峰,但 其能量的分布集中于低于3KHz的频率范围内。
❖ 发清音时声带不振动,声道某部分阻塞产生类白噪 声激励,通过声道后其能量集中在比浊音时更高的 频率范围内。
0
-50
-100
-150 0
0.2
0.4
0.6
0.8
Normalized Frequency ( rad/sample)
Frequency domain 40
30
20
10
0
-10
-20 0
0.2
0.4
0.6
0.8
Normalized Frequency ( rad/sample)
语音信号的短时能量(语音信号强度 的度量参数)
❖ 在语音识别中正确的决定所要识别语音的起点、终 点对于提高识别率往往是重要的。
❖ 对于数字移动通信的手持机编译码器,在较长的无 声段应降低发射功率以节约其电池的消耗。
Hale Waihona Puke 语音有声和无声❖ 对于已经判定为语音段的部分,尚需决定其清音或 浊音,无论对于语音识别还是低速语音编译码器这 都是很重要的。这些问题可以概括为无声/有声判决 以及更细致的S/U/V判决。
N 1
Hann
w (n ) 0 .5 (1 c 2 os n( )0 ) ,n N 1 N 1
❖ 不同的窗口选择(形状、长度),将决定短时平均能量的性质。什么 样的窗口,其短时平均能量才能更好的反映语音信号的振幅变化哪?

2第二章_语音信号分析

2第二章_语音信号分析
16
N=51 N=101 N=201 N=401
矩形窗 汉明窗
矩形窗比汉明窗具有显著的平滑效果; 矩形窗比汉明窗具有显著的平滑效果;随着窗的宽度的增 加,平滑效果越来越显著。 平滑效果越来越显著。
17
三.短时平均幅度函数和能量函数的作用 短时平均幅度函数和能量函数的作用
(1)区分清/浊音: (1)区分清/浊音: 区分清 对应浊音; 对应清音。 En、Mn大,对应浊音; En、Mn小,对应清音。 (2)在信噪比高的情况下,能进行有声/ (2)在信噪比高的情况下,能进行有声/无声判决 在信噪比高的情况下 无声时,背景噪声的En、Mn小; 无声时,背景噪声的E 有声时, 显著增大。判决时可设置一个门限。 有声时,En、Mn显著增大。判决时可设置一个门限。 (3)大致能定出浊音变为清音的时刻,或反之。 (3)大致能定出浊音变为清音的时刻,或反之。 大致能定出浊音变为清音的时刻
14
二、短时平均幅度
1.平均幅度分析的依据:清音段幅度小; 1.平均幅度分析的依据:清音段幅度小;浊音段幅度较大 平均幅度分析的依据 2.短时平均幅度函数 2.短时平均幅度函数
M
n
=
m = −∞

+∞
x(m )w (n − m ) =
m = −∞

+∞
h(n) =| w(n) |
x(m ) h(n − m )
1
2.1 语音信号的短时处理方法
A/D of some common audio signals
Frequency scope Telephone Wide band
Broadcasting
Sampling frequency 8 khz 16 khz 37. 37.8 khz 44. 44.1 khz

语音部分的分析方法有哪些

语音部分的分析方法有哪些

语音部分的分析方法有哪些
语音部分的分析方法有很多,下面列举了一些常用的方法:
1. 基频分析:通过分析声音信号中的周期性波动,确定声音的基频,用于提取声音的音高信息。

2. 短时能量分析:通过计算声音信号在短时段内的能量大小,实现对声音的强度分析。

3. 短时幅度谱分析:通过对声音信号进行FFT变换,将时域信号转换为频域信号,分析声音在不同频率上的幅度特性。

4. 倒谱分析:通过对声音信号的频谱进行对数变换,得到倒谱序列,用于分析声音的共振特征和声音的音色。

5. LPC(线性预测编码)分析:通过寻找一个线性预测模型,用于对声音信号进行预测和分析,常用于语音合成和语音识别。

6. MFCC(梅尔频率倒谱系数)分析:将声音信号的频谱特性转换为梅尔频率刻度,然后进行倒谱分析,用于语音识别和说话人识别。

7. 声谱图分析:通过将声音信号的频域信息绘制成二维图像,用于可视化声音
特性和分析声音的频率成分。

这些方法可以用于声音特性分析、语音合成、语音识别、说话人识别等领域。

不同的分析方法可以用于提取不同的声音特征,根据具体问题选择适合的方法进行分析。

第三章_语音信号的特征分析

第三章_语音信号的特征分析
浊音时能量集中于较低频率段内,具有较低的过 零率,而清音时能量集中于较高频率段内,具有 较高的过零率。
浊音和清音情况下典型的平均过零率的直方图
直方图的分布形状与高斯分布很吻合,而且浊音时 的短时平均过零率的均值为14过零/10ms,清音时 短时过零率的均值为47过零/10ms。注意到浊音和 清音有一个交叠区域,此时很难分清是浊音还是清 音,尽管如此,平均过零率仍可以粗略的判断清音 和浊音。
35语音信号的短时自相关函数假设一段加窗语音信号非零区间为n0n1的自相关函数称为语音信号的短时自相关函数自相关函数是偶函数在l0处取得最大值且值为短时能量如果sn是周期的则rl也是周期的且周期等于sn的周期36浊音和清音的自相关函数图浊音浊音清音37半周期错误2倍周期错误由自相关函数图判断浊音的周期38为了减少这种错误可以先将语音信号进行中心削波处理再求自相关函数39中心削波处理前后的语音信号及其自相关函数40短时自相关函数的特点浊音是周期信号浊音的短时自相关函数也呈现明显的周期性自相关函数的周期就是浊音信号的周清音接近于随机噪声请音的短时自相关函数不具有周期性且随着l的增大迅速减小
0
-50
-100
-150 0
40 30 20 10
0 -10 -20
0
0.2
Fre0q.u4ency do0m.6ain
0.8
Normalized Frequency ( rad/sample)
0.2
0.4
0.6
0.8
Normalized Frequency ( rad/sample)
不同的窗选择,将决定短时语音分析结果的好坏
数据率(kB/s) (未压缩)
频率范围
8
300~3400 Hz
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

语音信号的短时分析一、实验目的1.在理论学习的基础上,进一步地理解和掌握语音信号短时分析的意义,短时时域分析的基本方法。

2.进一步理解和掌握语音信号短时平均能量函数及短时平均过零数的计算方法和重要意义。

二、实验原理及方法一定时宽的语音信号,其能量的大小随时间有明显的变化。

其中清音段(以清音为主要成份的语音段),其能量比浊音段小得多。

短时过零数也可用于语音信号分析中,发浊音时,其语音能量约集中于3kHz以下,而发清音时,多数能量出现在较高频率上,可认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数,因而,对一短时语音段计算其短时平均能量及短时平均过零数,就可以较好地区分其中的清音段和浊音段,从而可判别句中清、浊音转变时刻,声母韵母的分界以及无声与有声的分界。

这在语音识别中有重要意义。

三、实验仪器微型计算机,Matlab软件环境四、实验内容1.上机前用Matlab语言完成程序编写工作。

2.程序应具有加窗(分帧)、计算、以及绘制曲线等功能。

3.上机实验时先调试程序,通过后进行信号处理。

4.对录入的语音数据进行处理,并显示运行结果。

5.依据曲线对该语音段进行所需要的分析,并作出结论。

6.改变窗的宽度(帧长),重复上面的分析内容。

五、预习和实验报告要求1.预习课本有关内容,理解和掌握短时平均能量函数及短时平均过零数函数的意义及其计算方法。

2.参考Matlab有关资料,设计并编写出具有上述功能的程序。

六、上机实验报告要求:1.报告中,实验目的、实验原理、实验步骤、方法等格式和内容的要求与其它实验相同。

2.画出求得的、曲线,注明语音段和所用窗函数及其宽度。

阐述所作分析和判断的过程,提出依据,得出判断结论。

七、思考题1.语音信号短时平均能量及短时平均过零数分析的主要用途是什么?2.窗的宽度(帧长)的改变,对的特性产生怎样的影响?附:所用语音信号文件名为one.wavMatlab编程实验步骤:1.新建M文件,扩展名为“.m”,编写程序;2.选择File/Save命令,将文件保存在F盘中;3.在Command Window窗中输入文件名,运行程序;Matlab部分函数语法格式:读wav文件:x=wavread(`filename`)数组a及b中元素相乘: a.*b创建图形窗口命令:figure绘图函数:plot(x)坐标轴:axis([xmin xmax ymin ymax])坐标轴注解:xlabel(`…`) ylabel(`…`)图例注解:legend( `…`)一阶高通滤波器:y=filter([1-0.09375],1,x)分帧函数:f=enframe(x,len,inc)x为输入语音信号,len指定了帧长,inc指定帧移,函数返回为n×len的一个矩阵,每一行都是一帧数据。

[x]=wavread('3.wav');figure;subplot(4,1,1);plot(x);axis([1 length(x) -1 1]);ylabel('Speech');enhance=filter([1-0.9375],1,x);FrameLen=240;FrameInc=80;yframe=enframe(x,FrameLen,FrameInc);amp1=sum(abs(yframe),2);subplot(4,1,2);plot(amp1);axis([1 length(amp1) 0 max(amp1)]);ylabel('Energy');legend('amp1=∑│x│');amp2=sum(abs(yframe.*yframe),2);subplot(4,1,3);plot(amp2);axis([1 length(amp2) 0 max(amp2)]);ylabel('Energy');legend('amp1=∑│x*x│');%zcr=zeros(size(yframe,1),1)delta=0.02%for i=1:size(yframe,1) x=yframe(i,:) for j=1:length(x)-1 if x(j)*x(j+1)<0 & abs(x(j)-x(j+1))>delta% zcr(i)=zcr(i)+1 end endendtmp1=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);subplot(4,1,4);plot(zcr);axis([1 length(zcr) 0 max(zcr)]);ylabel('ZCR');legend('zcr');[x]=wavread('3.wav');figure;subplot(4,1,1);plot(x);axis([1 length(x) -1 1]);ylabel('Speech');enhance=filter([1-0.9375],1,x); FrameLen=240;FrameInc=80;yframe=enframe(x,FrameLen,FrameInc); amp1=sum(abs(yframe),2);subplot(4,1,2);plot(amp1);axis([1 length(amp1) 0 max(amp1)]); ylabel('Energy');legend('amp1=∑│x│');amp2=sum(abs(yframe.*yframe),2); subplot(4,1,3);plot(amp2);axis([1 length(amp2) 0 max(amp2)]);ylabel('Energy');legend('amp1=∑│x*x│');zcr=zeros(size(yframe,1),1);delta=0.02for i=1:size(yframe,1);a=yframe(i,:)for j=1:length(a)-1if a(j).*a(j+1)<0 & abs(a(j)-a(j+1))>deltazcr(i)=zcr(i)+1endendend%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);subplot(4,1,4);plot(zcr);axis([1 length(zcr) 0 max(zcr)]);ylabel('ZCR');legend('zcr');function f=enframe(x,win,inc)%ENFRAME split signal up into (overlapping) frames: one per row. F=(X,WIN,INC) %% F = ENFRAME(X,LEN) splits the vector X up into% frames. Each frame is of length LEN and occupies% one row of the output matrix. The last few frames of X% will be ignored if its length is not divisible by LEN.% It is an error if X is shorter than LEN.%% F = ENFRAME(X,LEN,INC) has frames beginning at increments of INC % The centre of frame I is X((I-1)*INC+(LEN+1)/2) for I=1,2,...% The number of frames is fix((length(X)-LEN+INC)/INC)%% F = ENFRAME(X,WINDOW) or ENFRAME(X,WINDOW,INC) multiplies % each frame by WINDOW(:)% Copyright (C) Mike Brookes 1997%% Last modified Tue May 12 13:42:01 1998%% VOICEBOX home page:/hp/staff/dmb/voicebox/voicebox.html%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This program is free software; you can redistribute it and/or modify% it under the terms of the GNU General Public License as published by% the Free Software Foundation; either version 2 of the License, or% (at your option) any later version.%% This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details.%% You can obtain a copy of the GNU General Public License from% ftp:///pub/gnu/COPYING-2.0 or by writing to% Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%nx=length(x);nwin=length(win);if (nwin == 1)len = win;elselen = nwin;endif (nargin < 3)inc = len;endnf = fix((nx-len+inc)/inc);f=zeros(nf,len);indf= inc*(0:(nf-1)).';inds = (1:len);f(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));if (nwin > 1)w = win(:)';f = f .* w(ones(nf,1),:);End语音信号的谱分析及应用[x]=wavread('3.wav');figure;subplot(4,1,1);plot(x);axis([1 length(x) -1 1]);ylabel('Speech');enhance=filter([1-0.9375],1,x);FrameLen=240;FrameInc=80;yframe=enframe(x,FrameLen,FrameInc);amp1=sum(abs(yframe),2);subplot(4,1,2);plot(amp1);axis([1 length(amp1) 0 max(amp1)]);ylabel('Energy');legend('amp1=∑│x│');amp2=sum(abs(yframe.*yframe),2);subplot(4,1,3);plot(amp2);axis([1 length(amp2) 0 max(amp2)]);ylabel('Energy');legend('amp1=∑│x*x│');%zcr=zeros(size(yframe,1),1)delta=0.02%for i=1:size(yframe,1) x=yframe(i,:) for j=1:length(x)-1 if x(j)*x(j+1)<0 & abs(x(j)-x(j+1))>delta% zcr(i)=zcr(i)+1 end endendtmp1=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);subplot(4,1,4);plot(zcr);axis([1 length(zcr) 0 max(zcr)]);ylabel('ZCR');legend('zcr');[x]=wavread('3.wav');figure;subplot(4,1,1);plot(x);axis([1 length(x) -1 1]);ylabel('Speech');enhance=filter([1-0.9375],1,x); FrameLen=240;FrameInc=80;yframe=enframe(x,FrameLen,FrameInc); amp1=sum(abs(yframe),2);subplot(4,1,2);plot(amp1);axis([1 length(amp1) 0 max(amp1)]); ylabel('Energy');legend('amp1=∑│x│');amp2=sum(abs(yframe.*yframe),2); subplot(4,1,3);plot(amp2);axis([1 length(amp2) 0 max(amp2)]); ylabel('Energy');legend('amp1=∑│x*x│');zcr=zeros(size(yframe,1),1);delta=0.02for i=1:size(yframe,1);a=yframe(i,:)for j=1:length(a)-1if a(j).*a(j+1)<0 & abs(a(j)-a(j+1))>deltazcr(i)=zcr(i)+1endendend%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);subplot(4,1,4);plot(zcr);axis([1 length(zcr) 0 max(zcr)]);ylabel('ZCR');legend('zcr');function f=enframe(x,win,inc)%ENFRAME split signal up into (overlapping) frames: one per row. F=(X,WIN,INC)% F = ENFRAME(X,LEN) splits the vector X up into% frames. Each frame is of length LEN and occupies% one row of the output matrix. The last few frames of X% will be ignored if its length is not divisible by LEN.% It is an error if X is shorter than LEN.% F = ENFRAME(X,LEN,INC) has frames beginning at increments of INC% The centre of frame I is X((I-1)*INC+(LEN+1)/2) for I=1,2,...% The number of frames is fix((length(X)-LEN+INC)/INC)% F = ENFRAME(X,WINDOW) or ENFRAME(X,WINDOW,INC) multiplies % each frame by WINDOW(:)nx=length(x);nwin=length(win);if (nwin == 1)len = win;elselen = nwin;endif (nargin < 3)inc = len;endnf = fix((nx-len+inc)/inc);f=zeros(nf,len);indf= inc*(0:(nf-1)).';inds = (1:len);f(:) = x(indf(:,ones(1,len))+inds(ones(nf,1),:));if (nwin > 1)w = win(:)';f = f .* w(ones(nf,1),:);End语音信号倒谱与复倒谱的分析clc;clear;tic,[y,fs]=wavread('speech_10k.wav');L=length(y);fw=y.*hamming(L);r=real(log(fft(fw,L)))pfw=cceps(fw);rpfw=rceps(fw);z=rpfw(1:30);p=pfw(31:L)logz=real(exp(fft(z,L)));logp=real(fft(p));subplot(3,2,1);plot(y);title('原始波形')subplot(3,2,3);plot(pfw);title('复倒谱')subplot(3,2,5);plot(rpfw);title('实倒谱')subplot(3,2,6);plot(logz);title('倒谱域滤波后的对数幅度谱') subplot(3,2,4);plot(r);title('对数幅度谱')subplot(3,2,2);plot(fw);title('加海明窗后的波形')。

相关文档
最新文档