华南理工大学_语音信号实验二:基音周期估计
论文正文-语音信号的基音频率提取算法研究

前言语音信号的基音频率提取算法研究1前言基音是指发浊音时声带振动所引起的周期性,而声带振动频率的倒数就是基音周期。
基音周期具有时变性和准周期性,它的大小与个人声带的长短、厚薄、韧性和发音习惯有关,还与发音者的性别、年龄、发音时的力度及情感有关,是语音信号处理中的重要参数之一,它描述了语音激励源的一个重要特征。
基音周期的估计称为基音检测(Pitch Detection),基音检测的最终目标是找出和声带振动频率完全一致的基音周期变化轨迹曲线,如不可能则找出尽量相吻合的轨迹曲线。
然而由于人的声道的易变性及其声道特征的因人而异,而基音周期的范围又很宽,且同一个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,故实际中的基音周期的精确检测是一件比较困难的事情。
然而,尽管语音信号的基音检测有许多困难但由于它在语音信号处理中的重要作用,促使广大学者争相涉足该领域,提出了各种各样的基音检测算法。
2选题背景2.1基音检测技术的研究进展早在70年代,L.R.R等人就进行了自相关函数法检测语音信号的基音周期的研究工作,它是一种时域上的基音检测算法,算法的精确性高,计算量不大,是目前各种应用中最为常用的基音检测算法。
1967年,A.M.Noll提出用倒谱法(Cepstrum)检测语音信号的基音周期。
这是一个频域上的检测算法,这种方法检测基音周期精确度很高,抗噪性能好,主要的缺陷是计算量太大,要用到傅立叶变换和对数运算,不利于实现。
1972 年,J.D等提出简单逆滤波追踪法(SIFT)检测语音信号的基音周期,这是一种时域和频域相结合的算法,是一种精确度和计算量较为折中的算法,它利用逆滤波去除声道共振峰的影响,使基音信息更为突出。
1974 年,M.J.Ross等人提出平均幅度差函数法检测语音信号的基音周期,这是一种时域上的算法,也是最简单的基音检测算法,它只需在时域上进行简单的加减和少量的除法运算,运算量很小,但是很容易产生半基音和倍基音,目前还有很多人在语音信号的基音频率提取算法研究不断的提出改进的AMDF算法。
基音周期预测

