第6章智能机器人的语音合成与识别语言是人类最重要的交流工具,自然方便、准确高效。让机器与人之间进行自然语言交流是智能机器人领域的一个重要研究方向。语音识别和语音合成技术、自然语言理解是建立一个能听会讲的口语系统,从而实现人机语音通信所必需的关键技术。语音合成与识别技术涉及语音声学、数字信号处理、人工智能、微机原理、模式识别、语言学和认知科学等众多前沿科学,是一个涉及面很广的综合性科学,其研究成果对人类的应用领域和学术领域都具有重要的价值。近年来,语音合成与识别取得显著进步,逐渐从实验室走向市场,应用于工业、消费电子产品、医疗、家庭服务、机器人等各个领域。图6.1语音合成技术原理示意图6.1语音合成的基础理论语音合成是指由人工通过一定的机器设备产生出语音。具体方法是利用计算机将任意组合的文本转化为声音文件,并通过声卡等多媒体设备将声音输出。简单的说,就是让机器把文本资料“读”出来。由图6.1可知,语音合成系统完成文本到语音数据的转化过程中可以简单分为两个步骤:(1)文本经过前端的语法分析,通过词典和规则的处理,得到格式规范,携带语法层次的信息,传送到后端。(2)后端在前端分析的结果基础上,经过韵律方面的分析处理,得到语音的时长、音高等韵律信息,再根据这些信息在音库中挑选最合适的语音单元,语音单元再经过调整和拼接,就能得到最终的语音数据。6.1.1语音合成分类1.波形合成法波形合成法是一种相对简单的语音合成技术,它把人发音的语音数据直接存储或进行波形编码后存储,根据需要进行编辑组合输出。这种语音合成系统只是语音存储和重放的器件,往往需要大容量的存储空间来存储语音数据。波形合成法适用于小词汇量的语音合成应用场合,如自动报时、报站和报警等。2.参数合成法参数合成法也称为分析合成法,只在谱特性的基础上来模拟声道的输出语音,而不考虑内部发音器官是如何运动的。参数合成方法采用声码器技术,以高效的编码来减少存储空间,是以牺牲音质为代价的,合成的音质欠佳。3.规则合成方法规则合成方法通过语音学规则产生语音,可以合成无限词汇的语句。合成的词汇表不是事先确定,系统中存储的是最小的语音单位的声学参数,以及由音素组成音节、由音节组成词、由词组成句子和控制音调、轻重音等韵律的各种规则。6.1.2常用语音合成技术1、共振峰合成法习惯上,把声道传输频率响应上的极点称之为共振峰。语音的共振峰频率(极点频率)的分布特性决定着语音的音色。共振峰合成涉及共振峰的频率、带宽、幅度参数和基音周期等相关参数。要产生可理解的语音信号,至少要三个共振峰;要产生高质量合成语音信号,至少要由五个共振峰。基于共振峰合成方法主要有以下三种实用模型:1)级联型共振峰模型在该模型中,声道被认为是一组串联的二阶谐振器,共振峰滤波器首尾相接,其传递函数为各个共振峰的传递函数相乘的结果。五个极点的共振峰级联模型传递函数为:(6.1)即:(6.2)式中,G为增益因子。一个五个极点的共振峰级联模型如图6.2所示:图6.2共振峰级联模型2)并联型共振峰模型在并联型模型中,输入信号先分别进行幅度调节,再加到每一个共振峰滤波器上,然后将各路的输出叠加起来。其传递函数为:(6.3)上式可分解成以下部分分式之和(6.4)其中,为各路的增益因子。1A下图就是一个M=5的并联型共振峰模型。图6.3并联型共振峰模型3)混合型共振峰模型比较以上两种模型,对于大多数的元音,级联型合乎语音产生的声学理论,并且无需为每一个滤波器分设幅度调节;而对于大多数清擦音和塞音,并联型则比较合适,但是其幅度调节很复杂。如下图所示,混和型共振峰模型将两者进行了结合。图6.4混和型共振峰模型对于共振峰合成器的激励,简单地将其分为浊音和清音两种类型是有缺陷的,为了得到高质量的合成语音,激励源应具备多种选择,以适应不同的发音情况。混和型共振峰模型中激励源有三种类型:合成浊音语音时用周期冲激序列;合成清音语音时用伪随机噪声;合成浊擦音语音时用周期冲激调制的噪声。2、LPC(线性预测)参数合成LPC合成技术本质上是一种时间波形的编码技术,目的是为了降低时间域信号的传输速率。LPC合成技术的优点是简单直观,其合成过程实质上只是一种简单的译码和拼接的过程。另外,由于波形拼接技术的合成基元是语音的波形资料,保存了语音的全部信息,因而对于单个合成基元来说能够获得较高的自然度。3、PSOLA算法合成语音早期的波形编辑技术只能回放音库中保存的东西。然而,任何一个语言单元在实际语流中都会随着语言环境的变化而变化。20世纪80年代末,F.Charpentier和E.Moulines等提出了基音同步叠加技术(PSOLA)。PSOLA算法和早期波形编辑有原则性的差别,它既能保持原始语音的主要音段特征,又能在音节拼接时灵活调整其基音、能量和音长等韵律特征,因而很适合于汉语语音的规则合成。由于韵律修改所针对的侧面不同,PSOLA算法的实现目前有3种方式:(1)时域基音同步叠加TD-PSOLA;(2)线性预测基音同步叠加LPC-PSOLA;(3)频域基音同步叠加FD-PSOLA。其中TD-PSOLA算法计算效率较高,已被广泛应用,是一种经典算法,这里只介绍TD-PSOLA算法原理。信号x(n)的短时傅里叶变换为:(6.5)其中w(n)是长度为N的窗序列,Z表示全体整数集合。是变量n和ω的二维时频函数,对于n的每个取值都对应有一个连续的频谱函数,显然存在较大的信息冗余,所以可以在时域每隔若干个(例如R个)样本取一个频谱函数来重构原信号x(n)。令(6.6)jj(e)()()emnmXxmwnmnZ()jnXe()()|,jjrnnrRYeXernZ其傅里叶逆变换为:(6.7)然后将叠接相加便可得到:(6.8)通常选w(n)是对称的窗函数,所以有(6.9)1()()2jjmrrymYeedmZ()()()()()()rrrrymymxmwrRmxmwrRmmZ()()wrRnwnrR可以证明,对于汉明窗来说,当时,无论m为何值都有(6.10)所以(6.11)其中为w(n)的傅里叶变换。上式说明,用叠接相加法重构的信号y(n)与原信号x(n)只相差一个常数因子。这里采用原始信号谱与合成信号谱均方误差最小的叠接相加合成公式。定义两信号x(n)和y(n)之间谱距离测度:0()()jrWewrRmR0()()()jWeynxnR()jWe(6.12)上式可改写为:(6.13)要求合成信号y(n)满足谱距离最小,可以令:(6.14)21[(),()]|()()|2mggjjtttDxnynXeYed212212[(),()]{[()]()[()]()}[()()()()]ggmmmgggtnggmgtnDxnynwtntxntwtntyntwntxnttwntyn[(),()]0()Dxnynyn解得(6.15)窗函数和可以是两种不同的窗函数,长度也可以不相等。上式就是在谱均方误差最小意义下的时域基音同步叠接相加合成公式。实际合成时和可以用完全相同的窗,分母可视为常数,而且可以加一个短时幅度因子来调整短时能量,即:(6.16)1222()()()()()gggggmtgtwntwntxnttynwnt1()wn1()wn2()wn2()wn1222()()()()()gggtgggmtgtwtnwtnxnttynwtn概括起来说,用PSOLA算法实现语音合成时主要有三个步骤:1)基音同步分析同步标记是与合成单元浊音段的基音保持同步的一系列位置点,用它们来准确反映各基音周期的起始位置。同步分析的功能主要是对语音合成单元进行同步标记设置。PSOLA技术中,短时信号的截取和叠加,时间长度的选择,均是依据同步标记进行的。对于浊音段有基音周期,而清音段信号则属于白噪声,所以这两种类型需要区别对待。2)基音同步修改同步修改通过对合成单元同步标记的插入、删除来改变合成语音的时长;通过对合成单元标记间隔的增加、减小来改变合成语音的基频等。若短时分析信号为,短时合成信号为,则有:((),)axtsn((),)sxtsn(6.17)式中为分析基音标记,为合成基音标记。3)基音同步合成基音同步合成是利用短时合成信号进行叠加合成。如果合成信号仅仅在时长上有变化,则增加或减少相应的短时合成信号;如果是基频上有变化,则首先将短时合成信号变换成符合要求的短时合成信号再进行合成。((),)((),)asxtsnxtsn()ats()sts6.2语音识别的基础理论6.2.1语音识别基本原理语音识别系统本质上是一个模式识别系统,其原理如图6.5所示。图6.5语音识别结构图外界的模拟语音信号经由麦克风输入到计算机,计算机平台利用其A/D转换器将模拟信号转换成计算机能处理的语音信号。然后将该语音信号送入语音识别系统前端进行预处理。预处理会过滤语音信息中不重要的信息与背景噪声等,以方便后期的特征提取与训练识别。预处理主要包括语音信号的预加重,分帧加窗和端点检测等工作。特征提取主要是为了提取语音信号中反映语音特征的声学参数,除掉相对无用的信息。语音识别中常用的特征参数有短时平均能量或幅度、短时自相关函数、短时平均过零率、线性预测系数(LPC)、线性预测倒谱系数(LPCC)等。(1)语音训练语音训练是在语音识别之前进行的,用户将训练语音多次从系统前端输入,系统的前端语音处理部分会对训练语音进行预处理和特征提取,在此之后利用特征提取得到的特征参数可以组建起一个训练语音的参考模型库,或者是对此模型库中的己经存在的参考模型作适当的修改。(2)语音识别语音识别是指将待识别语音经过特征提取后的特征参数与参考模型库中的各个模式一一进行比较,将相似度最高的模式作为识别的结果输出,完成模式的匹配过程。模式匹配是整个语音识别系统的核心。6.2.2语音识别预处理一般而言,语音信号在进行分析和处理之前,首先要将语音信号进行预处理。语音信号预处理包括:采样量化、分帧加窗和端点检测等。1.采样量化采样就是在时间域上,等间隔地抽取模拟信号,得到序列模拟音频后,并将其转化成数字音频的过程,实际上就是将模拟音频的电信号转换成二进制码0和1。0和1便构成了数字音频文件,采样频率越大音质越有保证。如图6.6所示,采样过程可表达如下:如图6.6所示,采样过程可表达如下:(6.18)其中n为整数,T为采样周期,为采样频率。()()nXnXnT1sFT图6.6语音信号采样示意图根据采样定理:如果n信号的频谱是带宽有限的,即:(6.19)当采样频率大于信号的两倍带宽时,采样过程就不会信息丢失,即:(6.20)从可精确重构原始波形,即能够唯一从样本序列重构为:(6.21)()0aXj2aF12saFFT)(nx)(txa()sin()aannXXaTtTT当时为Nyquist频率。量化实际上是将时间上离散、幅度依然连续的波形幅度值进行离散化。量化时先将整个幅度值分割成有限个区间,然后把落入同一区间的样本赋予相同的幅度值,这个过程取决于采样精度。量化决定了声音的动态范围,以位为单位,例如8位可以把声波分成256级。(6.22)汉明窗(6.23)2saFF1,(01)()0,(0,1)nNWnnnN2()0.540.46cos()(01)()10,(0,1)nwnnNWnNnnN3.端点检测端点检测就是通过准确地判断输入语音段的起点和终点,来减少运算量、数据量以及时间,进而得到真正的语音数据。资料表明在安静环境下,语音识别错误原因的一