基于MATLAB的语音信号的基音周期检测

合集下载

语音信号的自相关基音周期检测

语音信号的自相关基音周期检测

语音信号的自相关基音周期检测语音信号是一种人类最基本的交流方式,它包含人声的频率、强度和时间三个方面的信息。

语音信号的自相关和基音周期是语音信号分析中的重要技术,对于语音信号分析、识别、合成等应用有着积极的作用。

一、语音信号的自相关语音信号的自相关是指语音信号的样本与样本之间的相关性。

在语音信号中,相邻的样本之间一般都具有相关性,该相关性可以通过计算信号的自相关函数获得。

自相关函数描述了语音信号在不同延迟情况下的相似程度,也就是说,自相关函数可以反映语音信号的周期特征和基音周期。

二、语音信号的基音周期检测语音信号的基音周期是指人语中相邻两个基音周期之间的时间长度。

基音周期检测是一项关键的语音信号分析技术,在音素识别、语音合成、语音编码等领域应用广泛。

基音周期检测方法主要有三种:自相关法、FFT法和LP法。

自相关法是指通过计算信号与自身在不同延迟下的相似度,判断语音信号的基音周期。

具体来说,自相关法首先将语音信号进行预加重和分帧处理,然后计算每一帧的自相关函数,最后采用模板匹配的方法找到最强的周期峰值,从而得到基音周期。

FFT法则是将分帧后的语音信号进行傅里叶变换,提取频谱信息,并通过在频域滑动一个窗口,检测周期性的能量最大值,确定基音周期数。

LP法是通过线性预测,将语音信号分解成具有不同频率的谐波分量,然后利用实验数据验证模型,得到基音周期。

总的来说,不同的基音周期检测方法有其各自的优缺点。

自相关法较为简单但在噪声环境下准确度不高,FFT法可以检测到非周期性的基音,但精度不如自相关法,LP法精度较高但计算复杂度较大。

作为一门复杂的反演问题,语音信号的自相关和基音周期检测一直是语音处理研究中的重要问题,目前的研究主要集中在解决语音信号分析和识别中的实际问题和应用,为提高语音合成、语音编码等方面的应用水平提供技术支持。

语音信号处理 实验报告用修正的短时自相关检测语音的基音周期

语音信号处理  实验报告用修正的短时自相关检测语音的基音周期

语音信号处理课程实验报告专业班级通信学号姓名指导教师实验名称 用修正的短时自相关检测语音的基音周期 同组人 专业班级通信 学号 姓名 成绩 一、实验目的 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-基音周期估计

《语音信号处理》实验2-基音周期估计

华南理工大学《语音信号处理》实验报告实验名称:基音周期估计姓名:学号:班级:10级电信5班日期:2013年5 月15日1.实验目的本次试验的目的是通过matlab编程,验证课本中基音周期估计的方法,本实验采用的方法是自相关法。

2. 实验原理1、基音周期基音是发浊音时声带震动所引起的周期性,而基音周期是指声带震动频率的倒数。

基音周期是语音信号的重要的参数之一,它描述语音激励源的一个重要特征,基音周期信息在多个领域有着广泛的应用,如语音识别、说话人识别、语音分析与综合以及低码率语音编码,发音系统疾病诊断、听觉残障者的语音指导等。

因为汉语是一种有调语言,基音的变化模式称为声调,它携带着非常重要的具有辨意作用的信息,有区别意义的功能,所以,基音的提取和估计对汉语更是一个十分重要的问题。

由于人的声道的易变性及其声道持征的因人而异,而基音周期的范围又很宽,而同—个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,因而基音周期的精确检测实际上是一件比较困难的事情。

基音提取的主要困难反映在:①声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。

②声道共振峰有时会严重影响激励信号的谐波结构,所以,从语音信号中直接取出仅和声带振动有关的激励信号的信息并不容易。

③语音信号本身是准周期性的(即音调是有变化的),而且其波形的峰值点或过零点受共振峰的结构、噪声等的影响。

