LPC语音合成实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
语音合成实验报告
李飞王江为袁晓杰陈新依王永胜
一、应用Matlab实现语音合成的背景
语音合成技术的研究已有两百多年的历史,但真正具有实用意义的近代语音合成技术是随着计算机技术和数字信号处理技术的发展而发展起来的,主要是让计算机能够产生高清晰度、高自然度的连续语音。在语音合成技术的发展过程中,早期的研究主要是采用参数合成方法,后来随着计算机技术的发展又出现了波形拼接的合成方法。参数合成的特点:调节灵活,但音质较差。
21世纪的通信应在人与人之间、人与机器之间提供高质量的无缝的信息交换手段。无论何时、何地,以任何方式通信,语音通信将是最基本、最重要的方式之一。声音信号的处理和通信领域联系密切,掌握音频信号的压缩编码、频谱分析和合成的原理与方法,对通信领域工作的开展具有重要意义。Matlab是由MathWorks公司于1984年推出的一套科学计算软件。Matlab具有强大的计算功能和诸多的工具箱,并且提供了COM接口,能方便地与VC等程序开发平台对接。使用Matlab来实现语音合成能够减少工作量,我们无需关心某些函数的实现,只需知道函数的作用和使用什么函数就够了,这就使Matlab成为科学研究和分析利器。
二、使用Matlab实现语音合成的目的
1.熟悉Matlab的使用
2.了解语音合成的原理和过程
3.重点学习参数合成法的实现
三、语音合成的原理
1.语音生成模型
通过对声管的研究,发现它可以用若干段级连的不等截面积均匀管道进行描述,一般称作级连无损声管模型。采用流体力学的方法可以证明每一截均匀管
道的频响能够用一个但极点模型来近似,这样N 段管道组成的声管就可以用一个N 阶全极点滤波器表述,即:
111()1(1)
N
N
k
k k k k G
G V z a z p z --===
=
--∑∏ (9.1)
对于典型的男声,N=10,所有的极点i
p 要分别构成共轭对以保证
{}
i a 系数
都是实数。在综合考虑清音信号,就可以得到产生语音信号的离散语音模型,如图所示:
对上述模型进行充分简化。首先去掉随机信号激励部分,认为激励信号是一个脉冲序列,不考虑有无周期。其次去掉声门脉冲模型和口唇的辐射模型,因而得到如图所示最简单的语音模型:
假设激励信号用e(n)表示,语音信号用s(n)表示,根据全极点模型表达式,有:
1
()()()
N
k k s n a s n k Ge n ==-+∑ (9.2)
从而可以用声管模型对激励信号进行滤波得到语音信号。
图2:简化的语音生成
图1:产生语音信号的离散时域模
2. 语音预测模型
假设已经知道了系数{ai},那么将图2的输入和输出对换,就构成了语音的预测模型,即语音信号s(n)送入预测滤波器,得到预测残差e(n)
1
()()()
N
k k e n s n a s n k ==--∑ (9.3)
假设信号的发端和收端都知道预测系数{ai},那么发端只需要把误差e(n)传到收端即可,因为收端可以用e(n)作为上述差分方程的激励得到重建语音。在发端,语音s(n)是滤波器的输入,而误差e(n)是输出。事实上,系数{ai}当然也需要从发端传到收端,但因为语音具有短时平稳性,即在短时间内(比如10ms ),系数{ai}可以认为不发生变化,所以也不必太频繁地传输,因而采用预测技术后,总是可以大幅度地降低语音的带宽。这种通过现行预测方法压缩语音数据量的技术称为线性预测编码。 3. 语音重建模型
如果知道激励信号x(n)和滤波器系数{a i },就可以利用激励生成重建语音了和语音生成模型的公式完全相同
1
()()()
N
k k s n x n a s n k ∧
∧
==--∑ (9.4)
但这个模型被称为语音重建模型,为了同生成模型区分开,s ∧
称为重建语音,
如果x(n)正好等于e(n),那么重建语音就会和原始语音s(n)完全相同。
语音的非平稳性(虽然短时平稳)导致预测系数{a i }是时变的,一般每10~20ms 就会发生一些变化以产生不同的音节。在这种情况下,滤波过程也要分段进行,即每次用不同的滤波器系数,但相邻两次滤波必须要保持滤波器的状态不发生变化。 4. 谐振和共振峰频率
语音生成模型的每一对共轭极点都对应一个衰减的正弦信号的特征响应。例如一对共轭极点
j i p e ±Ω
在时域冲激响应中的贡献是
cos()
n
i A P n ϕΩ+。其中极
点幅度决定衰减速度,幅角决定振荡频率。
对语音合成,用数字的正弦信号表示抽样后的连续正弦信号。在这种情况
下,模拟频率和数字频率的关系是Ω=wT,其中T表示抽样间隔,w表示模拟频率(弧度),对应的ƒ =w/2π称为共振频率,它定义了声道的谐振频率。当模型参数变化时,共振峰频率也随着变化,从而产生不同的声调。
四、分析与合成语音
分析和合成系统如图3所示。
图3 分析和合成语音的系统框图
首先要分析一段(一般是10ms)语音得到它的最佳{ai}系数。给定这些系数后,就可以适当的输入来合成语音。对于浊音信号,一种可取的激励模型就是以特定频率重复的单位样值序列,这个频率就是基音频率。对清音,最好选择随机噪声或者白噪声作为输入。但在不做清浊判决的情况下,全部采用周期激励的合成质量也可以接受。
分析过程如下:首先,抽样的语音信号被分成10ms长的段;然后,对每段数据进行统计分析,计算相邻样点的相关性并最终得到最佳预测系数。合成过程就是利用这些预测系数,以及周期的单位样值序列作为输入,依次得到每段合成语音。
1、变速不变调
所谓变速不变调,是指声音播放时,速度的改变不会导致音调的变化。为了实现变速不变调,首先需要将表示“调”的内容从语音中分离出来,由前述语音预测模型,表示“调”的有两个部分,一是共振峰频率,即预测模型的参数;二是基音周期,即激励信号的参数。接下来的工作就是在不改变这两种参数的前提下改变数据长度。即将10ms的80个样点的激励变成20ms160个样点(注意保持单位样值的周期不变),在这20ms内保持预测模型系数不变,就合成了20ms