1、基于北斗的短报文离线语音技术 李彦航 李桂琴 李天才 上海工程技术大学电子电气工程学院 摘 要: 随着北斗卫星导航系统在军用以及民用方面的大力推行, Android 市场上出现了许多分体式或者一体式的北斗通讯终端, 本文分析现有用户终端输入输出方式的不足与缺陷, 提出一种离线语音技术, 能够在基于 Android 系统开发的北斗短报文通讯 APP 软件中, 利用“讯飞语音+”实现北斗短报文信息的离线语音识别输入与离线语音合成功能。关键词: 北斗通讯; 离线语音识别; 离线语音合成; 作者简介:李彦航, 男, 本科。工作单位:上海工程技术大学电子电气工程学院。作者简介:李桂琴 (通讯作者) ,
2、上海市智能制造与机器人重点实验室 (上海200072) 。作者简介:李天才, 苏州云达通信科技有限公司 (苏州 215513) 。收稿日期:2017-03-16Research on Offline-Speech Technology of Text Message Communication Based on BeiDouLi Yanhang Li Guiqin Li Tiancai Received: 2017-03-160 引言北斗系统是我国自主研发并运行控制的卫星系统, 不受其他国家的控制, 能为注册用户提供全天 24 小时的服务, 同时北斗卫星上行频率采用 L 频段 (1610162
3、6.5) MHz, 下行采用 S 频段 (2483.52500) MHz, 信号不受天气影响, 可以为用户提供全天候服务。本文研究将离线语音技术集成到现有的北斗短报文通讯软件中, 在基于 Android 系统的北斗短报文通讯中实现离线语音识别输入与离线语音合成输出的功能, 以克服由硬件条件限制而导致的信息内容输入与阅读的不便, 同时, 这也将是离线语音技术的一个全新应用。1 基于“讯飞语音+”平台的短报文通讯软件构架1.1“讯飞语音+”平台概况与构架图 1“讯飞语音+”的架构 下载原图“讯飞语音+”是基于语音技术开放平台面向移动互联网等行业应用, 开放了语音合成、语音识别、语义理解、语音对话和
4、声纹识别等智能语音交互技术的语音服务接口, 是语音云平台对外输出语音服务的载体, 其在终端设备上的表现形式是一个独立的应用程序。“讯飞语音+”的架构如图 1 所示。1.2 北斗短报文通讯总体模块本文基于的硬件平台为内嵌有北斗卫星通讯模块的 Android 智能手机通讯终端, 该模块与手机通讯终端采用 UART 串口通讯, 将手机通讯终端的命令按照北斗模块的接口协议组织成指令通过串口发给北斗模块。并通过串口接收北斗模块发过来的指令反馈结果和新指令, 将这些数据翻译后传给通讯终端。系统软件的总体模块及开发包逻辑关系, 如图 2 和图 3 所示。图 2 系统软件的总体模块图 下载原图图 3 北斗短报
5、文通讯软件使用“讯飞语音+”平台开发包逻辑关系 下载原图2 短报文通讯语音技术总体设计2.1 短报文通讯语音技术功能需求分析为了实现北斗短报文通讯的语音输入与输出, 实现语音朗读短报文、语音输入短报文的功能, 项目的功能需求分析如图 4 所示。图 4 北斗短报文通讯语音技术功能需求 下载原图2.2 北斗短报文通讯语音程序开发搭建好 Andriod 开发环境后, 需要对“讯飞语音+”平台系统进行配置, 进行初始化。在使用“讯飞语音+”平台各项能力之前, 首先需要指定授权文件所在的路径, 平台通过获取与识别开发者密钥以及应用程序序号后, 再调用初始化函数 i FLYSpeech.i FLYInit
6、 () 对“讯飞语音+”平台系统进行初始化操作当用户调用该平台完成识别或者合成功能后, 需要使用函数 i FLYSpeech.i FLYRelease () 对平台内的处理数据进行释放, 进行初始化操作的程序开发流程如图 5 所示。图 5 初始化操作的程序开发流程 下载原图“讯飞语音+”平台系统的初始化函数原型:其参数说明如表 1 所示。表 1 平台系统的初始化函数参数说明表 下载原表 (1) 获取及更新授权文件须使用 IFLYSpeech.IFLYCheck Auth () 从云端获取授权文件, 授权文件会缓存在 IFLYSpeech.IFLYSInit () 时所提供的 auth Path
7、 路径下。在过期前, 系统会直接使用此文件, 不需要再到云端下载。但一定要保证在过期之后及时到云端更新授权文件。开发者可以使用 IFLY-Speech.IFLYGet Auth Expire Time () 获取当前授权过期时间, 当此函数返回错误或者授权过期时间已经到了的时候, 再调用 IFLYSpeech.IFLYCheck Auth () 函数到云端下载授权文件。进行获取及更新授权文件操作的程序开发流程图如图 6 所示。图 6 获取及更新授权文件操作的程序开发流程 下载原图该函数无参数且无返回值, 执行后向云端提交开发者密钥, 云端验证密钥未过期后, 自动向本地下载新的授权文件, 并且覆
8、盖原有过期的授权文件。(2) 离线语音识别功能的实现“讯飞语音+”平台使用的是语音识别控件来实现中文语音的识别。应用程序通过直接调用该控件或者将该控件的动作绑定到其他 Menu 选项上的方法, 来实现在应用界面中触发时完成进行语音识别输入的动作。语音识别输入流程如图7。(3) 语音识别控件调用用户可以直接调用控件, 再按照需求设置相关的识别参数, 如识别分辨率、识别语言与本地识别引擎的文件, 最后设置回调接口用于回调实时识别后的文本结果。创建语音识别控件操作的程序开发流程如图 8 所示图 7 语音识别输入流程 下载原图图 8 创建语音识别控件操作的程序开发流程 下载原图创建对象函数原型:其参数
9、说明如表 2 所示。表 2 创建对象参数说明表 下载原表 设置识别参数函数原型:其参数说明如表 2 所示。(4) 实时识别算法实现离线语音识别在实时识别模式下, 调用 IFLY-Speech Asr.IFLYAsrRecog () 函数并不将传入的 pv Voice Data 当成所有的识别数据进行一次完整的识别, 用户可以将音频数据分多次调用 IFLYSpeech Asr.IFLYSpeech AsrRecog () 。SDK 内部会同时进行端点检测, 检测到语音起点后会随时将数据传给引擎, 实时识别操作的程序开发流程如图 9 所示。(5) 识别控件回调接口及返回结果设置识别结果回调接口函数
10、原型:其参数说明如表 3 所示。图 9 实时识别操作的程序开发流程 下载原图表 3 设置识别结果回调接口参数说明表 下载原表 识别引擎采用流式传输的方式, 可能会多次返回结果, 具体实现代码见附录。通过 public java.lang.String getResult String () 函数获取识别结果, 返回数据用 json 解包, 并通过 isr Dialog.show () 函数显示在短报文信息内容编辑框内。(6) 离线语音合成功能的实现“讯飞语音+”平台使用的是语音合成控件来实现中文语音的合成。应用程序通过直接调用该控件或者将该控件的动作绑定到其他 Menu 选项上的方法实现语音合
11、成朗读的动作。语音合成朗读流程图如图 10 所示:图 1 0 语音合成朗读流程图 下载原图3 语音识别界面实现语音输入界面的设计采取线性布局 LinearLayout, 由 newlayout.xml 布局文件来实现, 需要文本输入框右侧添加 Menu 类语音识别控件, 如图 11 和图 12。图 11 新建短报文信息输入界面 下载原图图 12 回复短报文信息输入界面 下载原图当在新建短报文界面和回复短报文界面中触发语音识别控件后, 平台上均会出现默认的离线语音识别悬浮窗口, 在一体机中测试的实际运行界面分别如图 13和图 14 所示。图 13 新建短报文语音输入中界面 下载原图图 14 回复
12、短报文语音输入中界面 下载原图4 结论本文以基于北斗的短报文离线语音技术为研究对象, 针对该软件现有的短报文输入和输出方式上的不足, 提出离线语音技术解决方案, 并设计离线语音识别输入和合成朗读的相关人机交互界面。参考文献1李记.北斗导航中国未来导航市场J.卫星网络, 2010, 30 (2) :1215. 2张勇.北斗系统在战时应急物流配送中的应用研究D.长沙:中南大学.2009. 3薛瑞.基于北斗的预警信息传输关键技术研究D.天津:河北工业大学.2011. 4黄瑞.基于北斗短报文剖分面片传输应用技术研究D.长春:吉林大学.2009. 5向贵虎.基于北斗一号卫星系统的野外车辆行动监控系统J.
13、兵工自动化, 2009, 28 (4) :2528. 6方林, 张翼飞, 刘佳佳.基于“北斗”卫星导航系统的长报文通信协议J.海洋技术.2008.3, Vol.27 (1) . 7JT/T767-2009北斗卫星导航系统船舶监测终端数据交换协议S.中华人民共和国交通运输部.北京:交通出版社, 2010. 8陈憬, 陈平华, 李文亮.Android 内核分析J.现代计算机 (专业版) , 2009, (11) . 9Liangqing Lu, Yong Li, Chris Rizos, Virtual baseline method for Beidou attitude determinationAn improved long-short baseline ambiguity resolution methodJ.Advances in Space Research, Vol.51, No.6, 2013, pp.10291034.