④基音周期变化范围大,从老年男性的50Hz到儿童和女性的450Hz,接近三个倍频程,给基音检测带来了一定的困难。

由于这些困难,所以迄今为止尚未找到一个完善的方法可以对于各类人群(包括男、女、儿童及不向语种)、各类应用领域和各种环境条件情况下都能获得满意的检测结果。

尽管基音检测有许多困难,但因为它的重要性,基音的检测提取一直是一个研究的课题,为此提出了各种各样的基音检测算法,如自相关函数(ACF)法、峰值提取算法(PPA)、平均幅度差函数(AMDF)法、并行处理技术、倒谱法、SIFT、谱图法、小波法等等。

自相关函数法基音周期提取(matlab版)

自相关函数法基音周期提取(matlab版)

自相关函数法基音周期提取(matlab版)function nmax=find_maxn(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))< p=""> jiaocha=ii;endii=ii+1;if ii==length(r) %没有找到符合要求的点jiaocha=1;endendif length(zer)>0 %检查是否存在零点if zer(1)endendr(1:jiaocha)=0; %祛除影响maxn=max(r); %找最大值temp=find(r==maxn);%返回第一个最大值nmax=temp(1);function jiyinzhouqi(filename,shift)%短时自相关分析%filename语音文件*.wav%zhouqi基音周期shift=10;[signal,fs]=wavread('f:/mywork/1.wav');shift=round(fs*shift); %帧移n1=fix(fs*0.97)+1; %分析起点970ms,帧长30msn2=fix(fs*1)+1;ii=1;for ii=1:(length(signal)-n1)/shift %分析次数if n2<length(signal)< p="">data=signal(n1:n2);N=n2-n1+1;R=zeros(1,N); %基音周期(n)多次分析数组for k=1:N-1for jj=1:N-kR(k)=R(k)+data(jj)*data(jj+k);endendvalue(ii)=find_maxn(R); %调用基音周期(n)分析函数n1=n1+shift; %移动帧n2=n2+shift;endend%figure(3)%plot(R);%axis([0,1000 -300 300])figure(1)stem(value);axis([0 length(value) 0 1000])len =length(value); %基音周期(n)多次分析数组长度aver=mean(value);index=find(abs((value-aver))>aver/5);value(index)=0; %去除大野点的影响len=len-length(index);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; %将野点置零,同时数组长度减一len=len-1;endendendfigure(2)stem(value);axis([0 length(value) 0 max(value)])Tp=sum(value)/len/fs %求基音周期(Tp)</length(signal)<></length(r))<>。

基于MATLAB的语音信号的基音周期检测

基于MATLAB的语音信号的基音周期检测

基于MATLAB的语音信号的基音周期检测摘要:MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。

MATLAB将要性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。

MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。

由于信号与系统课程的许多内容都是基于公式演算,而MATLAB 借助符号数学工具箱提供的符号运算功能,基本满足设计需要。

例如:解微分方程、傅里叶正反变换、拉普拉斯正反变换和Z正反变换等。

MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。

本次课程设计为语音信号的基音周期检测,采集语音信号,对语音信号进行处理,区分清音浊音,并通过对采样值进行滤波、分帧、求短时自相关函数,得到浊音的基音周期。

关键字:清音、浊音、基音周期、基音检测、自相关函数目录1 概述 (1)2 AMDF算法原理及实现 (1)2.1 AMDF算法源程序 (2)3 ACF算法原理及实现 (4)3.1 用短时平均能量进行清/浊音的判断 (4)3.2 自相关函数基音检测的原理 (6)3.3 算法实现及相关程序 (6)3.3.1 带通滤波 (7)3.3.2 取样与分帧 (7)3.3.3 短时能量分析 (8)3.3.4 自相关函数分析 (11)4 总结与心得体会 (13)参考文献 (13)1 概述基音周期检测也称为基频检测(Pitch Detection) ,它的目标是找出和声带振动频率完全一致的基音周期变化轨迹曲线,或者是尽量相吻合的轨迹曲线。

