文档详情

MATLAB变声器

汽***
实名认证
店铺
DOC
136KB
约14页
文档ID:536279218
MATLAB变声器_第1页
1/14

MATLAB变声器电子工程学院摘要语音信号解决中的变声解决已有了比较成熟的算法,本文论述了变声算法的基本原理,运用数字滤波器,自有关法,LPC,LPC系数求根法等措施在MATLAB上变化语音信号的基频和共振峰以实现变声,并总结了既有变声算法的缺陷,对用不同的变换域能否改善变声算法做了粗略分析核心词:变声算法,LPC,变换域目录研究背景ﻩ3变声原理ﻩ3语音基本概念 3变声原理ﻩ4变声过程 5分帧解决ﻩ5计算LPC系数 5计算原始鼓励 6计算基音周期 6计算鼓励能量ﻩ7合成脉冲序列 7更改声道参数ﻩ7合成变声语音ﻩ8程序设计ﻩ8老式变声算法缺陷ﻩ9合成鼓励与原始鼓励差别较大 9不能实现定向变声 10实现定向变声的猜想 11小波域与否存在恒定音色参数粗略分析 11记录上的变换与否利于寻找恒定音色参数猜想 11下一步研究筹划ﻩ12研究背景语音信号是人们平常生活中十分常用的信号,语音也是人与人之间传递信息的一种十分重要的方式随着智能终端以及互联网的普及,语音信号大量地以数字形式浮现,语音信号解决变得越来越重要,变声解决是语音信号解决的基本之一,因此在这样的大背景下,研究变声算法并改善变声算法是很故意义并且有必要的。

另一方面,老式的变声算法是对发声过程的简朴模拟进行语音合成,在模拟过程中变化参数以实现变声,而老式的变声算法存在某些缺陷,若要改善变声算法使其更灵活有效,那么细致的研究老式的变声算法是很有必要的变声原理l 语音基本概念1. 声道:声道是诸多动物及人类均有的一种腔室,从声源产生的声音经由此处滤出人的声道涉及声道则涉及喉腔、咽头、口腔和鼻腔2. 基音:一般的声音都是由发音体发出的一系列频率、振幅各不相似的振动复合而成的这些振动中有一种频率最低的振动,由它发出的音就是基音,其他为泛音发音体整体振动产生的音,叫做基音,决定音高;发音体部分振动产生的音,叫做泛音,决定音色;基音和泛音结合一起而形成的音,叫做复合音,平常我们所听到的声音多为复合音3.共振峰:共振峰是指在声音的频谱中能量相对集中的某些区域,共振峰是语音音质的决定因素,反映了声道(共振腔)的物理特性声音在通过共振腔时,受到腔体的滤波作用,使得频域中不同频率的能量重新分派,一部分由于共振腔的共振作用得到强化,另一部分则受到衰减,得到强化的那些频率在时频分析的语图上体现为浓重的黑色条纹由于能量分布不均匀,强的部分犹如山峰一般,故而称之为共振峰。

在语音声学中,共振峰决定着元音的音质,在计算机音乐中,共振峰是决定音色和音质的重要参数4,短时平稳特性:语音信号是一种随时间而变化的信号,重要分为浊音和清音两大类浊音的基音周期、清浊音信号幅度和声道参数等都随时间而缓缓变化由于发生器官的惯性运动,可以觉得在一小段时间里(一般为10~30ms)语音信号的频域特性近似不变,即语音信号具有短时平稳性因而解决语音信号之前要把语音信号分为某些短段(称为分析帧),然后再来进行解决 人声和乐器声的产生需要两个阶段,一种是发声系统,如人的声带或乐器的振动簧片,另一种是共鸣系统乐器不同的共鸣系统使其在一定频域中的语音信号的振幅得以突出,这样,这些区域就产生了这个乐器所特有的共振峰值,这些共振峰值同共鸣体的大小、形状的材料密切有关由于乐器的构造是稳定的,因此在乐器发出的所有音调中,不管基频如何,都会体现出相似的共振峰值,只但是其明显性有强有弱罢了这就可以解释为什么同一乐器所发出的不同音调具有相似的音质   在语音声学中,人声也同样受自身生理如鼻孔、咽腔、口腔大小的影响有自身的共振峰区人在说话的过程中,正是通过运用这些共鸣空间的形状和大小不同的变化(例如变化嘴形),以能变化声音的共振峰说出不同的元音。