专业班级组别成员实验内容:编程求解出各自声音信号的基音周期。
1 程序代码(或者软件流程图等)(1)function zhouqi=jiyinzhouqi(filename)%帧长和帧位移是重要的参数,位移是帧长的0~1/2%短时自相关分析%filename语音文件*.wav%zhouqi基音周期,以毫秒为单位表示[signal,fs]=wavread(filename); %用于得到声音文件的数据和采样率shift=0.02; %每次移动20毫秒shift=round(fs*shift); %帧移n1=fix(fs*0.01)+1; %分析起点0.01ms,帧长20msn2=fix(fs*0.03)+1;shift_count=fix((length(signal)-n1)/shift);value =zeros(1,shift_count); %存放每次移位后的帧的基音周期for ii=1:shift_count %分析次数if n2<length(signal) %防止溢出data=signal(n1:n2); %加窗,提取一帧数据N=n2-n1+1; %每一帧的长度R=zeros(1,N); %创建一个一行N列的矩阵for k=1:N-1 %求自相关序列for jj=1:N-kR(k)=R(k)+data(jj)*data(jj+k); %矩阵用于储存每次自相关的结果; endendvalue(ii)=find_maxn(R); %调用基音周期分析函数,求最大值所对应的位置,即基音周期n1=n1+shift; %移动帧,计算下一帧的基音周期n2=n2+shift;endendfigure(1)stem(value); %画出基因周期走势图axis([0 length(value) 0 1000])aver=mean(value); %基音周期的平均值,未去除野点value=value(logical(abs(value-aver)<=aver/5));%找出偏移均值超出均值的1/5的基音周期,将其去除len= length(value); %去除大野点后剩余的基音点数for jj=1:3:len/3 %中值平滑,滑动窗口宽度3,精度为中值1/4(剔除野点)average=(value(jj)+value(jj+1)+value(jj+2))/3;for kk=1:3if abs((value(jj-1+kk))-average)>average/4value(jj-1+kk)=0; %将野点置零,同时数组长度减一endendendvalue=value(( value~=0)); %出去所有野点后的基音周期数组len= length(value); %去除野点以后的基音点数figure(2)stem(value);axis([0 length(value) 0 max(value)])zhouqi=1000*sum(value)/len/fs; %求平均的基音周期,单位是毫秒(2) function nmax=find_maxn(r) %寻找峰值最大的n值及基音周期%r,自相关序列%maxn,为峰值最大的nzer=find(r==0); %找第一个零点如果存在jiaocha=0; %找第一近零点ii=1;while (jiaocha<=0)if(r(ii)>0 && r(ii+1)<0 && (ii+1)<length(r))jiaocha=ii;endii=ii+1;if ii==length(r) %没有找到符合要求的点jiaocha=1;endendif length(zer)>0 %检查是否存在零点if zer(1)<jiaocha %存在,则和jiaocha比较大小,用于祛除前点的对基音周期的查找带来的影响jiaocha=zer(1);endendr(1:jiaocha)=0; %祛除影响maxn=max(r); %找最大值temp=find(r==maxn); %返回第一个最大值nmax=temp(1);(3) function zhouqi=get_frq_frame(filename)%帧长和帧位移是重要的参数,位移是帧长的0~1/2%短时自相关分析%filename语音文件*.wav%zhouqi基音周期,以毫秒为单位表示[signal,fs]=wavread(filename);%用于得到声音文件的数据和采样率shift=0.02; %每次移动20毫秒shift=round(fs*shift); %帧移n1=fix(fs*0.01)+1; %分析起点0.01ms,帧长20msn2=fix(fs*0.03)+1;shift_count=fix((length(signal)-n1)/shift);value = zeros(1,shift_count); %存放每次移位后的帧的基音周期zhouqi = zeros(1,shift_count); %存放每次移位后的帧的基音周期for ii=1:shift_count %分析次数if n2<length(signal) %防止溢出data=signal(n1:n2); %加窗,提取一帧数据N=n2-n1+1; %每一帧的长度R=zeros(1,N);for k=1:N-1 %求自相关序列for jj=1:N-kR(k)=R(k)+data(jj)*data(jj+k);endendvalue(ii)=find_maxn(R); %调用基音周期分析函数,求最大值所对应的位置,即基音周期n1=n1+shift; %移动帧,计算下一帧的基音周期n2=n2+shift;zhouqi(ii) = 8000/value(ii);endendfor ii=1:length(zhouqi)if zhouqi(ii)==0zhouqi(ii) = [];endendplot(zhouqi);2 程序使用说明(1) function zhouqi=jiyinzhouqi(filename)① 函数基音周期是计算所采样的声音的平均基音周期的函数,函数使用加窗计算自相关函数的办法,通过帧移得到不同位置加窗信号的相关性,然后用矩阵R储存相对应的n2-n1+1个自相关值。
语音信号处理 实验报告用修正的短时自相关检测语音的基音周期

语音信号处理课程实验报告专业班级通信学号姓名指导教师实验名称 用修正的短时自相关检测语音的基音周期 同组人 专业班级通信 学号 姓名 成绩 一、实验目的 1.熟悉前一个实验程序以及中心削波的意义 2.用Matlab 实现用修正的短时自相关检测语音的基音周期。
3.分析修正的短时自相关在基音周期检测中的应用。
4.能够对程序进行重新编制。
二、实验原理 如果x(n)是一个周期为P 的信号,则其自相关函数也是周期为P 的信号,且在信号周期的整数倍处,自相关函数取最大值。
语音的浊音信号具有准周期性,其自相关函数在基音周期的整数倍处取最大值。
计算两相邻最大峰值间的距离,就可以估计出基音周期。
观察浊音信号的自相关函数图,其中真正反映基音周期的只是其中少数几个峰,而其余大多数峰都是由于声道的共振特性引起的。
因此为了突出反映基音周期的信息,同时压缩其他无关信息,减小运算量,有必要对语音信号进行适当预处理后再进行自相关计算以获得基音周期。
第一种方法是先对语音信号进行低通滤波,再进行自相关计算。
因为语音信号包含十分丰富的谐波分量,基音频率的范围分布在50~500Hz 左右,即使女高音升c 调最高也不会超过1kHz ,所以采用1kHz 的低通滤波器先对语音信号进行滤波,保留基音频率;再用2kHz 采样频率进行采样;最后用2~20ms 的滞后时间计算短时自相关,帧长取10~20ms ,即可估计出基音周期。
第二种方法是先对语音信号进行中心削波处理,再进行自相关计算。
本实验采用第二种方法。
且中心削波函数如式(3-1)所示: ……………………………………装………………………………………订…………………………………………线………………………………………()()0()()L L L L L L x x x x f x x x x x x x x ->⎧⎪=-≤≤⎨⎪+<⎩一般削波电平L x 取本帧语音最大幅度的60%~70%。
《语音信号处理》实验2-基音周期估计

