语音信号的短时分析
- 格式:doc
- 大小:71.00 KB
- 文档页数:15
基于短时过零率的声学信号分析算法声学信号分析是指对声音信号进行数学处理和分析,以提取出有关声音特征和信息的过程。
其中,基于短时过零率的算法是一种常用的声学信号分析方法。
本文将探讨基于短时过零率的声学信号分析算法的原理、应用场景以及未来发展方向。
1. 短时过零率算法原理声音信号可以被视为一种连续的波形,其振幅在时间上发生变化。
短时过零率(Short-Time Zero Crossing Rate)算法是通过统计一个时间窗口内信号穿过零点的次数来实现声音的分析。
其基本原理是在一个时间窗口内计算信号穿过零点的次数并计算其平均值。
2. 短时过零率算法应用场景2.1 语音识别短时过零率算法可以用于语音识别任务中。
人的语音信号在不同发音的过程中具有不同的过零率,通过分析短时过零率的变化,可以提取出与发音特征相关的信息,进而实现对语音的识别和分析。
2.2 音乐特征提取音乐信号中包含丰富的节奏和音调信息,可以通过短时过零率算法来提取音乐的特征。
通过分析信号的过零率,可以了解音乐的起伏变化、节奏感以及音调变化等特征,有助于音乐风格分类、音乐推荐等应用。
2.3 声音质量评估声音的质量评估是一项重要的任务,尤其在音频编码和语音通信领域。
短时过零率算法可以作为评估声音质量的指标之一。
高过零率的信号通常意味着信号中存在噪音或失真,因此可以通过分析短时过零率的变化来评估声音的质量。
3. 基于短时过零率算法的技术改进虽然基于短时过零率的算法在声学信号分析中具有一定的应用效果,但也存在一些局限性。
未来的研究方向包括以下几个方面,以进一步改进该算法的准确性和鲁棒性:3.1 结合其他特征目前,短时过零率算法主要关注信号的能量变化,但忽略了其他关键特征的信息,如频谱特征和声调变化。
结合其他特征,如短时频谱特征和倒谱系数等,可以更全面地描述声学信号的特性,提高分析算法的效果。
3.2 引入机器学习方法机器学习算法在声学信号处理中有着广泛的应用。
专业的语音分析语音分析是一门专业领域,它研究和解析人类语音音频以获取信息并提供有关说话者、语言和语音的洞察。
这项技术在语音识别、情感识别、说话人认证等许多领域都有广泛的应用。
一、语音信号的基本分析方法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 ),可以有效的克服泄漏现象,具有更平滑的低通特性。
语音部分的分析方法有哪些
语音部分的分析方法有很多,下面列举了一些常用的方法:
1. 基频分析:通过分析声音信号中的周期性波动,确定声音的基频,用于提取声音的音高信息。
2. 短时能量分析:通过计算声音信号在短时段内的能量大小,实现对声音的强度分析。
3. 短时幅度谱分析:通过对声音信号进行FFT变换,将时域信号转换为频域信号,分析声音在不同频率上的幅度特性。
4. 倒谱分析:通过对声音信号的频谱进行对数变换,得到倒谱序列,用于分析声音的共振特征和声音的音色。
5. LPC(线性预测编码)分析:通过寻找一个线性预测模型,用于对声音信号进行预测和分析,常用于语音合成和语音识别。
6. MFCC(梅尔频率倒谱系数)分析:将声音信号的频谱特性转换为梅尔频率刻度,然后进行倒谱分析,用于语音识别和说话人识别。
7. 声谱图分析:通过将声音信号的频域信息绘制成二维图像,用于可视化声音
特性和分析声音的频率成分。
这些方法可以用于声音特性分析、语音合成、语音识别、说话人识别等领域。
不同的分析方法可以用于提取不同的声音特征,根据具体问题选择适合的方法进行分析。
语音信号处理实验报告——语音信号分析实验一.实验目的及原理语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理,并且语音合成的音质好坏和语音识别率的高低,都取决于对语音信号分析的准确性和精确性;贯穿语音分析全过程的是“短时分析技术”;因为从整体来看,语音信号的特性及表征其本质特征的参数均是随时间变化的,所以它是一个非平稳态过程,但是在一个短时间范围内一般认为在10~30ms的时间内,其特性基本保持不变,即相对稳定,可将其看做一个准稳态过程,即语音信号具有短时平稳性;所以要将语音信号分帧来分析其特征参数,帧长一般取为10ms~30ms;二.实验过程男声及女声蓝色为时域信号,红色为每一帧的能量,绿色为每一帧的过零率某一帧的自相关函数3.频域分析①一帧信号的倒谱分析和FFT及LPC分析②男声和女声的倒谱分析对应的倒谱系数:,,……对应的LPC预测系数:1,,,,,……原语音波形一帧语音波形一帧语音的倒谱③浊音和清音的倒谱分析④浊音和清音的FFT分析和LPC分析红色为FFT图像,绿色为LPC图像三.实验结果分析1.时域分析实验中采用的是汉明窗,窗的长度对能否由短时能量反应语音信号的变化起着决定性影响;这里窗长合适,En能够反应语音信号幅度变化;同时,从图像可以看出,En可以作为区分浊音和清音的特征参数;短时过零率表示一帧语音中语音信号波形穿过横轴零电平的次数;从图中可以看出,短时能量和过零率可以近似为互补的情况,短时能量大的地方过零率小,短时能量小的地方过零率较大;从浊音和清音的时域分析可以看出,清音过零率高,浊音过零率低;从男声女声的时域信号对比图中可以看出,女音信号在高频率分布得更多,女声信号在高频段的能量分布更多,并且女声有较高的过零率,这是因为语音信号中的高频段有较高的过零率;2.频域分析这里对信号进行快速傅里叶变换FFT,可以发现,当窗口函数不同,傅里叶变换的结果也不相同;根据信号的时宽带宽之积为一常数这一性质,可以知道窗口宽度与主瓣宽度成反比,N越大,主瓣越窄;汉明窗在频谱范围中的分辨率较高,而且旁瓣的衰减大,具有频谱泄露少的有点,所以在实验中采用的是具有较小上下冲的汉明窗;为了使频域信号的频率分辨率较高,所取的DFT及相应的FFT点数应该足够多,但时域信号的长度受到采样率和和短时性的限制,这里可以采用补零的办法,对补零后的序列进行FFT变换;从实验仿真图可以看出浊音的频率分布比清音高;3.倒谱分析通过实验可以发现,倒谱的基音检测与语音加窗的选择也是有关系的;如果窗函数选择矩形窗,在许多情况下倒谱中的基音峰将变得不清晰,窗函数选择汉明窗较为合理,可以发现,加汉明窗的倒谱基音峰较为突出;在典型的浊音清音倒谱对比中,理论上浊音倒谱基音峰应比较突出,而清音不出现这种尖峰,只是在倒谱的低时域部分包含关于声道冲激响应的信息;实验仿真的图形不是很理想;4.线性预测分析从实验中可以发现,LPC谱估计具有一个特点,在信号能量较大的区域即接近谱的峰值处,LPC谱和信号谱很接近;而在信号能量较低的区域即接近谱的谷底处,则相差比较大;在浊音清音对比中,可以发现,对呈现谐波特征的浊音语音谱来说这个特点很明显,就是在谐波成分处LPC谱匹配信号谱的效果要远比谐波之间好得多;在实验中,当P值增加到一定程度,预测平方误差的改善就不很明显了,而且会增加计算量,一般取为8~14,这里P取为10;5.基音周期估计①自互相关函数法②短时平均幅度差法③倒谱分析法共偏移92+32=124个偏移点16000/124=可以发现,上面三种方法计算得到的基音周期基本相同;。
语言学中的语音信号分析语音信号是人类信息传递中最重要的方式之一。
语音信号分析是语音学研究的重要基础,也是许多领域如语音识别、语音合成、说话人识别等研究的关键环节。
本文将详细介绍语音信号分析的概念、步骤、方法和应用,以及目前存在的问题和未来的发展方向。
一、语音信号分析的概念和步骤语音信号分析是指将语音信号转变为可被计算机处理和识别的形式。
其步骤一般包括分帧、加窗、时域特征提取、频域特征提取等。
下面将逐一介绍。
1.分帧语音信号是一系列时域波形,随着时间的推移,其幅度和频率也在不断变化。
为了方便后续计算处理,需要将长时域的语音信号分割成短时域的小段,每一段称为一帧。
帧的长度一般在20~40ms之间,相邻帧之间一般有20~50%的重叠。
2.加窗由于分帧后的语音信号段末端的数值不完整,会造成分析和处理的困难。
为了消除边界效应,在每一帧的两端加上窗函数。
窗函数的目的是将信号逐渐减小到零,避免过度的数据扰动,同时使得相邻帧之间的信号光滑连续,减小处理误差。
3.时域特征提取时域特征是指每一帧中的语音信号的幅度、能量、过零率、基音周期等,一般通过数字信号处理方法计算得到。
这些特征可以反映语音信号的时域变化情况,如音高、音强、音长等。
4.频域特征提取语音信号在频域上的特征也非常重要。
FFT算法可以将时域信号转换为频域信号,得到语音信号的频谱。
从频谱中可以提取出如功率谱密度、倒谱系数、线性预测系数等频域特征。
这些特征可以反映语音信号的谐波结构和共振峰分布。
二、语音信号分析的方法语音信号分析方法有很多种,下面介绍几种常用的方法。
1.基音周期提取法人类的语音信号中存在基频,也就是说,语音信号中存在固定的波形重复出现。
基音周期提取法就是通过求取信号的基频周期,来确定声音的音高。
基音周期提取法的难点在于基波周期受到噪声和非周期性成分的影响,误差很大。
2.线性预测法线性预测法是通过分析语音信号在经过声道传输后,所产生的声音变化,来判断不同声音的特征。
语音信号的短时分析一、实验目的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('加海明窗后的波形')。