仿真手语翻译系统开发

2022-03-15 09:45杨淑莹郭杨杨
计算机仿真 2022年2期
关键词:分词手语语音

杨淑莹,田 迪,郭杨杨,赵 敏

(天津理工大学计算机科学与工程学院,天津 300384)

1 引言

随着网络视频和电视媒体的不断发展,人民日常生活中的信息和休闲娱乐越来越离不开它们,但对于听障人群而言视频和电视却可望不可“及”。据相关数据显示,全国约120个频道的1000多个电视栏目中配有字幕的实属少数其中配有实时手语翻译的更是寥寥无几[1],而作为最受全国电视观众欢迎且关注度极高的节目《新闻联播》也并未加配字幕或手语翻译。如此一来听障人群空对电视难“听”其闻,对于各种国家实事的了解也只是只言片语与社会严重脱节。

目前我国大陆现有听力残障人总数约为2054万人,占全国人口总数的1.46%[2]。但我国现有高水平手语翻译人员严重不足,国内拥有国家资质认证的手语翻译员人数不足百人[3],从事手语翻译工作的专职人员更是少之又少。想要为全部视频及电视节目字幕或是手语翻译工作量极大且手语翻译人力资源严重短缺,对于《新闻联播》这类的直播节目更是要求手语翻译迅速、严谨、准确。鉴于以上提及的各问题,开发一个能够被广泛应用的实时手语翻译系统是非常有意义且极具价值的。

对于手语翻译系统的研究,国内外学者都在不断的进行探索。早些年间微软亚洲研究院和中科院计算所就已经合作开发出了基于Kinect的手语翻译系统,能够完成手语翻译;由日本东芝公司开发的人形手语机器人也已经可以实现手语交流[4]。及至后来普遍兴起的基于传感器等相关设备的手语翻译研究,如基于传感机械设备或数据手套的手语翻译系统等[5-6]。但综合来看,以上手语翻译系统或设备虽为手语翻译领域带来了新的技术和理念,在其真正应用过程中却存在着诸多问题,如设备价格昂贵无法普遍推广、设备操作复杂易用性差等。而且现有较多研究都集中于识别手语即手语向语音的翻译,如基于Leap Motion深度传感器的手语手势识别[7]等,而进行语言向手语进行翻译的则为数不多,且现有技术多为视频合成或视频拼接[8]等方式,缺少了手语输出的直观现实性。

所以,本文依照中国手语标准,设计实现了仿真手语翻译系统,通过B/S模式实现前端页面和后台运行的互联,使用WebGL技术进行虚拟人加载和场景渲染;JavaScript语言进行虚拟人运动控制,实现虚拟仿真手语翻译;以HTML和CSS语言开发前端用户界面,集成各功能模块;以深度学习为根本算法实现快速语音识别。此仿真手语翻译系统以虚拟人代替传统翻译专员实现仿真手语翻译,较现有手语翻译系统,在实用性、直观现实和可推广程度等方面均有所提升。

2 仿真手语翻译系统设计

2.1 系统结构

为实现识别语音并将其翻译成仿真手语的功能,本手语翻译系统设计了如图1所示的系统结构共包含三大模块,分别为语音识别模块、文本处理模块和虚拟人控制模块。语音识别模块通过前端交互界面采集语音进行识别得到文本信息;文本分词模块负责把识别得到的文本进行处理,将文本转化成字词序列并传送至虚拟人控制模块;虚拟人控制模块则根据接收到的字词序列顺次调用文本对应的手语动作,将手语信息以虚拟人仿真手语动作的方式呈现在用户眼前,从而实现语音到手语的仿真翻译过程。模块之间通过网页端和后台服务器端互联实现数据信息传递,并结合WebGL的第三方图形库Three.js实现手语动作调用。

图1 系统总体结构图

2.2 系统实现流程