基音周期检测在语音信号的各个处理领域中,如语音分析与合成、有调语音的辨意、低速率语音压缩编码、说话人识别等都是至关重要的,它的准确性及实时性对系统起着非常关键的作用,影响着整个系统的性能。

基于MATLAB的语音信号时域特性分析_语音信号处理实验报告

基于MATLAB的语音信号时域特性分析_语音信号处理实验报告

南京信息工程大学 实验(实习)报告实验(实习)名称 基于MATLAB 的语音信号时域特性分析 实验(实习)日期 2013.4.18 得分 ___指导教师院电子与信息工程专业电子信息工程年级 班次 姓名 学号一、实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。

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

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

语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。

本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。

二、实验原理及实验结果1.窗口的选择通过对发声机理的认识,语音信号可以认为是短时平稳的。

在5~50ms 的范围内,语音频谱特性和一些物理特性参数基本保持不变。

我们将每个短时的语音称为一个分析帧。

一般帧长取10~30ms 。

我们采用一个长度有限的窗函数来截取语音信号形成分析帧。

通常会采用矩形窗和汉明窗。

图1.1给出了这两种窗函数在帧长N=50时的时域波形。

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

使用Matlab进行声音信号处理的基本技巧

使用Matlab进行声音信号处理的基本技巧

使用Matlab进行声音信号处理的基本技巧声音信号处理是一门重要的领域,它涵盖了音频合成、语音识别、音频修复等多个应用方向。

Matlab是一款功能强大的数学软件,也可以用于声音信号处理。

本文将介绍使用Matlab进行声音信号处理的基本技巧,包括声音读取、时域分析、频域分析、滤波和音频合成等内容。

1. 声音读取首先,我们需要将声音文件读取到Matlab中进行处理。

Matlab提供了`audioread`函数用于读取声音文件。

例如,我们可以使用以下代码读取一个wav格式的声音文件:```matlab[y, Fs] = audioread('sound.wav');```其中,`y`是声音信号的向量,每个元素代表一个采样点的数值;`Fs`是采样率,即每秒采样的次数。

通过这个函数,我们可以将声音文件以数字信号的形式加载到Matlab中进行后续处理。

2. 时域分析在声音信号处理中,常常需要对声音信号在时域上进行分析。

我们可以使用Matlab的绘图函数来展示声音信号的波形。

例如,以下代码可以绘制声音信号的波形图:```matlabt = (0:length(y)-1)/Fs;plot(t, y);xlabel('Time(s)');ylabel('Amplitude');title('Sound waveform');```这段代码中,`t`是时间轴,通过除以采样率,我们可以得到每个采样点对应的时间。

`plot`函数用于绘制声音信号的波形图,横轴表示时间,纵轴表示振幅。

通过这种方式,我们可以直观地观察声音信号的时域特征。

3. 频域分析除了时域分析,频域分析也是声音信号处理中常用的方法。

通过对声音信号进行傅里叶变换,我们可以得到声音信号在频域上的表示。

Matlab提供了`fft`函数用于进行傅里叶变换。

以下代码可以绘制声音信号的频谱图:```matlabN = length(y);f = (-N/2:N/2-1)/N*Fs;Y = fftshift(fft(y));plot(f, abs(Y));xlabel('Frequency (Hz)');ylabel('Magnitude');title('Sound spectrum');```在这段代码中,`N`是声音信号的长度,`f`是频率轴,通过调整`f`的取值范围可以实现将零频移动到中心位置。

实验二语音信号的基音周期提取最终报告

实验二语音信号的基音周期提取最终报告

实验二语音信号的基音周期提取一、实验目的1、熟练运用MATLAB软件的运用,学习通过MATLAB软件编程来进行语音信号的基因周期提取。

2、掌握语音信号的基音周期提取的方法,实现其中一种基频提取方法。

3、学会用自相关法进行语音信号的基因检测.二、实验仪器设备及软件HP D538、MATLAB三、实验原理浊音信号的自相关函数在基因周期的整数倍位置上出现峰值,而清音的自相关函数没有明显的峰值出现。

因此检测自相关函数是否有峰值就可以判断是清音还是浊音,而峰-峰值之间对应的就是基音周期。

