随着经济的发展,生活水平的提高,人们越来越喜欢外出旅游。 旅游时为了尽快到达景点,需要有专业的导游来引路,为了了解景点的背景故事和相关信息,需要导游来讲解。 也就是说导游主要有引路和讲解两大作用。 如今手机上的导航功能已经非常完善,人们可以按照导航的提示顺利地找到景点,那么导游的讲解作用能不能通过手机自动化来完成呢? 本文基于语音合成技术和手机定位技术设计了一款智慧导游系统。
一、系统设计
导游每到一个景点,便给游客讲述该景点相关的背景故事和相关信息,基于此,要在手机上实现讲解功能,首先要确定游客的位置处于哪一个景点,然后要通过手机把讲解内容播放出来。 讲解的内容可以在事先录制好语音直接播放,但是这样录制的工作量很大,而且如果内容有变更就需要重新录制,很不方便,而采用语音合成的方式就可以很好地解决这个问题,因此该系统通过语音合成技术来实现导游的讲解作用。通过手机端和云平台的交互来完成讲解功能。 构建一个景区服务云平台,各个景区可以在该平台上注册,并上传每个景点的位置信息和讲解文字。 游客在景区游览的时候,通过GPS定位在百度地图云平台上获取游客的位置信息,手机端在景区服务云平台上查找该位置是否在某景点范围内,当游客进入某景点之后,手机端从云平台上获取该景点的讲解文字,并通过讯飞语音云平台合成相关的讲解语音,播放给游客听,使得游客可以了解该景点的信息。 比如游客走过一座桥,或者走近一个亭子,就可以播放相应的解说信息。 对于有些离得比较近、比较小的展品,比如一件古董,一副字画,可以在展品边缘处贴上二维码,游客可以扫描二维码获取相关的解说语音。
二、 语音合成
2. 1 语音合成技术简介
语音合成技术经过共振峰合成、波形拼接合成、基于隐马尔可夫模型的统计参数合成几个发展阶段 ,现如今主要通过深度神经网络合成。 基于深度神经网络进行语音合成的原理。 在训练阶段,把语音数据集分为文本数据和语音数据,对文本数据先进行前端处理,生成语言规范,然后对语言规范构建语言特征,对语音数据提取其声学特征,将语言特征和声学特征合起来进行深度神经网络训练,生成回归模型。 在合成阶段,首先对文本数据进行前端处理,然后构建语言特征,接着送入训练好的模型,生成相应的声学特征,最后通过波形重构合成语音。
2. 2 语音合成流程
如今,谷歌、微软、百度、科大讯飞等公司都已经开发出了比较成熟的语音合成技术,其中科大讯飞的语音合成技术在中文领域达到了世界领先的水平,所以该系统采用科大讯飞的语音合成技术。使用讯飞的语音技术进行语音合成,主要是通过手机端和讯飞云平台的交互来完成,具体流程如下:
①从讯飞云平台上下载讯飞移动语音终端的SDK,将SDK压缩包中libs目录下所有文件复制到Android 工程的libs目录下。
②在Android工程的AndroidManifest. xml文件中添加用户权限,比如连接网络的权限、存储的权限、使用摄像头的权限等。
③在手机端使用SpeechUtility. createUtility创建语音配置对象,把appid、engineMode等参数传递给云平台,云平台进行初始化。
④设置引擎类型ENGINE_TYPE,讯飞的语音合成分为离线合成TYPE_LOCAL和在线合成TYPE_CLOUD两种,离线合成的效果稍差一点,在线合成是默认的合成方式,为了得到较好的语音效果,该系统采用在线合成。
⑤配置发言人,语音合成的主要参数包括语言、方言、语气、语速、音量、语调等,在讯飞语音合成中,前三个参数通过预定好的不同发言人来区分,使用voiceName 来设定,后几个参数可以灵活定义,通过设置发言人和参数可以创建不同的合成音色。
⑥手机端从景区服务云平台获取讲解文字,把文字传给讯飞云平台进行合成。
⑦讯飞云平台把合成的语音传递给手机端,手机端使用mTts. startSpeaking进行播放。
⑧播放的过程中监听游客的命令,比如暂停播放、继续播放,或已离开景点自动停止播放等。
三、 地图定位
要在特定的景点给游客播放指定的语音,关键在于准确定位游客所处的位置,百度地图云平台提供了比较准确的地图定位服务,因此该系统使用
百度地图的定位服务对游客进行定位。 定位的流程,具体流程如下:
①从百度地图云平台上下载Android定位SDK,解压缩后将 libs 中的jar文件和 so 文件放入Android工程的相应位置。
②百度地图定位SDK从4.0 版本起,需要进行AK 验证,因此需要先申请 AK,并在AndroidMani⁃fest. xml文件的Application标签中添加AK。
③地图定位需要使用定位service,因此需在Application 标签中声明 service 组件,除此之外还需添加网络权限、GPS权限、Wi⁃Fi权限等。
④在主线程中声明一个LocationClient类对象,通过getApplicationContext方法获取Context参数,把该参数传入LocationClient,并注册监听函数 MyLoca⁃tionListener。
⑤配置定位参数,为了准确定位游客所处的位置,设置高精度定位模式,同时使用网络定位和GPS定位,为了方便获得经纬度数据,经纬度坐标类型选择百度经纬度坐标 BD09ll 类型,并进行连续定位。
⑥用BDAbstractLocationListener监听接口进行监听。
⑦用mLocationClient. start函数发起定位, 从BDAbstractLocationListener监听接口中获取定位信息。
四、 目标景点选择算法
一个景区内会有多个景点,对游客进行定位后需要选择游客正在游览的目标景点,对目标景点进行解说。
五、系统实现
为了实现智慧导游,设计的系统功能模块主要包括景点管理、展品管理、路径导航和语音讲解四个模块,景区管理者使用景点管理和展品管理两个模块,游客使用路径导航和语音讲解两个模块,通过设置不同的角色、授予不同的权限来区分。 在景点管理模块,景区管理者可以对景点按位置进行管理,设置每个景点的地理范围以及游客进入该景点的解说词。 在展品管理模块,景区管理者可以对展品进行编号,对每个编号生成一个二维码,设置相应的解说词。 在路径导航模块,游客可以查询从一个景点到下一个景点的路径,该模块通过百度地图的导航功能来实现。 在语音讲解模块,定位讲解功能先通过百度地图云平台定位游客所处的位置,然后按照目标景点选择算法选择游客正在游览的景点,接着查询该景点的解说词并合成语音播放。当两个景点距离很近时,为了避免定位误差造成的错误,除了通过目标景点选择算法计算外,还可以在解说词前加上“在您前方有某景点 1 和某景点 2,现在向您讲解某景点 1”之类的提示语音使游客明确目前的讲解对象。 扫码讲解功能用来讲解展品,游客扫描二维码后系统读取对应的解说词,然后把解说词合成语音播放出来。该系统分为服务器端和客户端,服务器端基于Java EE 开发,构建一个景区服务云平台,实现景点和展品数据的增删查改,客户端采用手机上常用的 Android 系统,通过网络向景区服务云平台发送请求。
六、系统测试
经测试,在网络稳定、相邻的景点距离较远的情况下,该系统能够依靠百度地图云平台准确定位到游客所处的位置,从景区服务云平台上快速取得解说文字,通过讯飞语音云平台顺利合成语音播放,自动完成智慧导游功能。 在相邻的两个景点距离较近时把目标景点选择算法和提示语音结合起来使用,能给游客带来良好的使用体验。