本文设计实现的手语翻译系统是将语音向手语的翻译过程,系统实现流程如图2所示。此系统有两种使用模式供用户选择,分别是网络视频手语翻译和说话人手语翻译。网络视频手语翻译模式类似于同声传译软件,对视频中的声音进行识别并输出仿真手语,说话人手语翻译模式则适用于车站或一些公共场所,以仿真手语作为信息载体通过屏幕传递给听障人士。采集到的语音信号要先经过语音识别模块进行预处理和特征提取,之后使用深度学习算法对其进行识别,并将语音信号对应的文本输出。语音识别得到的文本信息经过文本分词处理输出字词序列,最后将序列传递至虚拟人控制模块进行相应的仿真手语动作调用播放演示,从而实现语音到手语的翻译。为保证手语动作完整且准确的输出,在文本分词后会对手语动作库进行检索。当序列中出现没有对应手语动作的词时,会将此词登记在待补列表中,同时依次读取该词中所含文字,并将其保存成字序列进行手语动作调用尝试,即将词语中包含的所有字成分依次进行手语表示。后期及时对待补列表中的字词手语动作进行补充。

图2 系统实现流程图

3 关键技术

3.1 语音识别

近年来深度学习快速发展,CNN(Convolutional Neural Network,CNN)在图像识别和分类中的表现近乎完美[9-10],其在语音识别领域中的表现也毫不逊色,识别技术也逐渐趋于成熟[11-12]。本文将声学特征转换成图片,用CNN直接对特征图进行模型训练和识别,相较于传统方法,减少了语音信号在时域和频域上的信息损失[13],极大限度的保留了完整的声学特征更易于网络的训练和识别[14],取得了良好的语音识别效果。文中所设计的手语翻译系统在进行翻译时,先使用语音识别模块对输入的语音进行预处理和特征提取,再将其存储为语音特征图像,使用这些语音特征图像进行CNN训练和识别。语音识别流程如图3所示。

图3 语音识别流程图

为了提取到准确且具有代表性的语音信号特征,需要先对采集到的语音信号进行预处理:将语音信号通过一个高通滤波器执行预加重操作,之后执行分帧加汉明窗操作并使用能量结合过零率方法进行端点检测。预处理过后即可对其进行特征提取操作。手语翻译系统主要语音信号来源均为人声,所以本文使用符合人类听觉机制的梅尔倒谱系数(Mel Frequency Cepstrum Coefficient,MFCC)作为语音识别特征参数[15]。同时用小波包分解代替传统声学特征提取过程中的快速傅里叶变换,以Mel尺度的频率范围划分语音信号频段,保证了语音信号特征的完整性[16]。基于MFCC子带频谱的小波包分解特征参数提取流程如图4所示。

图4 基于MFCC子带频谱的小波包分解系数提取流程图

基于MFCC子带频谱的小波包分解特征参数提取过程:

1)对经过预处理的各帧语音信号进行小波包分解求得各子频带系WPKk,m,其中WPKk,m,为第k个子带的第m个小波系数。

2)计算各子频带能量

(1)

其中Nk为第k个子带的小波系数的个数k=1,2,3,……,K为所选频带的索引编号。

3)得到各子频带能量后对其进行归一化处理并执行对数运算

(2)

4)对Sk离散余弦变换得到MFCC特征:

(3)

式中,n=1,2,……,P,P为特征参数的维数。

5)提取MFCC特征后,使用矩阵可视化函数matshow()将系数矩阵转换为图像以便于后期CNN模型的训练和识别。图5为一条语音信号的特征系数矩阵转换得到的特征图。

图5 语音信号特征图

在CNN模型搭建方面,本文手语翻译系统使用包含十三层网络的CNN,由卷积层、池化层、全连接层组成。网络包含三个卷积段,每个卷积段有三层卷积层并有一层池化层作为结尾,完成图片特征局部感知和下采样。其中每一卷积层均取3*3卷积核,步长取1。并使用BatchNorm2d函数进行归一化操作,后用激活函数ReLU进行激活。池化层则均使用核大小为2*2的MaxPool2d函数取最大值。最后一层全连接层负责根据已提取的特征来实现特征图像的分类。