华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。
2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。
②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。
③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。
④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。
由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。
尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。
语音信号处理复习华南理工.

语音信号处理复习第二章语音信号处理基础知识1,定义:(1)语音是指人们讲话时发出的话语,它是一种声音,具有声学特征的物理特性。
而它又是一种特殊的声音,是人们进行信息交流的声音,是组成语言的声音。
因此语音是语言和声音的组合体。
(2)语音是由人的发声器官发出的一种声波,它具有音色、音调、音强和音长。
①音色:是一种声音区别于另一种声音的基本特征②音调:指声音的高低,取决于声波的频率③音强:指声音的强弱,取决于声波的振幅④音长:指声音的长短,取决于发音时间的长短(3)任何语言都有语言的元音和辅音两种音素:元音:当声带振动发出的声音气流从喉腔、咽腔进入口腔从唇腔出去时,这些声腔完全开放,气流顺利通过。
一个重要的声学特性是共振峰。
辅音:由于通路的某一部分封闭起来或者受到阻碍,气流被阻不能畅通。
包括清音和浊音。
①浊音:声带振动②清音:声带不振动(4)人的听觉系统有两个重要的特性:①时频分析特性:人的耳蜗就像一个频谱分析仪,将复杂的信号分解成各种频率分量。
②听觉掩蔽效应:心理声学中的听觉掩蔽效应指在一个强信号附近,弱信号将变得不可闻,被掩蔽掉了。
掩蔽效应分为同时掩蔽和短时掩蔽。
2,语言信号生成的数学模型:①激励模型:在声门(声带)以下,称为“声门子系统”,它负责产生激励振动,是激励系统②声道模型:从声门到嘴唇的呼气通道是声道,是声道系统③辐射模型:语音从嘴唇辐射出去,则嘴唇以外是辐射系统3,语音信号的特性分析:(1)语音信号的时域波形和频谱特性:①时域波形:周期性,周期对应声带振动的频率,即基音频率。
②频谱特性:共振峰特性。
元音频谱有明显的几个凸起点,它们出现的频率就是共振峰频率。
清辅音频谱峰点之间的间隔是随机的,没有周期分量。
(2)语谱图:语谱图是一种三维图谱,它是表示语音频谱随时间变化的图形,其纵轴为频率,横轴为时间,任一给定频率成分在给定时刻的强弱用相应点的灰度或色调的浓淡来表示。
语谱图中显示了大量的与语音的语句特性相关的信息,它综合了频谱图和时域波形的特点,明显地显示出语音频谱随时间的变化情况,或者说是一种动态的频谱。
南理工 语音信号处理期末考试重点整理

3、语音信号产生的数字模型
3. 语音信号产生的数字模型
下图是一 个完整的语音信号产生的数字模型:
第02章基础知识—10
3、语音信号产生的数字模型
由此模型框图,我们可将语音信号看成 准周期序列或随机噪声序列作为激励的 线性非移变系统的输出,此模型可分为 三个部分:激励模型、声道模型、辐射 模型 激励模型 根据发浊音和发清音的机理 又分为:(a)浊音激励 (b)清音激励
第02章基础知识—12
由图可见,它是一个低通滤波器。频率分析表明,其幅度谱按12 dB/倍 频程的速率衰减。如果将其表示为Z变换的全极模型的形式,有 G(z)=1/ (1-g1z-1)(1-g2z-1) 如果g1和g2的值都接近于1,则由此形成的激励信号频谱很接近于声门 脉冲的频谱。显然,上式表明斜三角波可描述为一个二阶极点的模型。需 要指出,不同人、不同语音,其声门脉冲的形状不一定相同,但在语音合 成中对其形状要求不很苛刻,只要其傅里叶变换有近似的特性就可以了。
3
第2章 语音信号基础知识
1.
声音是一种波,振动频率在20~20 000 Hz之间。 20HZ以下:次声波 20 000HZ以上:超声波
第02章基础知识—4
1、人类的语言器官
1. 人类的语言器官
人体发音器官—肺、气管、喉(包括声
带)和声道 肺是语音产生的能源所在; 声带为产生语音提供主要的激励源; 声道是指声门至嘴唇的所有器官:咽、 鼻腔 、口腔等,它们具有非均匀截面, 且随时间变化,起共鸣器(或谐振器) 的作用。
第02章基础知识—7
Hale Waihona Puke 、语音信号产生过程语音的两个重要声学特性:基音频率,共振峰 浊音的基音频率(F0):由声带的尺寸、特性和声带所受张力决 定,其值等于声带张开和闭合一次的时间的倒数。人类基 音频率的范围在80~500 Hz左右。 共振峰(Fn , n=1,2,...):声道是一个谐振腔,它放大声音气流 的某些频率分量而衰减其他频率分量,被放大的频率我们 称之为共振峰或共振峰频率。 声道具有的一组共振峰,声道的频谱特性主要反映出这些共 振峰的不同位置以及各个峰的频带宽度 。共振峰及其带宽 取决于声道某一瞬间的形状和尺寸,因而不同的语音对应 于一组不同的共振峰参数。实际应用中,头三个共振峰最 重要,越多越精确。
语音基音周期估计基础

