机器人实验系统提供下位机通信、图像获取、人脸检测、语音识别、语音合成等主要功能,使用这些功能在机器人实验系统上可以实现人工心理相关技术和理论的试验。其功能模块结构如图8-13所示。机器人系统包括下列模块:
(1)语音识别功能模块 实现中文语音的识别,并可以通过基于内容的语音情感识别来获取情感信息。
(2)语音合成功能模块 实现中文语音的合成,可以通过语音内容来表达机器人的情感。
(3)图像获取功能模块 实现视频图像的实时获取,可以用来作姿态识别,并提供与姿态相关的情感信息。
(4)人脸检测功能模块 获取人脸图像,为人脸识别和表情识别提供良好的功能模块。
(5)下位机通信模块。实现下位机通信,获取传感器信息和控制机器人动作,通过机器人的动作来表达情感。
图8-13 机器人功能模块结构
1.语音识别方案的选择
语音识别是个人服务机器人的主要支撑技术之一。语音识别技术以语言为研究对象,涉及生理学、语言学、计算机及信号处理等多个领域,是语言信号处理的一个重要研究方向。典型的语音识别系统如图8-14所示。其中,预处理包括语音信号采样,反混叠带通滤波去除个体发音差异和设备与环境引起的噪声影响等,并涉及语音识别基元的选取和端点监测问题;特征提取部分用于提取语音中反映本质特征的声学参数,如平均能量、平均跨零率、共振峰等;训练在识别前进行,通过让讲话者说出一些句子,有时需多次重复某些语音,从原始样本中去除冗余信息,保留关键数据,再按照一定规则对数据加以聚类,形成语音模式库;模式匹配部分是整个语音识别系统的核心,它是根据一定的准则(如某种距离测度)及专家知识(如构词规则、语法规则、语义规则等),计算输入特征与库存模式之间的相似度(如距离匹配、似然概率),判断出输入语音的语义信息。
图8-14 语音识别系统
目前关于中文语音识别的研制和开发的厂商有:Speechworks、Nuance、Philips、Mi-crosoft、IBM、L&H、Infotalk、中科模式识别、天朗、得意音通、安可尔通信、声硕科技等公司。衡量一个语音识别系统的优劣的标准包括:
1)对说话者的依赖程度,是否能识别非特定人的说话。
2)识别语音的类型,能识别孤立词的、断续的语音,还是连续的语音。
3)系统的词汇量,是小词汇量、中词汇量,还是大词汇量。
中科模式识别公司提供的ASR识别引擎具有易用性强、识别率高的特点,用户无需进行训练,引擎的设计已经保证了非特定人这一重要特点;API(应用程序接口)提供的管理工具可以使得用户自如地定义自己所需的词表和语法,以便应付不同的应用需求。因此,在机器人语音识别系统中,采用Pattek ASR SDK来实现语音识别功能模块。
2.语音合成方案的选择
语音合成是通过机械的、电子的方法产生人造语音的技术。TTS技术(语音转换技术)隶属于语音合成,它是将计算机自己产生的,或外部输入的文字信息,转变为可以听得懂的、流利的汉语口语输出的技术。当前,语音合成的研究已经进入文字-语音转换(TTS)阶段,其功能模块可分为文本分析、韵律建模和语音合成三大模块。语音合成系统的流程如图8-15所示。
目前进行中文语音合成的研制和开发的厂商有:捷通华声、炎黄新星、Infotalk、科大讯飞、IBM、Microsoft等公司。评价一个TTS引擎的优劣,主要有这么几个方面:合成语音的自然度、合成语音的表现力、合成性能、多种文语合成等。讯飞公司的TTS在中文合成的自然度、可懂度、音质等主要指标上均名列前茅,是国内电信级应用最多的一个TTS产品。在机器人平台中,采用iFly TTS SDK来实现语音合成功能模块的开发。(www.daowen.com)
图8-15 语音合成流程
3.人脸检测方案的选择
人脸和表情识别是机器人情感交互的重要研究方向,而要进行这些研究的第一步,就是要在图像或视频中找出人脸。人脸检测(Face Detection)是指在输入图像中确定所有人脸(如果存在)的位置、大小和位姿的过程。人脸检测作为人脸信息处理中的一项关键技术,近年来已成为模式识别与计算机视觉领域内一项受到普遍重视,研究十分活跃的课题。人脸识别或辨认、人脸定位以及人脸追踪等都与人脸检测密切相关。在机器人平台中,将人脸检测作为完整的单独功能模块,为将来机器人进行人脸识别和表情识别提供前期工作。
4.上下位机通信
(1)通信方式的选择 机器人的上下位通信结构如图8-16所示。上位机通过RS-232串行口与由单片机组成的下位机实现通信。
图8-16 上下位机通信构架
PC串行通信接口标准经过使用和发展,目前已经有几种,但都是在RS-232标准的基础上经过改进而形成的。RS-323C标准是美国EIA(Electronic Industry Association,电子工业协会)与BELL等公司一起开发的、于1969年公布的通信协议。RS-232C标准(协议)的全称是EIA-RS-232C标准,其中EIA代表美国电子工业协会,RS(Recommended Standard)代表推荐标准,232是标识号,C代表RS-232的最新一次修改(1969)。RS-232C标准最初是远程通信连接数据终端设备(Data Terminal Equipment——DTE)与数据通信设备(Data Communication Equipment——DCE)而制定的。因而,它的电平与TTL电平之间需要转换。
上位PC通信软件采用Visual C++编程。Visual C++支持面向对象的程序设计,具有结构化的事件驱动编程模式。在标准串行口通信方面,Visual C++提供了具有强大功能的串行口编程控件MSComm。MSComm控件可设置串行通信的数据发送和接收,对串行口状态及串行口通信的信息格式和协议进行设置。这是一个标准的10位串行口通信,包括8位标准数据和数据的起始位与停止位。在发送或接收数据过程中,触发OnComm事件,通过编程访问CommEvent属性,了解通信事件的类型,分别进行各自的处理。每个MSComm控件对应一个串行口,可以设计多个MSComm控件来访问多个串行口。
MSComm控件提供了功能完善的串行口数据的发送和接收功能,MSComm控件具有两种处理方式:①事件驱动方式,由MSComm控件的OnComm事件捕获并处理通信错误及事件;②查询方式,通过检查CommEvent属性的值来判断事件和错误。
(2)上下位机通信协议 在上位机和单片机的通信中,确定一个明确而合理的通信协议是关键,包括对数据结构、通信方式、传输速率、检验纠错方式及控制字符定义问题做出统一规定。上位机向下位机发送一个字节的数据信息,上位机发送信息后便等待该下位机的接收应答。当下位机接收到信息后,将接收到的数据返回上位机,如果上位机的发送数据和接收到的反馈数据一致,则表明这次通信成功。下位机根据接收到的内容给上位机发送相应的反馈信息。如果下位机反馈信息和发送信息不一致,则表明此次通信失败,上位机界面弹出发送失败提示消息。
上位机和下位机每次发送一个8位数据。数据的低4位定义了由直流电动机控制的机器人移动动作,高4位定义了由舵机控制的机器人上肢动作,其中定义了两个特殊的数据来表示胸前测距红外传感器和机器人底部的避障传感器。传感器的传输数据、机器人移动运动和上肢体动作定义分别见表8-1~表8-3。
表8-1 传感器信息定义
表8-2 移动动作控制字符定义
表8-3 上肢动作控制字符定义
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。