杨 颖,曹红兵,吴 方,杨晴龙
(阜阳师范学院 计算机与信息工程学院,安徽 阜阳 236037)
语音-文本转换技术在手机软件开发中的应用
杨颖,曹红兵,吴方,杨晴龙
(阜阳师范学院 计算机与信息工程学院,安徽 阜阳 236037)
语音-文本转换旨在将说话人语音中的词汇内容转换为计算机可读的文本输入,使计算机具有能够“听懂”人类语音的能力。基于Android智能手机平台,利用国内先进的语音-文本转换技术设计并实现了两款手机软件——商品订单查询和手机语音笔记。商品订单查询的语音功能提供了更为便捷的个性化操作。手机语音笔记的主要功能包括单人录音和多人协作录音,尤其是多人协作录音实现了多人语音交流的记录和分享。这两款手机软件具有一定的实际应用价值。
手机应用软件开发;语音-文本转换;语音查询;语音笔记
语音识别技术是将用户输入的语音信号通过识别引擎转换为对应文本的一种技术,是人机交互的一个研究热点,其应用领域越来越广泛[1]。自“苹果智能语音助手Siri”成功地将语音识别融入移动终端以来,引发了语音识别技术在移动互联网应用的发展热潮[2]。随着智能手机的迅速普及和App(application的缩写)开发的流行,语音技术的接口在手机设备上的应用也越来越多,比如语音拨号、语音搜索、语音猜歌等手机App。这些手机语音App的出现一方面为用户操作提供个性化的选择;另一方面,也为不善使用手机键盘或不识字、看不清屏幕的中老年用户提供了使用手机的新途径。
本文基于科大讯飞语音-文本转换接口在Android智能手机平台上设计并实现了两个App,即网购商品订单信息查询和手机语音笔记。这两款App具有一定的应用场景和实用价值。下文在简单介绍科大讯飞语音-文本转换接口的基础上,重点阐述两款App的设计和实现过程。
本项目采用科大讯飞Android版的软件开发工具包(Software Development Kit,SDK)进行开发,用到了应用程序编程接口API中的语音听写接口,即语音-文本转换接口。所谓语音听写就是将一段语音转换成文本的过程,把语音中包含的词汇信息提取出来,讯飞的语音听写能够识别常见的句型词汇。下面是语音-文本转换接口的设置过程:
(1)将SDK中libs目录下的Msc.jar和armeabi复制到Android工程的libs目录中;
(2)在AndroidManifest的xml文件中分别添加如下4种权限:
(i)
(ii)
(iii)
(iv)
(3)在讯飞的开放平台上注册一个账号申请APPID,创建语音配置对象,初始化使用SDK中的服务,即在程序的入口处添加初始化代码:SpeechUtility.createUtility(context, SpeechConstant.APPID+"=12345678"),其中,context参数指向本类,APPID后面的字符串是在讯飞开放平台申请的账号。
(4)创建SpeechRecognizer对象,然后设置听写参数,代码如下:mIat.setParameter(SpeechConstant.DOMAIN, "iat");
mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
mIat.setParameter(SpeechConstant.ACCENT, "mandarin ");
(5)用上述对象调用startListening方法开始听写。听写结果回调接口用Json格式返回,在onResult方法中重写printResult方法,完整地识别内容通过多次结果的累加显示出来。
网购已经成为电商时代的一种主流的购物方式。在收到网购商品前,买家希望能够及时跟踪订单当前的物流状态,为此,本文开发了一款App用于随时随地查询商品订单信息。本系统可以通过键盘输入或者语音输入订单编号的方式进行查询,操作极为方便快捷。
本系统用Eclipse进行界面设计,订单查询主界面如图1所示。在主界面中设置了3个按钮分别用于voice录音、查询订单、取消查询。“快递类型”设置为一个Spinner下拉列表,如图2所示,用于显示可使用的快递公司。在spinner.xml文件中设置快递的名称,在程序中通过type = (String) spinner.getSelectedItem(),得到被选择项的值。选择快递公司后,可以选择在“快递单号”后的文本框中键盘输入订单号或者点击Voice按钮用语音说出订单号。语音输入功能利用讯飞的语音听写接口通过SpeechRecognizer对象设置听写参数,用RecognizerListener对象来用Json格式返回听写结果。查询按钮通过下面的关键语句进行查询:QueryExpressUtil.queryExpressForNumber(number, type, code, KuaidiActivity. this, progressDialog),如果快递单号输入正确,就能得到正确的订单信息。一个查询结果如图3所示。
图1订单查询主界面
图2下拉列表显示图
图3查询结果界面
APP一般是通过手机键盘进行文本录入,而手机语音笔记则直接通过说话人语音完成文本输入。手机语音笔记的目的是通过语音系统,把说话人说的每一句话转换为文字,然后把文字保存在文件中。本文开发的手机语音笔记主要功能包括单人录音和多人协作录音,还可以根据需要将保存的语音文字分享给好友。该系统可以为个人演讲、多人开会等场景录制声音文字,具有一定实际应用价值。
由文献[3-4]的系统开发思路,经详细的系统分析和设计将手机语音笔记系统的功能划分为4个主要功能模块:单人录音、多人协作录音、查看个人资料、发送录音文件。手机语音笔记APP的功能模块结构如图4所示。
图4 手机语音笔记功能模块结构图
该软件设置了用户登录功能。用户登录之后可以看到其他登录用户,可以进行单人录音,如果需要也可以邀请其他用户一起录音,被邀请的用户会受到一个邀请提示,点击确定后可以一起录音,录音期间该软件在某一时刻只能有唯一的一个录音者。只有登录的用户点击录音按钮才可以进行录音,如果某个用户最先点击了录音按钮,那么这个用户就占有了录音功能,其他用户的录音此时不能被转换为文本,声音被转换成文本之后可以进行邮件发送给共同录制声音的人。系统主界面如图5所示,界面中的文件列表显示的是用户录音文件信息目录。
图5 手机录音笔记主界面
3.1单人录音功能
单人录音功能是将用户的录音转变成文本并保存。用户选择该项功能以后,可以在输入录音主题以后,点击录音按钮,进行录音,在选项框里把语音转化的文本信息修改以后保存,选择查看录音信息或者继续录音选项。单人录音界面如图6所示。
图6 单人录音界面
在这页面中,设置了3个EditText对象用来输入录音主题、听写内容(用添加至录音内容按钮添加到录音内容)和录音内容。点击startButton(录音)按钮,开始录音,然后通过调用科大讯飞中SpeechRecognizer对象,获取引擎参数,然后调用该对象的startListening方法,在该方法中,参数为RecognizerListener对象。 RecognizerListener接口用于获取当前识别的状态和结果,在该接口中分别重载了onBeginOfSpeech,onError,onResult方法。其中,onResult方法中识别出来的语句结果会多次返回,即会多次回调SpeechRecognizer.startListening()方法,在说话的时候会采用边上传边录音的方式分别上传音频数据,可能在没有说完一句话的时候就有返回结果。简单地说,可能会间断的一个词语一个词语的返回,而不是说完后一次性返回。如果没有说话的时候返回的结果为null,所以增加判断处理。录音结果返回的部分代码如下:
StringBufferresultBuffer = new StringBuffer();
for (String key : mIatResults.keySet()) {resultBuffer.append(mIatResults.get(key));}
mResultText.setText(resultBuffer.toString());
在点击录音后,如果说话错误,转换的文字与需要的不符时,可以再次点击,点击后就调用了SpeechRecognizer对象的setText(null)方法,使内容清空,这样就可以重新说话,修正说话内容。说完后点击previewbtn按钮,将第一次识别的结果通过赋值给mBodyText,从而添加至内容。关键代码如下:
str2=mBodyText.getText().toString();str1=mResultText.getText().toString();
str2=str2+str1;mBodyText.setText(str2);
3.2多人协作录音功能
多人协作录音功能是指用户可邀请多人参加录音,接受的人员添加到录音组中。用户邀请好友时,如果对方同意,就返回给邀请人同意信息,并把好友加入协作录音组中;如果对方不同意,不能添加到录音组中;如果对方不在线,则不能发出邀请。
录音组中的人员,界面显示为多人协作录音界面。当正在录音的人结束录音后,组内的其他人员可以抢麦克参加录音,把声音转成本文发送给组中的其他人员,麦克被抢占后,其他人员不能录音。图7描绘了多人录音的顺序图。
图7多人协作录音的顺序图
多人协作录音时的语音-文本转换的原理与单人录音是一样的,只是在广播接收器类中重载onReceive方法的时候,需要将对方的message用toString方法转换为字符串后,作为参数传给mBodyText.setText()方法中。这样一方就可以得到另一方的录音文字内容。
多人协作录音的时候,界面上显示出目前在线的用户,点击用户名后即可和该用户合作录音。图8所示的是三人一起同时录音的截图。
图8多人协作录音界面
此外,发送录音文本给好友的功能是把文件以附件的形式发送到对方的邮箱,或者将文本信息通过短信的方式发送给好友。图9是分享录音文件的界面图。
图9 分享录音文件界面
随着语音识别技术在智能手机应用中的深入研究,将会为智能手机的使用锦上添花。本文利用科大讯飞先进的语音-文本转换接口在Android智能手机平台上开发了商品订单查询和手机语音笔记两款软件。商品订单查询引入了说话人语音查询的功能,它可以根据手机用户的喜好选择键盘输入查询或者语音输入查询,更好地满足了用户需求。手机语音笔记的单人录音、多人协作录音和文件传送功能可以用于很多生活场景。手机语音APP使得人机交互方式更为灵活和方便。但是,限于说话人发音吐字的特殊性,语音文本转换的精度还有待提升。基于现阶段的研究工作,今后将尝试对语音文本转换接口进行优化,提高语音转换的准确度。
[1] 王敏妲. 语音识别技术的研究与发展[J]. 微型机与应用, 2009, 23: 1-3.
[2]百度百科. 苹果智能语音助手siri [EB/OL]. ( 2015-11-26)[2015-11-30]. http://baike.baidu.com/subview/6573497/7996501.htm.
[3] 梁晓龙. 基于Android平台语音日程软件的设计与实现[D]. 北京:北京邮电大学, 2012.
[4] 刘宪涛. 基于Android平台的手机语音识别服务客户端系统的设计与实现[D]. 北京:北京邮电大学, 2013.
Application of Speech-to-Text in the Development of Mobile Software
YANG Ying, CAO Hong-bing, WU Fang, YANG Qing-long
(School of computer and information engineering, Fuyang Teachers College, Fuyang, Anhui 236037, China)
Speech-to-Text aims at converting the lexical content of the speaker’s speech into the computer-readable text input, and making computer capable of “understanding” the human voice. Based on Android platform, the paper designed and developed two mobile applications, namely order inquiry and voice notes, by the domestically advanced Speech-to-Text technology. The voice function of the commodity order inquiry provides a more convenient personalized operation. The main functions of the voice notes include single and multi-person cooperative recording, especially the latter function achieves the recording and sharing of multi-person voice communication. In conclusion, these two mobile applications have some practical values.
app development; speech-to-text; voice query; voice notes
2015-12-12
安徽省教育厅质量工程项目(2014jyxm224,2014sjjd077,AH201410371004,2014zjjh024)和安徽省教育厅自然科学项目(KJ2013B192)。
杨颖,女,安徽蒙城人,硕士,阜阳师范学院计算机与信息工程学院副教授,研究方向为模式识别和软件开发。E-mail: yyang@fync.edu.cn
时间:2016-8-17 11:31
http://www.cnki.net/kcms/detail/34.1150.N.20160817.1131.020.html
TP311.52
A
1007-4260(2016)03-0073-05
10.13757/j.cnki.cn34-1150/n.2016.03.020