我们之因此可以辨别不同的人声、元音,重要也是依托它们的共振峰分布的位置简朴来讲不同的人说同一句话的共振峰不同,同一种人说不通的话共振峰也不同l 变声原理   变声是通过变化人声的基音频率和共振分分布以达到变声的目的,其具体过程是是模拟人声的发声过程,以脉冲信号替代声带振动,以FIR滤波器替代声道,用脉冲信号通过FIR滤波器进行语音合成一方面对原始语音信号进行分解,然后得出原始鼓励参数(基音周期和鼓励能量)和声道参数(共振峰分布),用得出的参数构建鼓励和滤波器,再根据变声需要更改参数,就可以达到变声的目的过程如下脉冲序列FIR滤波器原始鼓励参数声道参数原始语音合成变声语音变声过程l 分帧解决   语音信号具有短时平稳特性,因此在解决之前要进行分帧解决,将一段长的语音信号分解为10~30ms的语音信号逐段进行解决语音信号的分帧是采用可移动的有限长度窗口进行加权的措施来实现的一般每秒帧数约为33~100帧,视实际状况而定分帧一般要采用交叠分段的措施如图所示,这是为了使帧与帧之间平滑过渡,保持其持续性前一帧和后一帧的交叠部分称为帧移,帧移与帧长的比值一般取为0~0.5帧长帧长帧移第k帧第k+1帧在程序中对语音信号加Hamming窗解决,措施是用窗序列沿着语音样点值序列逐帧从左向右移动。

l 计算LPC系数线性预测编码(LPC)是重要用于音频信号解决与语音解决中根据线性预测模型的信息用压缩形式表达数字语音信号谱包络(en:spectral envelope)的工具它是最有效的语音分析技术之一,也是低位速下编码措施高质量语音最有用的措施之一,它可以提供非常精确的语音参数预测LPC就是根据之前的P个信号构建滤波器,对之后的信号进行预测MATLAB中就有LPC函数,其形式为:     [A,E]=lpc(s_w,P);其中A是LPC预测系数,用来构建滤波器,E是预测误差,在背面会用来计算鼓励能量,s_w是语音信号,P是预测阶数l 计算原始鼓励用得到的LPC系数构建滤波器,对语音信号进行逆滤波就可以得到语音信号的鼓励,此外应当注旨在系数变化的状况下持续滤波,需要维持滤波器的状态不变,要运用filter函数的和参数程序如下   [exc1,zi_pre] = filter(A,1,s_f,zi_pre);exc1就是原始鼓励,用于计算基音周期l 计算基音周期程序中用自有关法计算基音周期如果s(n)是一种周期为P的信号,则其自有关函数也是周期为P的信号,且在信号周期的整数倍处,自有关函数取最大值。