影响从自相关函数中正确提取基音周期的最主要原因是声道响应。

当基音的周期性和共振峰的周期性混在一起时,被检测出来的峰值可能会偏离原来峰值的真实位置。

另外,在某些浊音中,第一共振频率可能会等于或低于基音频率.此时,如果其幅度很高,它就可能在自相关函数中产生一个峰值,而该峰值又可以同基音频率的峰值相比拟。

1、自相关函数对于离散的语音信号x(n),它的自相关函数定义为:R(k)=Σx(n)x(n-k),如果信号x(n))具有周期性,那么它的自相关函数也具有周期性,而且周期与信号x(n)的周期性相同。

自相关函数提供了一种获取周期信号周期的方法。

在周期信号周期的整数倍上,它的自相关函数可以达到最大值,因此可以不考虑起始时间,而从自相关函数的第一个最大值的位置估计出信号的基音周期,这使自相关函数成为信号基音周期估计的一种工具.2、短时自相关函数语音信号是非平稳的信号,所以对信号的处理都使用短时自相关函数。

短时自相关函数是在信号的第N 个样本点附近用短时窗截取一段信号,做自相关计算所得的结果Rm(k)=Σx(n)x(n-k)式中,n表示窗函数是从第n点开始加入。

3、算法通过对自相关基音检测原理的分析,考虑到检测准确度和检测速率2方面的因素,提出了算法实现方案,并对算法进行了Matlab编程实现。

算法包含6个功能模块:带通滤波、取样、分帧、短时能量分析、相关运算、基音检测。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于MATLAB的语音信号的基音周期检测摘要:MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。

MATLAB将要性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。

MATLAB在信号与系统中的应用主要包括符号运算和数值计算仿真分析。

由于信号与系统课程的许多内容都是基于公式演算,而MATLAB 借助符号数学工具箱提供的符号运算功能,基本满足设计需要。

例如:解微分方程、傅里叶正反变换、拉普拉斯正反变换和Z正反变换等。

MATLAB在信号与系统中的另一主要应用是数值计算与仿真分析,主要包括函数波形绘制、函数运算、冲击响应仿真分析、信号的时域分析、信号的频谱分析、系统的S域分析和零极点图绘制等内容。

本次课程设计为语音信号的基音周期检测,采集语音信号,对语音信号进行处理,区分清音浊音,并通过对采样值进行滤波、分帧、求短时自相关函数,得到浊音的基音周期。

关键字:清音、浊音、基音周期、基音检测、自相关函数目录1 概述 (1)2 AMDF算法原理及实现 (1)2.1 AMDF算法源程序 (2)3 ACF算法原理及实现 (4)3.1 用短时平均能量进行清/浊音的判断 (4)3.2 自相关函数基音检测的原理 (6)3.3 算法实现及相关程序 (6)3.3.1 带通滤波 (7)3.3.2 取样与分帧 (7)3.3.3 短时能量分析 (8)3.3.4 自相关函数分析 (11)4 总结与心得体会 (13)参考文献 (13)1 概述基音周期检测也称为基频检测(Pitch Detection) ,它的目标是找出和声带振动频率完全一致的基音周期变化轨迹曲线,或者是尽量相吻合的轨迹曲线。

基音周期检测在语音信号的各个处理领域中,如语音分析与合成、有调语音的辨意、低速率语音压缩编码、说话人识别等都是至关重要的,它的准确性及实时性对系统起着非常关键的作用,影响着整个系统的性能。

浊音信号的周期称为基音周期, 它是声带振动频率的倒数, 基音周期的估计称为基音检测。

基音检测是语音处理中的一项重要技术之一, 它在有调语音的辨意、低速率语音编码、说话人识别等方面起着非常关键的作用; 但在实现过程中, 由于声门激励波形不是一个完全的周期脉冲串, 而且声道的影响很难去除、基音周期的定位困难、背景噪声的强烈影响等一系列因素, 基音检测面临着很大的困难。

而自相关基因检测算法是一种基于语音时域分析理论的较好的算法。