本次实验中为得到足够规模的训练集,以提升CNN的分类效果,征集了100名学生志愿者对选定的20条常用语句进行语音录制,每名同学对同一条语句重复5遍,共得到了1000条语音文件。选择其中800条语音作为训练集,剩余200条作为测试集对识别最终效果进行检测,在学习率设定为0.001的条件下进行了1500次训练,最终模型识别准确率为95%。

3.2 文本分词

jieba中文分词是自然语言处理领域中非常受欢迎的一种开源分词工具[17],以其使用方便、分词快速准确而备受推崇。jieba分词有三种分词模式,分别是精确模式、全模式和搜索引擎模式。其中精确模式对句子的分割最为准确,适合文本分析;全模式则将句子中所有的可以成词的词语进行扫描分割;搜索引擎模式则是在精确模式的基础上对较长词进一步切分,提高召回率。

本文使用jieba的精确模式作为默认分词模式,对语音识别得到的文本进行分词,经过分词得到的字词序列传送至虚拟人控制模块按顺序依次调用对应的仿真手语动作。如果出现没有对应手语动作的词时,依次读取该词中所含文字,并将其保存成字序列进行手语动作调用尝试,即将词语中包含的所有字成分依次进行手语表示。例如,句子“我是天津理工大学开发的手语翻译员”的分词结果为“我/是/天津/理工大学/开发/的/手语/翻译员”,但其中“理工大学”并没有对应的手语动作,所以对该词依次读取其中文字按字序列进行手语动作调用。通过字候补的字词序列调用方式最大程度的保证了仿真手语输出的完整性。

3.3 虚拟人

3.3.1 虚拟人制作

本文使用建模动画软件Maya进行模型制作和关键帧动画制作,先通过多边形建模[20]的方式建立大体轮廓模型,再分别从“面”、“线”、“点”各层次逐级完善3D模型,并为其身体各部分添加材质[17],如衣服、皮肤、头发等。之后为模型创建骨骼并进行蒙皮,本文中的模型为类人型动画模型所以可以直接使用HumanIK[20]插件生成一副骨架,然后依次调整各关节的位置使其与文的人物模型相匹配。同时选中骨架及模型文件点击“装备中的”“蒙皮”选项完成蒙皮绑定。完成骨骼及绑定后使用权重绘制工具对各部分关节的蒙皮权重进行绘制[17],使各部分关节合理带动相应部位的蒙皮。为方便后边动画的制作,可在HumanIK插件中点击“一键生成控制器”为各部分关节建立控制器。带有骨骼的虚拟人模型及模型控制器如图6所示。

图6 带有骨骼的虚拟模型及模型控制器

本文采用关键帧动画技术[21]来为模型创建动画,选中需要添加动作的控制器并调整其位置达到最终效果即完成此关键帧。表示“你好”的仿真手语关键帧如图7所示。为使手语动作的播放效果更贴近于人工手语动作,本文设置帧频率为24,每个关键帧的间隔为20帧,即先后动作间隔约为一秒的时间。完成关键帧动画之后使用Maya中的Babylon插件对模型中的动作进行分组,记录每个动作的起止帧设为模型的动画序列,并以手语动作表示的含义对动作命名。最后,导出模型文件。

图7 表示“你好”的仿真手语关键帧

3.3.2 手语动作库

为实现手语翻译系统的手语展示功能,还需要建立一个完整的手语动作库。本文使用先进的三维动画制作软件Maya来实现动画制作过程,按手语的种类划分动画动作组,完成手语动作库的建立。此种建库方式,相较于使用数据手套采集手语动作轨迹信息方法省去了购买高昂设备的成本,也随之省去了复杂的设备及技术操作流程;相较于北京工业大学朱婷婷[22]等人手语视频合成的方式,在提高手语动作现实性、增强直观动作传输方面都有很多提升。因此结合Maya制作三维立体模型并创建手语动作库最后通过WebGL的相关技术实现网页端直观显示3D模型实现手语翻译的方式是十分可行且非常有效的。