语⾳基⾳周期估计基础先说下为什么要检测语⾳基⾳周期(1)基⾳决定了语⾳的⾳调。
汉语是⼀种有调的语⾳,同⼀句话,语调不同,意义差别⾮常⼤,准确的检测语⾳的基⾳周期,有利于“理解”话语中的意思。
(2)语⾳合成、声调控制等⾳效果制作的需要。
再说下什么是基⾳周期按照经典的语⾳激励模型,声带周期性的张开和闭合所需要的时间,就是指基⾳的周期(假如声带某次从开启到闭合的时间为4ms,那么,它的基⾳频率为250Hz)。
很显然,要准确的检测基⾳周期,需要尽可能的先去掉声道模型和辐射模型的⼲扰。
⼀般来说,男性的基⾳频率约为50Hz~250Hz,⼥性的基⾳频率约为:100Hz~500Hz,所以我们通常把基⾳频率的上限限制为500Hz,同时,⼜由于50Hz对应的是交流电的⼯频频率,难以去掉它的噪声⼲扰,所以这个频率检测时也不予考虑。
综上,基⾳频率的检测范围在60Hz~500Hz或者70Hz~500Hz⽐较好。
基⾳周期检测的困难(1)有些⾳的发⾳不具有声带的震动,通常这些⾳为过渡⾳。
(2)基波的分量往往不是最强的分量,容易把⼀些浊⾳的谐波当做基波(这是因为经过声道激励后,⼀些谐波分量变的⽐较强)(3)基⾳周期变化范围⼤,从⽼年男⼈的50Hz到⼉童和⼥性的500Hz,给检测带来了⼀定的困难。
基⾳周期检测预处理(1)端点检测(多媒体核⼼技术群中在2015-04-18⽇已经讲过了)(2)带通滤波(60Hz~500Hz),尽可能去掉声道模型和辐射模型的⼲扰(去掉50Hz是为了避免⼯频噪声的⼲扰)基⾳周期估计的⽅法(1)平均幅度差法 语⾳的浊⾳,通常会呈现出⼀定的周期性,这个周期性与基⾳的周期⼀致,通过计算平均幅度差,来找到这个周期,就可以得到基⾳的周期。
(2)相关法 同样的道理,通过计算语⾳信号的⾃相关特性,并寻找相应的周期性,也可以得到语⾳的基⾳周期(3)倒谱法 使⽤倒谱处理,使得脉冲激励与声道响应进⾏分离,再查找最⼤值,就可以得到语⾳的基⾳周期(4)线性预测法 这类⽅法是先利⽤线性预测法,得到预测系数,再⽤这些系数去重建信号,这样就弱化了声道响应的影响。
华南理工大学数字信号处理实验报告2(曹老师)