本文在对AMDF、ACF基音检测算法基本原理进行分析的基础上,对此算法进行了深入的探讨,针对以往研究中存在的问题加以改进,给出了一种方便、快捷的检测方案。

综合考虑了检测准确度和检测速率两方面的因素,然后通过对一段具体的语音信号进行处理,较准确地得到浊音语音信号的基音周期。

2 AMDF算法原理及实现语音信号{s(n))的短时平均幅度差函数(AMDF)定义为:其中,w(m)是窗函数,尺是信号的平均值,因为语音信号的浊音段具有周期性,假设基音周期为p,则在浊音段,在k=p,2p,3p…将出现谷点,谷点间的距离即为基音周期。

与短时自相关函数一样,对周期性的浊音语音,也呈现与浊音语音周期相一致的周期特性,不过不同的是在周期的各个整数倍点上具有谷值特性而不是峰值特性,因而通过的计算同样可以确定基音周期。

而对于清音信号,却没有这种周期特性。

利用的这种特性,可以判定一段语音是浊音还是清音,并估计出浊音语音的基音周期。

由于计算函数只需要加、减和取绝对值运算,运算量较之短时自相关函数大大下降。

同时,函数在基音周期点的谷值比自相关函数的峰值更加尖锐,因此错判率相对较小,稳健性更高。

但是当语音信号的幅度快速变化时,函数的谷值深度会减小,从而影响基音估计的精度。

2.1 AMDF算法源程序AMDF波形图如图2-1所示。

y=wavread(C:\Documents and Settings\Administrator\桌面\yejianglong '.wav');y1=b(3500:6000);N=320;%选择的窗长,加N=320的矩形窗A=[];for k=1:320sum=0;for m=1:Nsum=sum+abs(y1(m)-y1(m+k-1));%计算自相关endA(k)=sum;ends=y(3500:10000);figure(1)subplot(211)plot(s)xlabel('样点')ylabel('幅度')axis([0,2500,-1,1]);subplot(212)plot(A)xlabel('延时k')ylabel('AMDF')axis([0,400,0,200]);图2-1 AMDF波形图由图2-1 AMDF波形图可知:平均幅度差函数在基音周期处表现为谷值,这些谷值之间的间隔的平均值就是所要求得的基音周期。

输入语音帧的平均幅度差函数的最小值发生在第l点,其值为O,我们可以设置一定的门限,得到低于此门限的局部最低点(不包含第1点)。

从图中,我们可以得到谷点的样本值分别为70、140、210,其间隔平均值为70。

因此对应的基音频率为:Fs/(70一1)=Fs/69=37000/69=536,这和采用自相关法的检测结果完全相同。

3 ACF算法原理及实现3.1 用短时平均能量进行清/浊音的判断语音信号{ x ( n) } 的某帧信号的短时平均能量En 的定义为:式中,w ( n) 为窗函数; N 为窗长。

令h( n) = w2 ( n) ,则有由此表明,窗口加权短时平均能量En 相当于将“语音平方”信号通过一个单位函数响应为h( n) 的线性滤波器的输出。

试验统计发现,语音浊音段的短时平均能量远远大于清音段的短时平均能量。

因此,短时平均能量En 的计算给出了区分清音段与浊音段的依据,即En (浊) > En (清) 。

根据En 由高到低的跳变可定出浊音变为清音语音的时刻, En 由低向高的跳变可定出清音变为浊音语音的时刻;而只有浊音才有基音周期,清音的基音周期为零。

故清浊音判断是基音检测的第一步。

该算法中窗口选择汉明窗,其定义为:选择汉明窗的理由是窗函数的选取原则为窗函数截取后的x ( n) 尽量是中间大两头小的光滑函数,冲激响应对应的滤波器具有低通特性。

从汉明窗的构成及频率响应特性上看, 汉明窗具有这种特性, 而矩形窗及汉宁窗则稍逊之。

汉明窗虽然主瓣最高(带宽大) ,但旁瓣最低(通带外的衰减大) , 可以有效地克服泄露现象,具有更好的低通特性。

