人与情感机器人的自然交互正如人与人交互一样,首先要知道在与谁交互,即,识别交互的对象或称为说话人识别(speaker recognition)。说话人识别是一种特殊的语音识别,它有2个功能:一是说话人辨别(speaker identification);二是说话人验证(speaker verifica-tion)。前者是判断正在说话的是谁,识别交互对象;后者是验证所获取的语言或人脸信号到底是属于哪个人的,常用语情报侦察和安全防范。说话人识别通常是通过计算机的听觉或视觉功能来完成的,音频信号反映了说话人的语音语言特征,视频信号反映了人脸特征。二者共同应用时,由于冗余信息的存在,可以达到更可靠的识别效果。
1.听觉——说话人识别
说话人识别是在人机自然交互过程中识别对话对象,是语音识别研究的一个重要分支,从一开始就与语音识别研究共同发展。说话人识别的主要技术大多来自语音识别的最新研究成果,对此具有较长研究历史和学术影响的机构包括:美国电报电话公司(AT&T)及其分支机构,BBN Tech,瑞士感觉人工智能Dalle Molle研究所(IDIAP),ITT,MIT林肯实验室,中国台湾国立清华大学,名古屋大学,日本电报电话公司,RPI,Rutgers大学,TI等。
(1)说话人识别的分类
说话人识别可以分为2个范畴,即说话人辨认(Speaker Identification)和说话人确认(Speaker Verification)。前者是把未标记的语句判定为属于N个参考说话人中的某一个,是一个多选一的问题;后者则是根据说话人的语句确定是否与某个参考说话人相符,这种确认只有2种可能,既肯定或否定。
说话人识别可以分为与文本相关的(Text-dependent)和与文本无关的(Text-independ-ent)。与文本相关的是指说话人按规定文本发音,或者根据提示发音,这会使问题大为简化;而与文本无关的说话人识别在实际应用中具有更大的价值,尤其是在电话监听等应用场合,系统无法预知说话人将要说什么内容。
(2)说话人识别的方法
1)基于统计模型的算法。利用语音识别的HMM技术也可以实现说话人识别。用HMM算法实现文本相关的说话人识别系统更为方便。此时采用的方法基本上与语音识别的方法相同,首先采集不同说话人的多次发音,经过训练得到HMM模型参数,根据匹配分数的不同来区分说话人。
2)基于模板匹配的算法。模板匹配算法的要点是,在训练过程中,从每个说话人的训练语句中提取相应的特征向量,它们能够充分描述各说话人的特征。这些特征向量称为各说话人的模板,可以从单词、数字串或句子中提取。在测试阶段,从说话人发出的语音信号中按照同样的处理方法提取测试模板,并且与相应的参考模板进行比较。由于说话人的每次发音都是变化的,测试模板和参考模板在时间尺度上不可能完全一致。为使二者在时间等效点上加以比较,最常用的办法就是采用DTW算法。在DTW的过程中同时计算所有参考模板对测试模板的距离测度并且形成判决函数。
说话人识别系统中对于语音的内容实际上是不感兴趣的,而且语音的内容原则上都是相同的,其任务是区分不同说话人的发音。而语音识别中则是找到说话人说话的内容。
(3)应用实例
本实例是基于模板匹配算法实现的,可分为训练与识别两部分,系统框图如图6-5所示。
图6-5 基于模板匹配算法的系统框图
在训练过程中,语音信号需先经过预处理,然后进行特征提取,并将提取的参数生成码本进行存储;在识别过程中,只需将目前的特征参数与存储在码本中的参数进行比较就能得到识别结果。这样情感机器人就可以识别出当前用户的身份。
1)训练。
①预处理:包含分帧和端点检测两个部分。由于语音信号只在短时间内具有平稳性,因此要将信号作分帧处理;分帧后,语音信号被分割成一帧一帧的短时信号。本实例使用交叠分帧的方法,即前后相邻的两帧有重叠的部分,这样可以使帧与帧之间平滑过渡,保持其连续性。端点检测是为了减少噪声,也即无声段的影响;短时能量可以区分浊音和噪音,短时过零率可以区分清音和噪音。因此,使用二者的乘积——能频值,实现语音端点检测,可以去除无声段。
ToWork()——启动控制函数:函数中调用以下几个函数对音频文件进行预处理,以便后面特征提取之用;
Load_Wave_File()——加载音频文件:通过调用录音函数,将录好的音频文件加载入缓存;
Pretreatment()——语音信号预处理:首先,对语音信号进行预加重,即在计算短时能量前,对语音信号进行高频提升处理,滤除低频干扰;然后,对语音信号进行分帧处理,语音信号是一种准平稳信号。但是,由于语音的形成过程与发声器官的运动密切相关,这种物理运动比起声波振动速度来讲要缓慢得多,因此可以假定语音信号为短时平稳的,即可以假定在10~30ms的时间段内,其频谱特性和某些物理特征参量可近似看作不变。任何语音信号数字处理算法和技术都建立在这种“短时平稳”特性的基础之上。因此,一般在分帧时,帧长选取在10~30ms之间。分帧可以是连续的,也可以是交叠的。因为交叠分帧可以平滑信号,减少信号两端处的预测误差,避免频谱出现“破碎”现象,所以本系统中,综合考虑到语音信号的短时平稳性以及之后基音检测的准确性,最终选取帧长为30ms(在系统采样率为8KHz的前提下,相应于每帧有240个信号样值),帧移15ms。
接着计算每帧能频值,调用的函数及功能是
littleEnergy()——计算短时能量:语音信号一般可分为无声段、清音段和浊音段。无声段是背景噪声段,平均能量最低。浊音段为声带振动发出响应的语音信号段,平均能量最高。清音段为空气在口腔中的摩擦、冲击或爆破而发出的语音信号段,平均能量居于两者之间。基于能量的算法适用于浊音检测,但不适合检测清音,这也为一下检测语音起点与终点打下基础。
littleZero()——计算短时过零率:即一定时间内信号穿越零电平的次数,适合用来检测清音。
findBeginning()——检测语音起点。
findEnd()——检测语音终点。
引入能频值(Energy Frequency Value,EFV)的概念:能频值等于短时能量乘上短时过零率。能频值既顾及到清音的高过零率又顾及到浊音的高能量,从而提高了语音信号与背景噪声的分辨能力。同时,考虑到实际应用中周围环境的变换以及讲话者的语音强弱等影响都会造成阈值的选取无法普遍适用,为此,进一步引入相对阈值的概念,它区别于传统意义上的门限阈值,而是度量两个时刻的语音采样的比值关系,具体来说是当前采样点与分析顺序上第一个极大值点的比值。该相对阈值即能反映出当前采样点能频值的大小,又能通过类似归一化的方法屏蔽掉环境影响,因此具有较好的效果。系统端点检测流程如图6-6所示。
②特征提取:
FeatureExtractor()——特征提取,即对基音特征进行分析与提取。在语音产生的数字模型中,基音周期是激励源的一个重要参数。基音是指发浊音时声带振动的周期性,这种周期称作基音周期,它的倒数称作基音频率。基音周期只具有准周期性,所以只能采用短时平均方法估计该周期,这个过程也常称为基音检测,分别调用以下四个函数进行处理:
getACF()——求解自相关函数:因为清音不具有准周期性,所以基音检测只能针对浊音信号。浊音信号的自相关函数会在基音周期的整数倍位置上出现峰值,因此检测自相关函数是否有峰值可以判断是清音还是浊音,而峰峰之间对应的就是基音周期;
pitchDetection()——基因检测:考虑到人的基音频率都在60~450Hz,且语音信号采样率为8kHz,因此,可去除每帧信号的前16个点,这样既可以减少计算量,又可以提高算法的精度。对每一帧进行基音频率估计的步骤如下:
首先对一帧语音信号{Sn(m)}进行滤波去除开头的16个输出值,得到{Sn′(m)};然后分别求{S′n(m)}前100个采样点和后100个采样点的最大幅度,并取其中较小的一个,乘以因子0.68作为门限电平L;接着对{Sn′(m)}进行中心削波得到{y(m)};再计算{y(m)}的自相关值R(k),其中k=1~124(去点前的第16~140个点)时对应基音频率范围57~500Hz,R(0)对应于短时能量;最后得到自相关值后,可以得到R(1),…,R(124)中的最大值Rmax,如果Rmax<0.25R(0),则认为本帧为清音,令其基音周期为0;否则基音周期即为R(k)取最大值Rmax时位置k的值,基音频率即为基音周期的倒数。
图6-6 系统端点检测流程图
getFrameLPC()——输入帧数据的线性预测系数:线性预测系数是能够有效表征语音全极点模型的参数,线性预测分析的思想基于语音信号样点间存在相关性,每个语音的抽样都能够用过去若干个语音抽样或者它们的线性组合来逼近;
getFrameLPCC()——由LPC得到LPC倒谱:一般采用倒谱系数作为系统的特征参数。它的主要优点是可以较为彻底地去掉语音产生过程中的激励信息,反映出声道响应,因此往往只需十几个倒谱系数就能较好地描述语音信号的共振峰特性。倒谱的求解过程实质上是一个同态处理过程,具体实现是调用ACFToLPCCoef()——由自相关函数求解线性预测系数函数,并采用lpcDurbin()——杜宾递推方法得到线性预测系数。
③生成码本并预存:预存就是把每一个待识别的说话人语音看作一个信号源,用一个码书来表征,码书通过从该说话人的训练语音序列中提取特征矢量聚类而成。通过特征提取出来的特征矢量首先要进行量化,即将若干个幅度连续取值的时域采样信号分成一组,构成矢量,然后用若干个离散的数字值(或称为标号)来表示各种矢量。具体过程:由语音信号波形终k个样点的每一帧,或k个参数的每一参数帧,构成k维空间的一个矢量,然后对这个矢量进行量化。也就是将k维无限空间划分为M个区域边界,然后将输入矢量与这些边界进行比较,并被量化为“距离”最小的区域边界中心矢量值,最后将这个中心矢量利用SaveCodeBook()函数值保存在一个码本中。
2)识别。
识别的过程在预处理和特征提取的基础上,与训练过程相同,采用的也是首先对预测音频文件进行预处理,然后提取特征参数生成码本,接着依次与码本库中的码本进行误差均值计算,最后选择匹配误差平均值最小的码本,输出识别结果。判决中主要用的函数为:Dis-tanceMeasure()——对两个同维矢量求取欧氏失真度,并选择失真度最小的作为识别结果。
3)实验结果。
训练时的语音输入是:“我是北京科技大学信息工程学院的研究生”;识别时输入的语音是“今天是2010年3月15日星期一,现在是晚上十点”。图6-7a编辑框表示的是训练时语音预处理和特征提取的情况,可以看出如表6-1所示信息:(www.xing528.com)
图6-7 实验结果显示
a)训练结果 b)识别结果图
表6-1 训练实例参数
图6-7b编辑框表示的是识别结果。模板库中暂时存有5个模板。在本人的测试语音输入后,系统生成的组合特征参数与所有模板进行聚类,发现与1号模板的距离最短为26917.193249,与其他模板的距离都远远大于这个值。由于本实验在训练时输入的代号是1,最后识别的结果也是与1号匹配,即证明此功能基本实现。
2.视觉——说话人识别
在人与人的交互过程中信息大部分来源于视觉,因为人的脸部图像或者说人脸特征存在极其复杂的差异性,正如每片树叶都不同一样,人脸也各不相同。当人与情感机器人交互时,同样需要让情感机器人观察到人的面部表情,与此同时人也需要观察到机器人的面部表情。第五章的机器视觉部分详细介绍了如何让情感机器人观察、识别、跟踪人的面部表情。既然视觉通道蕴含巨大的信息量和极快的传递与处理速度,那么如何来描述一个人的模样呢?如果我们用程序语言来描述一个人的模样,花很长时间也未必能说得清楚,所以情感机器人就不能对人进行识别,而对视觉来说看一眼就一目了然了。我们就采用以下流程对说话人进行识别。
(1)人脸识别流程
说话人识别的结构如图6-8所示。首先对输入的人脸图像或图像序列进行人脸检测和定位,即从输入人脸图像中找到人脸,确定人脸位置,并将人脸从背景中分割出来,接着对分割出来的人脸图像进行标准化。这里,人脸检测与定位和标准化所做的都是人脸图像的预处理工作。然后对标准化的人脸图像进行特征提取,最后完成说话人识别,得到识别结果。
图6-8 人脸识别的流程示意图
(2)人脸图像的预处理
人脸图像的预处理主要是人脸图像的检测与定位和图像标准化问题。无限定条件被摄对象的检测与定位具有广泛的实用价值和理论研究价值,也是说话人识别中必须首先解决的问题。说话人识别中人脸图像对光照环境的变化非常敏感,随着化妆、眼镜、胡须及发型的变化而变化,这是说话人识别的难点。
所谓人脸检测就是要找出人脸可能存在的区域,通过人脸所有可能存在的区域与人脸模型的匹配度来确定,这个过程也是对人脸的建模过程。人脸检测是基于知识与统计的,其方法基本上可分为两大类,即基于知识的方法和基于统计的方法。
基于知识的方法是依据人脸的知识规定若干准则,使人脸检测问题转化为假设检验问题,这种人脸检测准则来源对人脸的直接观察,有人脸器官分布准则、人脸轮廓准则、人脸颜色纹理准则、相对背景运动准则。
基于统计的方法是将人脸图像视为一个高维向量,将人脸检测问题转化为高维空间中分布信号检测问题,它不像基于知识的方法那么直观。常用的基于统计的人脸检测方法有3种,即事例学习法、子空间法和空间匹配滤波器法。
我们将人脸检测与定位算法归为以下4类:
1)拓扑法,即通过先定位眼睛再根据人脸的生理比例确定人脸的方法。因为直接利用灰度信息,对光照条件敏感,所以这类方法要求图片的眼部有较高的质量,并能确保其具有一定的尺寸。
2)特征脸检测,即利用主元分析法训练和检测人脸。这类方法定位准确,但算法复杂,计算量大,实时性差。
3)采用神经网络的方法,此方法不适用于人脸跟踪。
4)借用肤色来确定人脸的位置,此方法实时性较好。同种族人的面部肤色在颜色空间中的分布相对比较集中,颜色信息在一定程度上可以将人脸与大部分背景区分开。
人脸图像标准化的目的是将背景、头发、服装等对人脸识别无用或造成干扰的冗余信息或干扰信息去除,使人脸图像经过标准化算法滞后,这样不仅可以保留人脸的主要信息,还有利于后续的特征提取与人脸识别。进行人脸图像标准化时,首先需要标定人脸的左右边界以及眼、嘴的位置,然后根据这些标定参量对图像进行裁剪。其次应确定一个图像缩放系数对图像进行缩放,系数的选定有不同的方法,传统的方法是先确定人眼的2个瞳孔位置,并将2个瞳孔之间的距离作为比例系数进行图像的缩放。
(3)人脸图像的特征提取与识别
特征提取是对模式所包含的输入信息进行处理和分析,将不易受随机因素干扰的基本固有信息作为该模式的特征提取出来。特征提取过程是根据实际应用要求去除冗余信息的过程,具有提高识别精度、减少运算量和提高运算速度的作用。良好的特征应具有可区分性、稳定性和独立性。从数学角度上讲,特征提取过程是一个向量变换的过程,即从原模式向量X=(x1,x2,…,xn)T变换到特征向量F=(f1,f2,…,fm)T的过程。其中,n称为数据空间维数;m称为特征空间维数。
人脸识别本质上是3维塑性物体2维投影图像的匹配问题,它的困难体现在:
1)人脸塑性变形如表情等的不确定性;
2)人脸模式的多样性,如胡须、发型、眼镜、化妆等;
3)图像获取过程中的不确定性,如光照的强度、光源方向、干扰噪声等。
人脸识别主要依据人脸上的特征,也就是说,依据那些在不同个体之间存在差异而对于同一个人具有较高稳定性信息的度量。由于人脸变化具有复杂性,因此人脸特征表述和特征提取十分困难。
人脸图像的特征提取与识别方法可归纳为几何特征法、特征脸法、局部特征法、弹性模型法、神经网络法、不变矩法、自适应主元提取法、核主元分析法、奇异值特征法、最佳鉴别向量法等。
(4)应用实例
本应用实例在对人脸识别的原理及相关技术和方法进行学习研究后,利用清华大学图像处理实验室的人脸识别开发包(以DLL形式提供)。在视觉通道的说话人识别过程中,包括人脸的注册和识别两个流程,流程框图可如图6-9所示。
在注册流程中,首先检测缓冲区图像中所有满足一定条件的人脸位置,并根据检测结果确定眼睛的位置,然后根据眼睛位置信息来提取人脸特征,将其存放入内存中,形成人脸特征模板,供识别时用。人脸识别时只需检查模板库中是否有与当前缓冲区中人脸特征相似的人脸参数便可得到识别结果。这种基于模板匹配的思路与前面所说的听觉通道上的说话人识别相似。图6-10所示为人脸注册和识别实验。
图6-9 人脸注册流程图(左图)和人脸识别流程图(右图)
图6-10 人脸注册和识别实验
在图6-10中,注册时输入的身份是“妈妈”,识别时的识别结果也为“妈妈”,即验证了视觉通道的说话人识别功能基本实现。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。