语音的浊音信号具有准周期性,其自有关函数在基音周期的整数倍处取最大值计算两相邻最大峰值间的距离,就可以估计出基因周期其实现代码如下function PT=findpitch(s)[B,A]=butter(5,700/4000);s=filter(B,A,s);R=zeros(143,1);for k=1:143   R(k)=s(144:223)'*s(144-k:223-k);end[R1,T1]=max(R(80:143));T1=T1+79;R1=R1/(norm(s(144-T1:223-T1))+1);[R2,T2]=max(R(40:79));T2=T2+39;R2=R2/(norm(s(144-T2:223-T2))+1);[R3,T3]=max(R(20:39));T3=T3+19;R3=R3/(norm(s(144-T3:223-T3))+1);Top=T1;Rop=R1;if R2>=0.85*Rop Rop=R2; Top=T2;endif R3>0.85*Rop   Rop=R3;   Top=T3;endPT=Top;returnl 计算鼓励能量鼓励能量G用于构建脉冲序列时当作脉冲序列的振幅,鼓励能量和线性预测误差E和基音周期PT有关,其公式为   G = sqrt(E*PT);l 合成脉冲序列合成的脉冲序列可根据变声的需要更改原始的基音周期PT,如    PT1 =floor(PT/2);而后以PT1为周期,G为振幅构建脉冲序列,作为合成语音的鼓励l 更改声道参数    运用LPC求根法以更改共振峰分布。

具体过程为,对由线性预测系数A构成的多项式求根,而共振峰频率F和频谱宽带B和这些根有相应关系设为一种根,则其共轭值也是一种根,i相应的共振峰频率F和3dB带宽B存在如下关系: 因此      其中T是采样周期在程序中,我们只更改共振峰频率,程序如下poles = roots(A);deltaOMG =100*2*pi/fs;for p=1:10   if imag(poles(p))>0    poles(p) = poles(p)*exp(peak*1j*deltaOMG); %peak是变声系数      elseif imag(poles(p))<0      poles(p) = poles(p)*exp(-peak*1j*deltaOMG);   endendA1=poly(poles);A1是更改正声道参数的线性预测系数,用以构建滤波器合成变声语音l 合成变声语音  用脉冲序列作为鼓励,A1作为滤波器参数,合成变声语音,[s_syn1_t,zi_syn_t] = filter(1,A1,exc_syn1_t,zi_syn_t);程序设计   运用MATLAB的GUI进行程序设计,成果如下:   从图中可看出,通过变声器解决后来,语音信号的频域发生了很明显的变化,共振峰发生明显的移动。

从听觉角度来说,变声效果也比较明显老式变声算法缺陷老式的变声算法形成时间较早,是对发声系统粗略的模仿实现语音合成,虽然能实现明显的变声效果,但还存在某些缺陷,这里只针对研究开发过程中发现的局限性来说l 合成鼓励与原始鼓励差别较大合成鼓励是以原始鼓励的基音周期为周期的脉冲序列,忽视了原始鼓励中的泛音频率,而语音信号中泛音频率也是决定声音音色的重要因素,因此对泛音的忽视直接影响了变声效果完毕变声器的编程之后,我尝试用基音周期不变的合成鼓励与原始的声道参数进行语音合成,对比合成语音和原始语音,成果如下可以很明显地看出合成鼓励和原始鼓励在频谱上有较大区别,而从听觉上而言,虽然能听出两者音色相似,但用合成鼓励合成的语音中有较多杂音从这个简朴的实验可以看出,鼓励中的泛音对语音信号也有着相称重要的作用,当鼓励中清除泛音时,对语音信号的频谱分布和听觉上有着较大影响因此变声算法中,只考虑基音来构建合成鼓励是有很大缺陷的l 不能实现定向变声所谓定向变声,是指把一种人的声音定向地变成另一种人的声音每个人均有自己独特的音色,也就意味着每个人的声音信号有独特且恒定的参数存在,一开始我猜想是这个参数便是共振峰分布,后来发现,虽然不同的人说相似的话的语音共振峰的确有明显的区别,但是同一种人说不同的话共振峰的区别也非常大,下图分别是同一种人读“为中华崛起而读书”和“目前开始录音”的时域和频域图:可见共振峰分布并不相似,其实每个元音的共振峰分布本来就不同样,这就意味着,共振峰分布不仅决定了音色,也决定了语音内容。

而事实上,仅仅在很短的时间内(10~30ms),共振峰的分布才是不变的,这也是语音信号的出来都要在短时内进行的因素综上可见,老式变声算法单。

下载提示
相似文档
正为您匹配相似的精品文档