故选择汉明窗而不选择别的窗函数,能使短时平均能量En 更能反映语音信号的幅度变化。

3.2 自相关函数基音检测的原理对于离散的数字语音信号序列x ( n) ,自相关函数定义如下:式中, k 为信号的延迟点数。

对于随机性信号序列或周期性信号序列,自相关函数定义为:自相关函数具有以下的性质:如果序列x ( n) 具有周期Np ,则其自相关函数也是同周期的周期函数。

即:x ( n) = x ( n + N p );则:R( k) = R ( k + N p ) 。

清音信号没有周期性,它的自相关函数也没有周期, R( k) 会随着k 的增大迅速衰减。

浊音信号具有准周期性,它的自相关函数R ( k) 具有与{ x ( m) } 相同的周期。

自相关法基音检测正是利用R ( k) 的这一性质对语音信号进行基音检测的。

3.3 算法实现及相关程序通过对自相关基音检测原理的分析, 考虑到检测准确度和检测速率2 方面的因素, 提出了算法实现方案, 并对算法进行了Matlab 编程实现。

算法包含6个功能模块: 带通滤波、取样、分帧、短时能量分析、相关运算、基音检测。

框图如图3-1所示。

图3-1 基因检测框图3.3.1 带通滤波该研究以采样频率为8kHz、精度为16 比特的wav 文件作为声源, 以网络录音机录制自己的一段语音。

因为语音信号包含非常丰富的谐波分量, 基音频率最低可达80Hz , 最高可达500Hz , 但基音频率大多数分布在100~200Hz 之间。

因此,浊音信号可能含有三四十次谐波分量, 而其基波分量往往不是最强的分量。

语音信号的第一共振峰通常在300~1000Hz 范围内, 即基音的2~8 次谐波成分比基波分量还要强。

为了提高检测的准确度, 算法中引入了一个60~500Hz 带通滤波模块滤除语音帧的高次谐波分量。

该算法中用音效编辑软件Cooledit提供的功能直接滤波, 方便快速, 它在保持语音信息的前提下, 可以大大减少谐波成分。

3.3.2 取样与分帧取样模块从以采样频率为8kHz 的语音信号中截取Lengt h (样点数) 长个样点值, 一般取样点数为帧长的整数倍即可, 程序中取了18000 个样点数进行分析。

分帧模块主要完成将取样模块中获得的语音样值点分为若干个语音帧, 算法中分析帧长30ms , 即每帧长为240 个样点。

然后用短时平均能量判断出浊音帧, 再对浊音帧进行自相关计算, 最后进行基音周期检测。

3.3.3 短时能量分析原始信号及其频谱波形如图3-2所示。

图3-2 原始信号及其频谱波形%原始信号[y,fs,nbits]=wavread ('C:\Documents and Settings\Administrator\桌面\yejianglong.wav');%把语音信号进行加载入Matlab 仿真软件平台中sound(y,fs,nbits); %回放语音信号n = length (y) ; %求出语音信号的长度Y=fft(y,n); %快速傅里叶变换subplot(2,1,1);plot(y);title('原始信号波形');grid;subplot(2,1,2);plot(abs(Y));title('原始信号频谱');grid;短时能量的函数由以下程序实现,短时能量曲线如图3-3所示。

图3-3 短时能量曲线%经滤波后波形N=240y=WA VREAD('C:\Documents and Settings\Administrator\桌面\yejianglong.wav'),[1 18000]);L=length(y)%30秒,每秒8000个点,一共240000个点LL=length(y)/N %一共1000帧%短时能量figure(1)F1 = enframe(y,200);eng = sum(F1.^2);plot(eng);xlabel('帧');ylabel('短时平均能量');title('短时能量')%短时平均幅度Mn=sum(abs(Y))/Nfigure(2)F2 = enframe(y,200);eng = sum(abs(F2));plot(eng);xlabel('帧');ylabel('短时平均幅度');title('短时平均幅度');短时平均幅度函数曲线如图3-4所示。

相关文档
最新文档