《语音信号处理》实验2-基音周期估计
- 格式:doc
- 大小:70.00 KB
- 文档页数:7
语音信号的自相关基音周期检测语音信号是一种人类最基本的交流方式,它包含人声的频率、强度和时间三个方面的信息。
语音信号的自相关和基音周期是语音信号分析中的重要技术,对于语音信号分析、识别、合成等应用有着积极的作用。
一、语音信号的自相关语音信号的自相关是指语音信号的样本与样本之间的相关性。
在语音信号中,相邻的样本之间一般都具有相关性,该相关性可以通过计算信号的自相关函数获得。
自相关函数描述了语音信号在不同延迟情况下的相似程度,也就是说,自相关函数可以反映语音信号的周期特征和基音周期。
二、语音信号的基音周期检测语音信号的基音周期是指人语中相邻两个基音周期之间的时间长度。
基音周期检测是一项关键的语音信号分析技术,在音素识别、语音合成、语音编码等领域应用广泛。
基音周期检测方法主要有三种:自相关法、FFT法和LP法。
自相关法是指通过计算信号与自身在不同延迟下的相似度,判断语音信号的基音周期。
具体来说,自相关法首先将语音信号进行预加重和分帧处理,然后计算每一帧的自相关函数,最后采用模板匹配的方法找到最强的周期峰值,从而得到基音周期。
FFT法则是将分帧后的语音信号进行傅里叶变换,提取频谱信息,并通过在频域滑动一个窗口,检测周期性的能量最大值,确定基音周期数。
LP法是通过线性预测,将语音信号分解成具有不同频率的谐波分量,然后利用实验数据验证模型,得到基音周期。
总的来说,不同的基音周期检测方法有其各自的优缺点。
自相关法较为简单但在噪声环境下准确度不高,FFT法可以检测到非周期性的基音,但精度不如自相关法,LP法精度较高但计算复杂度较大。
作为一门复杂的反演问题,语音信号的自相关和基音周期检测一直是语音处理研究中的重要问题,目前的研究主要集中在解决语音信号分析和识别中的实际问题和应用,为提高语音合成、语音编码等方面的应用水平提供技术支持。
专业班级组别成员实验内容:编程求解出各自声音信号的基音周期。
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%。
基音周期语音"#$%&自相关 ’ 倍线性逆 !"#有无声低通及峰值 抽取滤波器插值判 决滤波检 测无声 抽取模型参数无声无声检测器 图 ( 简化逆滤跟踪算法原理框图文章编号!!$$%&$%’$"($$-#$+&$$,!&$,一种基音周期估计方法陈洪立$中国铁通萍乡分公司#江西 萍乡 556777%摘 要!基音是语音信号中一个极为重要的参数! 基音周期的估计在语音编码"语音合成和语音识 别中有着广泛的 应 用# 本 文 介 绍了 一 种 极为 重 要 的 !"#$$!%&’(%)%*+ %,-*./* )%(0*. 0.123%,4 简 化 逆 滤波 跟 踪%基音周期估计算法#并对该算法进行了仿真# 仿真结果表明#!"#$ 基因周期估计算法具有较好的估 计性能!关键词!基音周期#语音信号处理#简化逆滤波跟踪基音周期的估计方法大致可以分为三类)(*%(& 波形估计法" 直接由语音波形来估计基音周!" !"期 ! 分 析 出 波 形 上 的 周 期 峰 值 ! ’//012&$数据减少法’3403&等"包括 并 行 处 理 法 基音是指发浊音时声带振动所引起的周期性!而 基音周期是指声带振动频率的倒数" 基音的提取和估 计是语音信号处理中一个十分重要的问题!尤其是对 汉语更是如此" 因为汉语是一种有调语言!基音的变 化模式成为声调!它携带着非常重要的具有辨意作用 的信息" 自从语音信号的研究以来!基音周期估计一 直是个重要的研究课题!为此提出了很多方法! 然而 这些方法都有局限性#迄今为止! 尚未找到一个完善 的方法可以适用于不同的讲话者$ 要求和环境! 这是 因为基音提出有许多困难)(*"基音提取的主要困难反映在)+*%(&声门激励信号 并不是一个完全的周期序列" 在语音的头$尾部并不 具有声带振动那样的周期性!特别是清音和浊音之间 的过渡帧很难判断它们是否是周期性的" +&很难从语 音信号中去除声道的影响!直接取出仅和声带振动有 关的激励信号!例如声道共振峰有时会严重影响激励 信号的谐波结构" ,&在浊音段很难精确地确定每个基 音周期的起止位置!这是因为语音信号本身是准周期 性的’即音调是变化的&!同时!波形的峰以及过零受 共振峰结构$噪声等的影响" -&基音周期变化范围大! 从老年男性的 .$%& 到女童的 ’$$%&!接近三倍频程! 给基音检测带来一定的困难"+& 相关处理法" 计算语音信号的短时相关函数!根据相关函数的周期性来获得基音周期的估计!常见 的有自相关函数法’54671&$ 平均振幅差分函数法 ’4538&$简化逆滤波法’9:87&等",& 变化法" 将语音信号变换到频域或者倒谱域 来估计基音周期!比如倒谱法’2;/&"其中相关处理法因为其抗波形相位失真能力强! 且在硬件处理上的结构简单而被广泛应用! 为此!着 重分析相关处理法中的 9:87 基音周期估计法"$ " %&’( 基音周期估计算法简化逆滤波器跟踪算法是相关处理法进行基音提取的一种现代化版本" 这种方法首先抽取声道模型参数!利用这些参数对原信号进行逆滤波!从预测误差中 得到音源序列!之后再用相关法求得基音周期)(<+*"收稿日期!!""#$"%$&’图 ) 原始语音样本的信号波形图 + 数字低通滤波器的频率特性图 / 滤波后的语音信号波形图 * 残差信号波形工作过程为""# 信号经过 "#$%& 取样后$ 通过 ’((%& 的数字 低通滤波器$其目的是滤除声道谱中声道响应部分的 影响$使峰值检测更加容易%)& 进行 * 倍抽取$使采样率降低 * 倍$这是因为 激励序列的宽度小于 "$%&$所以用 )$%& 的采样频率 足够’当然后面需要进行 * 倍的插值$以恢复原来的 采样率%+& 对抽取后的信号进行线性逆滤波处理$ 同时滤波器是 *( 阶的$图 + 描绘了滤波器的频率特性% 滤 波后的信号波形如图 / 所示% 比较图 ) 和图 / 可以看 出$滤波后的语音信号由于去除了因声道引起高频分 量而显得更加平滑$周期性更为明显% 此后$进行了逆 滤波处理$得到的残差信号波形如图 * 所示$ 逆滤波 后的信号频谱更加平坦了$ 周期性已经非常明显$由 波形就可清楚地辨认出每个周期的起止位置% 之后是 残差信号的自相关函数$波形描绘在图 9 中% 最后对 自相关函数波形进行峰值检测$ 获得基音周期的估 提取信号模型参数 (,-. 参数&$ 检测出峰值及其位 计% 检测到的峰值序列以及基音周期序列见表 "% 由 置$便可以得到基音周期% 逆滤波器能使频谱平坦化$ 是一种简化的低成本频谱平滑器%/& 最后进行有0无声判决%在基音周期的估计中$广泛采用语音波形或误差 信号波形的低通滤波$因为这种低通滤波对提高基音周期估计精度具有良好的效果% 低 通滤波在除去高阶共振峰影响的同时$还可以弥补自 相关函数时间分辨率的不足% 在使用了线性滤波预测 误差的自相关函数的基音提取中$时间分辨率的弥补 显得尤其重要%表中结果可知$基音周期的估计值为 :8(56% 至此$完 成 了 ;<=3 算 法 的 仿 真 工 作 $ 仿 真 结 果 令 人 满 意 % !" !"#$ 这里我们对简化逆滤波跟踪算法进行了仿真$软件环 境选用 123,24% 仿真中$选取一段长为 )((56 的男 性语音作为样本$该样本的采样率为 ))7"$%&% 图 ) 描 绘了这段语音的信号波形$ 波形有明显的周期性$可以粗略估计其周期约为 (8("6$即 "(56%图 ) 自相关函数信号波形表 0 峰值位置以及基音周期(单位 23% 峰值点 $/( 0’/( 01/( $)/( *(/* ($/( "’/* "1/( ))/* 基音周期 1/’1/’ +/& 1/’ 1/’ 1/’ 1/’ 1/’ 1/’ 峰值点 +(( 1$/* &’/* &1/* 0’)/* 00(/$ 0$$/* 0*’/$ 0*1/* 基音周期+/& 1/’ 1/’ 1/’ +/& 1/’ 1/’ 1/’ 1/’ 峰值点 0()/* 0"(/* 0)$/* 0+’/* 0+1/* 01)/* 0&(/( 基音周期 1/’ 1/’ 1/’ 1/’ 1/’ 1/’ 1/0!" !"论文介绍了一种语音信号处理中常用的基音周期估计方法" 即简化逆滤波跟踪算法) 在详细分析4567 算法的基础上"选取一段语音样本"对该算法进行了计算机仿真"仿真结果表明"该算法确实具有良 好的估计性能# 算法处理过程简单"易于工程化实现" 说明该算法有很强的实用性# 我们下一步要开展的工 作就是在此基础上"利用 4567 基音周期算法"进行语 音变速不变调技术的研究#参考文献8%9 胡航!语音信号处理!哈尔滨!哈尔滨工业大学 出版社",’’’8,9 陈永彬!语音信号处理!上海!上海交通大学出 版社"%&1&!上接第 !"页" 决用户在使用电信业务中的困难或 江西电信 % 件$互联互通问题 %.% 计算%&江西铁通 %件$互联互通问题 %.% 计算%"江西联通 % 件& 江西移 动 $ 件"手机经销商 $ 件’疑惑"以取得用户的谅解# 对于电信业务经营者明显涉嫌违反电信条例和电信服务标准"侵害用户利益的 用户申诉"向相关企业发函进行立案调查有 %’ 件"企 业及时回复 %’ 件"及时回复率 %’’-# 经核查"确系企 业有责任的案件有 + 件"占立案申诉的 +’-" 其中有$ 季度申诉总量比上季度增加了 $* 件" +(- # 正 式 立 案 数 比 上 季 度 增 加 了 ( 件 " %**-#上升了上升 了。
语⾳基⾳周期估计基础先说下为什么要检测语⾳基⾳周期(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. 观察语音信号的时域波形特点,总结其规律。
答:1)清音段:能量低,过零率高,波形特点有点像随机的噪声。
这部分信号常与语音的辅音段对应。
2)浊音段:能量高,过零率地,波形具有周期特点。
所谓的短时平稳性质就是处于这个语音浊音段中。
3)过渡段:一般是指从辅音段向元音段信号变化之间的部分。
信号变化快,是语音信号处理中最复杂、困难的部分。
2.总结清音b/p/m/f/d/t/n/l/g/k/h/j/q/x//z/c/s/zh/ch/sh/r/共21个的短时幅值、短时过零率和自相关函数的规律,估算这21个清音的平均短时幅值和平均短时过零率;答:加矩形窗的21个清音的平均短时幅值和平均短时过零率为下表:清音音节平均短时幅值平均短时过零率b 2.126 1.000p 0.706 9.100m 2.427 5.000f 0.685 1.500d 0.817 9.667t 1.168 1.000n 1.150 4.176l 2.084 6.200g 0.150 24.333k 0.959 7.333h 0.629 21.857j 0.129 13.000q 0.184 36.909x 0.168 21.400z 0.173 6.200c 0.785 7.294s 0.158 17.000zh 0.203 31.500ch 0.237 27.535sh 0.182 28.692r 1.814 5.5333. 总结浊音a/o/e/i/u/v/ao/ai/ei/ou/an/en/in/ang/eng/ong/ing/共17个的短时幅值、短时过零率和自相关函数的规律,估算这17个浊音的平均短时幅值和平均短时过零率,从自相关函数上估算这17个浊音的基音周期;答:浊音能量高,短时幅值也比较高,短时过零率比较低,由于浊音有一定的准周期性,所以自相关函数有比较明显的峰值和周期性。
浊音音节平均短时幅值平均短时过零率基音周期a 3.662 0.643 57o 2.948 0.184 71e 2.531 0.148 59i 1.693 0.061 60u 1.300 0.032 61v 1.081 0.024 66ao 2.000 0.123 71ai 2.307 0.121 57ei 1.828 0.074 67ou 0.294 0.000 67an 1.500 0.061 58en 1.827 0.073 54in 2.257 0.118 56ang 0.591 0.009 65eng 1.473 0.053 56ong 1.712 0.059 64ing 0.494 0.014 714. /r/、/m/、/n/ 从这几个音素的自相关函数图形判断为“清音”还是“浊音”,若为浊音估算其基音周期;答:(1)/r/: 自相关函数具有周期性,基音周期为67(样本点数)(2)/m/: 自相关函数具有周期性,基音周期为67(样本点数)(3)/n/ : 自相关函数具有周期性,基音周期为59(样本点数)可以看出/r/、/m/、/n/这几个因素的自相关函数图形有准周期性,并且有比较明显的峰值,所以为浊音。
语音信号处理实验报告——语音信号分析实验一.实验目的及原理语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理,并且语音合成的音质好坏和语音识别率的高低,都取决于对语音信号分析的准确性和精确性;贯穿语音分析全过程的是“短时分析技术”;因为从整体来看,语音信号的特性及表征其本质特征的参数均是随时间变化的,所以它是一个非平稳态过程,但是在一个短时间范围内一般认为在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=可以发现,上面三种方法计算得到的基音周期基本相同;。
语音信号处理实验报告专业:电子信息工程班级:电子信息二班姓名:学号:指导教师:杨立东目录实验一特征提取 (3)一、实验目的: (3)二、实验原理: (3)三、实验内容 (3)程序: (3)实验二基音周期估计 (9)一、实验目的 (9)二、实验原理 (9)三、实验内容 (10)程序: (10)实验三倒谱的获取与应用 (13)一、实验目的 (13)二、实验原理 (13)三、实验内容 (14)程序 (14)实验四 HMM的训练 (17)一、实验目的 (17)二、实验原理 (17)三、实验内容 (17)程序 (17)实验总结 (20)实验一语音信号的特征提取一、实验目的:1、了解语音信号处理基本知识,语音信号的生成的数学模型。
2、理解和掌握语音信号的特征提取。
二、实验原理:语音信号随时间变化的频谱特性可以用语谱图直观的表示,语谱图的纵坐标对应频率,横坐标对应时间,而图像的黑白度对应于信号的能量。
因此声道的谐振频率在图上就表示成为黑带,浊音部分则以出现条纹图形为其特征,这是因为此时的时域波形有周期性,而在浊音的时间间隔内图形显得很致密。
三、实验内容Matlab编程实验步骤:1.新建M文件,扩展名为“.m”,编写程序;2.选择File/Save命令,将文件保存在F盘新建文件夹中;3.运行程序;程序:语谱图clear all;[x,sr]=wavread('welcome.wav'); %sr为采样频率if (size(x,1)>size(x,2)) %size(x,1)为x的行数,size(x,2)为x的列数 x=x';ends=length(x);w=round(44*sr/1000); %窗长,取离44*sr/100最近的整数n=w; %fft的点数ov=w/2; %50%的重叠h=w-ov;% win=hanning(n)'; %哈宁窗win=hamming(n)'; %哈宁窗c=1;ncols=1+fix((s-n)/h); %fix函数是将(s-n)/h的小数舎去d=zeros((1+n/2),ncols);for b=0:h:(s-n)u=win.*x((b+1):(b+n));t=fft(u);d(:,c)=t(1:(1+n/2))';c=c+1;endtt=[0:h:(s-n)]/sr;ff=[0:(n/2)]*sr/n;imagesc(tt/1000,ff/1000,20*log10(abs(d)));colormap(gray);axis xyxlabel('时间/s');ylabel('频率/kHz');时间/s频率/k H z246810121416x 10-40246810时间/s频率/k H z0246810121416x 10-4246810预加重(高频提取)[x,sr]=wavread('mmm.wav'); %读数据ee=x(200:455); %选取原始文件e 的第200到455点的语音,也可选其他样点 r=fft(ee,1024); %对信号ee 进行1024点傅立叶变换 r1=abs(r); %对r 取绝对值 r1表示频谱的幅度值 pinlv=(0:1:255)*8000/512 %点和频率的对应关系 yuanlai=20*log10(r1) %对幅值取对数signal(1:256)=yuanlai(1:256);%取256个点,目的是画图的时候,维数一致 [h1,f1]=freqz([1,-0.98],[1],256,4000);%高通滤波器 pha=angle(h1); %高通滤波器的相位 H1=abs(h1); %高通滤波器的幅值 r2(1:256)=r(1:256)u=r2.*h1' % 将信号频域与高通滤波器频域相乘 相当于在时域的卷积 u2=abs(u) %取幅度绝对值 u3=20*log10(u2) %对幅值取对数un=filter([1,-0.98],[1],ee) %un 为经过高频提升后的时域信号 figure(1);subplot(211);plot(f1,H1);title('高通滤波器的幅频响应'); xlabel('频率/Hz'); ylabel('幅度');subplot(212);plot(pha);title('高通滤波器的相位响应'); xlabel('频率/Hz');ylabel('角度/radians');figure(2);subplot(211);plot(ee);title('原始语音信号'); xlabel('样点数'); ylabel('幅度');axis([0 256 -0.1 0.1]);subplot(212);plot(real(un)); title('经高通滤波后的语音信号'); xlabel('样点数'); ylabel('幅度'); axis([0 256 -1 1]);figure(3);subplot(211);plot(pinlv,ee);title('原始语音信号频谱'); xlabel('频率/Hz'); ylabel('幅度/dB');subplot(212);plot(pinlv,u3);title('经高通滤波后的语音信号频谱'); xlabel('频率/Hz'); ylabel('幅度/dB');05001000150020002500300035004000-50510x 10-3原始语音信号频谱频率/Hz幅度/d B05001000150020002500300035004000-80-60-40-20经高通滤波后的语音信号频谱频率/Hz幅度/d B50100150200250-0.1-0.0500.050.1原始语音信号样点数幅度50100150200250-1-0.500.51经高通滤波后的语音信号样点数幅度05001000150020002500300035004000-50510x 10-3原始语音信号频谱频率/Hz幅度/d B05001000150020002500300035004000-80-60-40-20经高通滤波后的语音信号频谱频率/Hz幅度/d B短时能量[x,sr]=wavread('welcome.wav'); %读入语音文件 %计算N=50,帧移=50时的语音能量 s=fra(50,50,x);s2=s.^2; %一帧内各样点的能量 energy=sum(s2,2); %求一帧能量subplot(2,2,1) %定义画图数量和布局plot(energy); %画N=50时的语音能量图xlabel('帧数') %横坐标ylabel('短时能量 E') %纵坐标legend('N=50') %曲线标识axis([0,1500,0,2*10]) %定义横纵坐标范围%计算N=100,帧移=100时的语音能量s=fra(100,100,x);s2=s.^2;energy=sum(s2,2);subplot(2,2,2)plot(energy) %画N=100时的语音能量图xlabel('帧数')ylabel('短时能量 E')legend('N=100')axis([0,600,0,4*10]) %定义横纵坐标范围%计算N=400,帧移=400时的语音能量s=fra(400,400,x);s2=s.^2;energy=sum(s2,2);subplot(2,2,3)plot(energy) %画N=400时的语音能量图xlabel('帧数')ylabel('短时能量 E')legend('N=400')axis([0,150,0,1.5*10^2]) %定义横纵坐标范围%计算N=800,帧移=800时的语音能量s=fra(800,800,x);s2=s.^2;energy=sum(s2,2);subplot(2,2,4)plot(energy) %画N=800时的语音能量图xlabel('帧数')ylabel('短时能量 E')legend('N=800')axis([0,95,0,3*10^2]) %定义横纵坐标范围定义fra()function f=fra(len,inc,x)fh=fix(((size(x,1)-len)/inc)+1);f=zeros(fh,len);i=1;n=1;while i<=fhj=1;while j<=lenf(i,j)=x(n); j=j+1;n=n+1; endn=n-len+inc; i=i+1; end5001000150005101520帧数短时能量 EN=50200400600010203040帧数短时能量 EN=100050100150050100150帧数短时能量 EN=400204060800100200300帧数短时能量 EN=800短时平均过零率clear all[x1,sr]=wavread('welcome.wav'); %读入语音文件 x=awgn(x1,15,'measured');%加入15dB 的噪声 s=fra(220,110,x);%分帧,帧移110 zcr=zcro(s);%求过零率 figure(1); subplot(2,1,1) plot(x);title('原始信号'); xlabel('样点数'); ylabel('幅度');axis([0,300,-2*10,2*10]); subplot(2,1,2) plot(zcr);xlabel('帧数'); ylabel('过零次数');title('原始信号的过零率');axis([0,360,0,200]); 定义zcro()function f=zcro(x)f=zeros(size(x,1),1); %生成全零矩阵 for i=1:size(x,1)z=x(i,:); %提取一行数据 for j=1:(length(z)-1); if z(j)*z(j+1)<0; f(i)=f(i)+1; end end end50100150200250300-20-1001020原始信号样点数幅度50100150200250300350050100150200帧数过零次数原始信号的过零率实验二 基音周期估计一、实验目的在理论学习的基础上,进一步的理解和掌握基音周期估计中两种最基本的方法:基于短时自相关法和基于短时平均幅度差法。
Speech Pitch Period Estimation Based on AMDF Abstract:Pitch period is a key parameter in speech compression , synthesis andrecognition. The well-known AMDF is often used to determine this parameter.But it is easy to make the estimated pitch doubled.According to the conventional speech- generating mode AMDF, the paper refers to a new speech pitch determination algor- ithm which bases on AMDF. The new method can resolve both the error by searching "the first trough" and the reduplication by searching "the minimal trough". It can win more accurate results by forecasting the range of the rough value, making and linear- transformation.The algorithm not only simplifies the pitch detection ,but also efficie- ntly decreases the estimation errors and improves the precision of estimated values.Key words:average magnitude difference function(AMDF);pitch period estimation 1 引言基音是指发浊音时声带振动起的周期性, 而基音周期是指声带振动频率的倒数。
实验一、语音信号采集与分析一、实验目的:1)了解语音信号处理基本知识:语音信号的生成的数学模型。
2)在理论学习的基础上,进一步地理解和掌握语音信号的读入、回放、波形显示。
语音信号时域和频域分析方法。
二、实验原理一定时宽的语音信号,其能量的大小随时间有明显的变化。
其中清音段(以清音为主要成份的语音段),其能量比浊音段小得多。
短时过零数也可用于语音信号分析中,发浊音时,其语音能量约集中于3kHz以下,而发清音时,多数能量出现在较高频率上,可认为浊音时具有较低的平均过零数,而清音时具有较高的平均过零数,因而,对一短时语音段计算其短时平均能量及短时平均过零数,就可以较好地区分其中的清音段和浊音段,从而可判别句中清、浊音转变时刻,声母韵母的分界以及无声与有声的分界。
这在语音识别中有重要意义。
FFT在数字通信、语音信号处理、图像处理、匹配滤波以及功率谱估计、仿真、系统分析等各个领域都得到了广泛的应用。
本实验通过分析加噪的语音信号频谱,可以作为分离信号和噪声的理论基础。
三、实验内容:Matlab编程实验步骤:1.新建M文件,扩展名为“.m”,编写程序;2.选择File/Save命令,将文件保存在F盘中;3.在Command Window窗中输入文件名,运行程序;程序一、用MATLAB对原始语音信号进行时域分析,分析短时平均能量及短时平均过零数。
程序二、用MATLAB对原始语音信号进行频域分析,画出它的时域波形和频谱给原始的语音信号加上一个高频余弦噪声,频率为5kHz。
画出加噪后的语音信号时域和频谱图。
程序1.a=wavread(' D:\II.wav'); %读取语音信号的数据,赋给变量x1,这里的文件的全路径和文件名由个人设计n=length(a);N=320;subplot(3,1,1),plot(a);h=linspace(1,1,N);%形成一个矩形窗,长度为NEn=conv(h,a.*a);%求卷积得其短时能量函数Ensubplot(3,1,2),plot(En);for i=1:n-1if a(i)>=0b(i)= 1;elseb(i) = -1;endif a(i+1)>=0b(i+1)=1;elseb(i+1)=-1;endw(i)=abs(b(i+1)-b(i));end%求出每相邻两点符号的差值的绝对值k=1;j=0;while (k+N-1)<nZm(k)=0;for i=0:N-1;Zm(k)=Zm(k)+w(k+i);endj=j+1;k=k+160; %每次移动半个窗endfor w=1:jQ(w)=Zm(160*(w-1)+1)/640;%短时平均过零率endsubplot(3,1,3),plot(Q);实验结果打印粘贴到右侧:程序2:fs=22050; %语音信号采样频率为22050x1=wavread('D:\II.wav'); %读取语音信号的数据,赋给变量x1sound(x1,22050); %播放语音信号f=fs*(0:511)/1024;t=0:1/22050:(size(x1)-1)/22050; %将所加噪声信号的点数调整到与原始信号相同Au=0.03;d=[Au*cos(2*pi*5000*t)]'; %噪声为5kHz的余弦信号x2=x1+d;sound(x2,22050); %播放加噪声后的语音信号y2=fft(x2,1024); %对信号做1024点FFT变换figure(1)subplot(2,1,1);plot(x1) %做原始语音信号的时域图形title('原始语音信号');xlabel('time n');ylabel('幅值 n');subplot(2,1,2);plot(t,x2)title('加噪后的信号');xlabel('time n');ylabel('幅值 n');figure(2)subplot(2,1,1);plot(f,abs(x1(1:512)));title('原始语音信号频谱');xlabel('Hz');ylabel('幅值');subplot(2,1,2);plot(f,abs(y2(1:512)));title('加噪后的信号频谱');xlabel('Hz'); ylabel('幅值');实验结果打印粘贴到右侧:050010001500200025003000350040004500原始语音信号time n幅值 n加噪后的信号time n幅值 n020004000600080001000012000原始语音信号频谱Hz幅值加噪后的信号频谱Hz幅值四、实验分析加入噪声后音频文件可辨性下降,波形的平缓,频谱图上看,能量大部分集中在2000HZz到4000Hz之间。
《语音信号处理》课程实验教学大纲课程编号: 13006430 一、实验教学的目的通过实验,加深对语音信号处理基本概念的理解,学习语音信号处理的编程和处理方法。
二、实验教学任务1、掌握VC编程方法处理语音信号。
2、掌握改变参数对语音信号处理的差别。
三、具体实验项目名称、学时分配、适用专业及实验性质四、单项实验的内容、要求实验内容:实验一:语音信号的低通滤波和短时分析综合实验。
1.给出语音信号,要求设计一个低通滤波器,带宽为采样频率的四分之一,求输出信号;2.辨别原始语音信号与滤波器输出信号有何区别,说明原因;3.改变滤波器带宽,重复滤波实验,辨别语音信号的变化,说明原因;4.利用矩形窗和汉明窗对语音信号进行短时傅立叶分析,绘制语谱图并估计基音周期,分析两种窗函数对基音估计的影响;5.改变窗口长度,重复上一步,说明窗口长度对基音估计的影响。
实验二:语音信号的同态滤波综合实验。
1.给出语音信号,要求设计一个卷积同态系统,对声源和声道冲激响应进行有效分离;2.绘制语音信号的复倒谱,并利用复倒谱对语音信号进行基音估计;3.利用短时自相关函数进行基音估计,并与前者相比较,说明两种方法的优缺点。
实验三:语音信号的线性预测。
1. 声道传输函数建模:根据给出语音信号设计线性预测滤波器,求最佳预测系数;2 .利用自相关法对语音信号进行线性预测分析,求声道传输函数共振峰。
实验要求:1.正确使编程软件。
2.学会改变参数对语音信号处理的影响。
五、实验教材或讲义名称理论课程教材六、实验考核标准1、课程实验(占用课程总学时)6学时,考核成绩占总课程成绩的30%。
2、考核标准1)每次实验前应提交预习报告,明确实验目的,了解实验内容。
2)实验中遵守实验纪律,听从老师指导,爱护仪器设备,遵守操作规程。
3)课程实验完成时,应对学生实验技能进行检查,提出问题能说明清楚。
4)实验报告应及时完成,字要整洁、图表要规范,记录和处理的数据应准确。
语音信号处理实验报告 The Standardization Office was revised on the afternoon of December 13, 2020语音信号处理实验报告——语音信号分析实验一.实验目的及原理语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理,并且语音合成的音质好坏和语音识别率的高低,都取决于对语音信号分析的准确性和精确性。
贯穿语音分析全过程的是“短时分析技术”。
因为从整体来看,语音信号的特性及表征其本质特征的参数均是随时间变化的,所以它是一个非平稳态过程,但是在一个短时间范围内(一般认为在10~30ms的时间内),其特性基本保持不变,即相对稳定,可将其看做一个准稳态过程,即语音信号具有短时平稳性。
所以要将语音信号分帧来分析其特征参数,帧长一般取为10ms~30ms。
二.实验过程男声及女声(蓝色为时域信号,红色为每一帧的能量,绿色为每一帧的过零率)某一帧的自相关函数3.频域分析①一帧信号的倒谱分析和FFT及LPC分析②男声和女声的倒谱分析对应的倒谱系数:,,……对应的LPC预测系数:1,,,,,……原语音波形一帧语音波形一帧语音的倒谱③浊音和清音的倒谱分析④浊音和清音的FFT分析和LPC分析(红色为FFT图像,绿色为LPC图像)三.实验结果分析1.时域分析实验中采用的是汉明窗,窗的长度对能否由短时能量反应语音信号的变化起着决定性影响。
这里窗长合适,En能够反应语音信号幅度变化。
同时,从图像可以看出,En可以作为区分浊音和清音的特征参数。
短时过零率表示一帧语音中语音信号波形穿过横轴(零电平)的次数。
从图中可以看出,短时能量和过零率可以近似为互补的情况,短时能量大的地方过零率小,短时能量小的地方过零率较大。
从浊音和清音的时域分析可以看出,清音过零率高,浊音过零率低。
从男声女声的时域信号对比图中可以看出,女音信号在高频率分布得更多,女声信号在高频段的能量分布更多,并且女声有较高的过零率,这是因为语音信号中的高频段有较高的过零率。
实验二语音信号的频域特性一、实验目的(1)结合汉语语音信号的各类音素和复元音的特点分析其频域性质;(2)熟悉语音信号的各类音素和复元音的频域参数;(3)熟悉声音编辑软件PRAAT的简单使用和操作。
二、实验记录与思考题1.观察语音信号的频域特点, 总结其规律。
浊音段:其谱线结构是与浊音信号中的周期信号密切相关。
具有与基音及其谐波对应的谱线。
频谱包络中有几个凸起点, 与声道的谐振频率相对应。
这些凸起点为共振峰。
清音段:2.清音的频谱无明显的规律, 比较平坦。
总结清音/b/p/m/f/d/t/n/l/g/k/h/j/q/x/z/c/s/zh/ch/sh/r/共21个的语谱图的规律, 给出辅音的能量集中区;语谱图中的花纹有横杠、乱纹和竖直条。
横杠是与时间轴平行的几条深黑色带纹, 它们是共振峰。
从横杠对应的频率和宽度可以确定相应的共振峰频率和带宽。
在一个语音段的语谱图中, 有没有横杠出现是判断它是否是浊音的重要标志。
竖直条是语谱图中出现于时间轴垂直的一条窄黑条。
每个竖直条相当于一个基音, 条纹的起点相当于声门脉冲的起点, 条纹之间的距离表示基音周期, 条纹越密表示基音频率越高。
b, p……清音的语谱图为乱纹。
辅音的能量集中区为: 高频区4./r/、/m/、/n/、/l/ 从这几个音素的的基频、共振峰频率分析宽带语谱图和窄带语谱图的不同之处, 请解释原因;语谱图中的花纹有横杠、乱纹和竖直条等。
横杠是与时间轴平行的几条深黑色带纹, 它们是共振峰。
从横杠对应的频率和宽度可以确定相应的共振峰频率和带宽。
在一个语音段的语谱图中, 有没有横杠出现是判断它是否是浊音的重要标志。
竖直条(又叫冲直条)是语谱图中出现与时间轴垂直的一条窄黑条。
每个竖直条相当于一个基音, 条纹的起点相当于声门脉冲的起点, 条纹之间的距离表示基音周期。
条纹越密表示基音频率越高。
宽带语谱图的时域分辨率高、可以看见语谱图上的纵的线条;窄带语谱图的频域分辨率高、语谱图上横的线条明显。
华南理工大学《语音信号处理》实验报告
实验名称:基音周期估计
姓名:
学号:
班级:10级电信5班
日期:2013年5 月15日
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('各帧基音周期');。