一、实验目的1、加深对离散信号的DFT的理解;2、在MATLAB中实现FFT算法。
二、实验原理N点序列的DFT和IDFT变换定义式如下:,,利用旋转因子具有周期性,可以得到快速算法(FFT)。
在MATLAB中,可以用函数和计算N点序列的DFT 正、反变换。
三、实验内容1、对连续的单一频率周期信号按采样频率采样,截取长度N分别选N =20和N =16,观察其DFT结果的幅度谱。
实验代码:k=8;n1=[0:1:19];xa1=sin(2*pi*n1/k);subplot(2,2,1)plot(n1,xa1)xlabel('t/T');ylabel('x(n)');xk1=fft(xa1);xk1=abs(xk1);subplot(2,2,2)stem(n1,xk1)xlabel('k');ylabel('X(k)'); n2=[0:1:15]; xa2=sin(2*pi*n2/k); subplot(2,2,3) plot(n2,xa2)xlabel('t/T');ylabel('x(n)'); xk2=fft(xa2);xk2=abs(xk2); subplot(2,2,4) stem(n2,xk2)xlabel('k');ylabel('X(k)');实验结果:5101520-1-0.500.51t/Tx (n )05101520kX (k )51015-1-0.500.51t/Tx (n )kX (k )2 2N 点实数序列⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧-=+=n N n n Nn N n x 其它,012,...,2,1,0),192cos(21)72cos()(ππN=64。
用一个64点的复数FFT 程序,一次算出N n x DFT k X 2)]([)(=,并绘出)(k X 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华南理工大学《语音信号处理》实验报告
实验名称:基音周期估计
姓名:
学号:
班级:11级电信6班
日期:2014年3 月
1.实验目的
本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。
2. 实验原理
1、基音周期
基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。
②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。
③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。
④基音周期变化范围大,从老年男性的50Hz 到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。
由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。
尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。
2、自相关函数
对于离散的语音信号x(n),它的自相关函数定义为:
R(k)=Σx(n)x(n-k),
如果信号x(n))具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)的周期性相同。
自相关函数提供了一种获取周期信号周期的方法。
在周期信号周期的整数倍上,它的自相关函数可以达到最大值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具。
3、短时自相关函数
语音信号是非平稳的信号,所以对信号的处理都使用短时自相关函数。
短时自相关函数是在信号的第N个样本点附近用短时窗截取一段信号,做自相关计算所得的结果
Rm(k)=Σx(n)x(n-k)
式中,n表示窗函数是从第n点开始加入。
3. 实验数据及平台
本实验所采用的数据语音文件isolated word.WAV,平台是MATLAB2010。
4. 实验过程(步骤)
1、读取wav文件;
2、利用自相关法进行基音周期估计;
3、去除野点。
5. 实验结果及讨论
1、读取wav文件
function pitch
x=wavread('E:\yuuyin\isolated word.WAV'); %读取声音文件
figure(1);
stem(x,'.'); %显示声音信号的波形
得到的波形如下:
2、利用自相关法进行基音周期估计
n=160; %取20ms的声音片段,即160个点
for m=1:length(x)/n; %对每一帧求短时自相关数
for k=1:n;
Rm(k)=0;
for i=(k+1):n;
Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n);
end
end
p=Rm(10:n); %防止误判,去掉前边10个数值较大的点[Rmax,N(m)]=max(p); %读取第一个自相关函数的最点
end %补回前边去掉的10个点
N=N+10;
T=N/8; %算出对应的周期
figure(2);
stem(T,'.');
axis([0 length(T) 0 11]);
xlabel('帧数(n)');
ylabel('周期(ms)');
title('各帧基音周期');
结果如下图:
由图中可以看出基音周期大约为10ms,但是图中存在太多的野点,为此,需要对此进行进一步的处理,即去除野点。
3、去除野点
T1= medfilt1(T,5); %去除野点
figure(3);stem(T1,'.');axis([0 length(T1) 0 11]);
xlabel('帧数(n)');ylabel('周期(ms)');title('各帧基音周期');
得到的结果如下:
6. 实验总结
短时自相关函数法基音检测的主要原理是通过比较原始信号和它移位后的信号之间的类似性来确定基音周期,如果移位距离等于基音周期,那么两个信号具有最大类似性。
基于自相关函数的算法是基音周期估计的常用方法,特别适用于噪声环境下的基音提取。
自相关函数在基音周期处表现为峰值,相邻两个峰值之间的间隔即为一个基音周期。
但是计算自相关函数的运算量是很大的,其原因是计算机进行乘法运算非常费时。
为此可以对中心削波函数进行修正,采用三电平中心削波的方法。
三电平削波的自相关函数的计算很简单,因为削波后的信号的取值只有-1、0、1三种情况,因而不需作乘法运算而只需要简单的组合逻辑便可以。
7. 实验代码
function pitch
x=wavread('E:\yuuyin\isolated word.WAV');%读取声音文件figure(1);
stem(x,'.'); %显示声音信号的波形
n=160; %取20ms的声音片段,即160个样点
for m=1:length(x)/n; %对每一帧求短时自相关数
for k=1:n;
Rm(k)=0;
for i=(k+1):n;
Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n);
end
end
p=Rm(10:n); %防止误判,去掉前边10个数值较大的点[Rmax,N(m)]=max(p); %读取第一个自相关函数的最大点end %补回前边去掉的10个点
N=N+10;
T=N/8; %算出对应的周期
figure(2);
stem(T,'.');
axis([0 length(T) 0 11]);
xlabel('帧数(n)');
ylabel('周期(ms)');
title('各帧基音周期');
T1= medfilt1(T,5); %去除野点
figure(3);
stem(T1,'.');
axis([0 length(T1) 0 11]);
xlabel('帧数(n)');
ylabel('周期(ms)');
title('各帧基音周期');。