华南理工大学_语音信号实验二:基音周期估计
- 格式:docx
- 大小:167.48 KB
- 文档页数:6
前言语音信号的基音频率提取算法研究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%。
华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。
2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。
基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。
因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。
由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。
基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。
②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。
③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。
④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。
由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。
尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。
语音信号处理复习第二章语音信号处理基础知识1,定义:(1)语音是指人们讲话时发出的话语,它是一种声音,具有声学特征的物理特性。
而它又是一种特殊的声音,是人们进行信息交流的声音,是组成语言的声音。
因此语音是语言和声音的组合体。
(2)语音是由人的发声器官发出的一种声波,它具有音色、音调、音强和音长。
①音色:是一种声音区别于另一种声音的基本特征②音调:指声音的高低,取决于声波的频率③音强:指声音的强弱,取决于声波的振幅④音长:指声音的长短,取决于发音时间的长短(3)任何语言都有语言的元音和辅音两种音素:元音:当声带振动发出的声音气流从喉腔、咽腔进入口腔从唇腔出去时,这些声腔完全开放,气流顺利通过。
一个重要的声学特性是共振峰。
辅音:由于通路的某一部分封闭起来或者受到阻碍,气流被阻不能畅通。
包括清音和浊音。
①浊音:声带振动②清音:声带不振动(4)人的听觉系统有两个重要的特性:①时频分析特性:人的耳蜗就像一个频谱分析仪,将复杂的信号分解成各种频率分量。
②听觉掩蔽效应:心理声学中的听觉掩蔽效应指在一个强信号附近,弱信号将变得不可闻,被掩蔽掉了。
掩蔽效应分为同时掩蔽和短时掩蔽。
2,语言信号生成的数学模型:①激励模型:在声门(声带)以下,称为“声门子系统”,它负责产生激励振动,是激励系统②声道模型:从声门到嘴唇的呼气通道是声道,是声道系统③辐射模型:语音从嘴唇辐射出去,则嘴唇以外是辐射系统3,语音信号的特性分析:(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)线性预测法 这类⽅法是先利⽤线性预测法,得到预测系数,再⽤这些系数去重建信号,这样就弱化了声道响应的影响。
一、实验目的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]。
语音识别技术是指计算机系统能够根据输入的语音识别出其代表的具体意义,进而完成相应的功能。
一般的方法是事先让用户朗读有一定数量文字、符号的文档,通过录音装置输入、存储到计算机,作为声音样本。
以后,当用户通过语音识别系统操作计算机时,用户的声音通过转换装置进入计算机内部,语音识别技术便将用户输入的声音与事先存储好的声音样本进行对比。
系统根据对比结果,输入一个它认为最“象”的声音样本序号,就可以知道用户刚才念的声音是什么意义,进而执行此命令。
因此通过语音识别技术,计算机可以“听”懂人类的语言。
语音合成是人机语声的一个重要组成部分,语音合成技术赋予机器“人工嘴巴”的功能,即解决让机器说话问题。
是将计算机自己产生的或外部输入的文字信息,比如文本文件内容、WORD文件内容等文字信息,按语音处理规则转换成语音信号输出,即使计算机流利地读出文字信息,使人们通过“听”就可以明白信息的内容。
也就是说,使计算机具有了“说”的能力,能够将信息“读”给人类听。
这种将文字转换成语音的技术称之为文语转换技术,简称TTS( Text to Speech)技术,也称为语音合成技术。
语音信号的基音周期提取方法研究摘要自从人类发明了语言以后,它便成为了人们交流思想和沟通感情最便捷和有效的工具。
当下,人类已经进入了一个电子信息化的时代,用更加现代化的手段来处理和研究语音,能够使人们更有效率的生成、传递、储存、获得和运用语音信息,这一点对与促进时代的进步与科技的发展具有十分重要的意义。
语音信号的频率域特征分析是语音识别的基础,其中基音周期则是最重要的特征参数,基音周期是指人们发出浊音时声带振动的周期,基音周期是语音信号研究的基础,也是语音信号处理的第一步。
本文对基音周期的提取方法进行了研究,同时也对频率参数和倒谱的用途以及提取方法进行详细的介绍。
用Microsoft Visual Studio2012设计了一个绘制语音波形、计算频谱和倒谱并能显示频谱图和倒谱图的程序,实验结果表明倒谱法能很好的提取语信号的基音周期。
关键词语音信号频率域特征分析基音周期倒谱法AbstractTitleStudy on the extraction method of pitch of speech signalAbstractSince man invented the language, it has become the most convenient and effective tool for people to exchange ideas and communicate feelings. Today, mankind has entered the era of electronic information, with more modern means to process and study of speech, can make people more efficient generation, transfer, storage, access, and use of voice information, this to have and to promote the progress of science and technology in the era of the development of a very important significance.Frequency domain characteristics of the speech signal analysis is the basis of speech recognition, the pitch is the most important characteristic parameters, the pitch is refers to the people a voiced sound when the vocal fold vibration cycle, and Chinese pitch changes of different patterns of tone. Cepstrum extraction method is the most effective method of pitch. In this paper, several frequency domain parameters and their uses are described in detail. With VS 2012 designed a rendering speech waveform, calculate the spectrum and display spectrum and calculation of Cepstrum and display the cepstrum program. Experimental results show that the pitch period of the cepstrum method of extraction of speech signals.Keywords: Speech signalFrequency domain featureanalysisperiodCepstrum method1绪论1.1 语音信号处理研究历史及现状早在一两千年之前,人们就已经开始了研究语音信号的行为。
华南理工大学《语音信号处理》实验报告
实验名称:基音周期估计
姓名:
学号:
班级: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('各帧基音周期');。