本次实验中以手语翻译系统的应用场所作为划分标准,共制作了16组不同主题的手语动作库。主题主要涉及存在听障人沟通障碍的生活场所,如医院、车站、餐厅等。每个主题中包含200个词语手语动作,覆盖大部分常用语句。每个手语动作以词作为主要分割标准同时辅以单字,即对于“天气”和“天”这一类会同时对词和字进行动作设定,保证手语动作的完整性。

3.3.3 虚拟人交互设计

为此手语翻译系统通过使用WebGL的第三方图形库Three.js[23]来实现虚拟人三维模型的网页端可视化展示,通过Three.js的相关操作实现指定手语动作控制。首先要设置模型展示环境,对要展示模型的环境进行初始化。通过初始化相机、添加场景并为其设置背景和雾化效果、添加灯光来构成展示模型的基本环境,之后通过Three.js的WebGLRenderer()方法来为环境进行渲染,以实现理想的三维立体环境效果。完成模型展示环境设置以后即可加载虚拟人模型。对于本系统使用的glTF模型首先要添加模型加载器,然后为模型实例化一个指定加载器,之后通过loader.load()函数将虚拟人模型加载到对应页面。完成虚拟人配置之后,便可以结合其他模块调用相关.js语句实现虚拟人手语动作展示。

4 仿真结果

本文使用Python3.7语言开发后台语音识别和其它系统结构,使用PyTorch深度学习框架搭建神经网络。仿真手语翻译系统界面如图8所示,其中包含:功能演示、功能模式选择、虚拟人视窗和识别结果文本框。在说话人手语翻译模式中,通过界面上方的控制按钮进行语音采集和识别,识别完成后虚拟人将以仿真手语的形式展示语音所表示的手语动作。

图8 翻译系统界面图

作为系统测试,随机输入一段语音进行实验并对其结果进行分析。以“我爱天津理工大学”作为语音输入。得到的仿真手语呈现在虚拟人框中,同时识别得到的对应文本将在文本框中显示。“我爱天津理工大学”对应的仿真手语动作连续截图如图9所示。

图9 表示“我爱天津理工大学”的仿真手语图

在视频手语翻译模式中,在视频框中选择要进行手语翻译的视频并打开,在此以随机一期新闻联播节目作为测试,在视频开始播放后系统将会自动进行识别并输出对应的仿真手语和文本内容。

图10 翻译系统界面图

5 总结

本文设计开发了仿真手语翻译系统,实现了语音到仿真手语的翻译过程,以仿真虚拟人取代一些现有翻译设备中价格昂贵的机械手语翻译设备,可推广性和实用性优势明显;同时其特有的虚拟仿真效果使其能够媲美手语翻译专员,较现有的一些视频合成手语系统在手语展示翻译效果方面也有很大的优势。此系统有效的解决了翻译人员短缺的问题,且系统使用成本低、操作方便简单,是可惠及所有听障人的实用性翻译系统。

此仿真手语翻译系统虽使用简单、手语翻译反应迅速,但对于虚拟人的手语动作含量(即手语动作库容量)要求较为严格。本次实验中制作的3200个手语动作在日常交流对话使用中表现良好,但在包含内容较多涉及场景广泛的视频翻译中手语动作库则略显不足。所以接下来将开发基于根手语动作的可合成类手语翻译系统,以根手语动作为基础,结合驱动引擎来完成手语合成,将其建设成一个完整且实用的仿真手语翻译系统。

猜你喜欢
分词手语语音
微信语音恐惧症
分词在英语教学中的妙用
魔力语音
Magic Phonetics魔力语音
结巴分词在词云中的应用
结巴分词在词云中的应用
无声的世界里,怎样唱一首歌?
对方正在输入……
奇怪的手语图
聚焦现在完成进行时