该文主要介绍了在Android平台上设计和实现的一款服务于盲人的手机应用软件,开发该软件主要有两个目的:第一是用智能手机服务于盲人的生活;第二是让盲人的生活也能像正常人一样丰富多彩。针对盲人的特殊需求,该软件设计了三大模块:基本应用模块、生活模块和娱乐模块。软件的主要功能有:语音拨打电话、语音发短信、导盲、天气预报、语音控制播放歌曲等功能。软件开发使用到的核心技术主要有要核心技术有:语音合成、语音识别、百度定位、百度导航、百度天气、网络编程和SQLite编程等。有了该款软件,盲人也能像正常人一样享受智能手机带来的便利。
1.绪论
1.1开发背景
教育心理学研究表明,人类不同感觉器官获取信息的比例,83%来自于视觉,11%来自于听觉,只有6%来自于其他,这就意味着盲人朋友从外界获取到的信息量非常少,根据最新调查显示,我国目前的盲人数量为700-800万,占世界盲人总数的18%,另外双眼低视力患者达1200万,陪伴他们的不应该只有盲道和盲杖,基于这样的需求,笔者专为盲人开发了一款盲人语音应用软件,目的是让盲人也能像正常人一样享受智能手机带来的便利。
1.2研究现状
国外目前比较成熟的智能语音软件有三款:苹果公司开发的Siri、谷歌公司开发的GoogleTalk和微软的小冰。但是Siri只能运行在IPone4s以上版本的手机上,而且苹果手机的价格比较昂贵,并不是所有的`盲人朋友都能使用iPhone手机;而GoogleTalk对中文的识别率不是很理想,而微软小冰目前还没有推出专门针对盲人的功能。
2.研究内容
该款软件用到的相关技术有iFLY Mobile Speech Platform 2.0、百度地图API 、百度天气预报API、蓝牙通信、Android OS架构等。基于盲人的特殊需求,该软件分为三个模块进行设计,分别是基本应用模块、娱乐模块和生活模块,系统功能架构图1所示,框架图中列出的所有功能均已实现。
3.系统关键功能介绍
3.1 语音拨打电话逻辑设计
设计该模块的目的主要是方便盲人打电话,当用户需要打电话时,点击屏幕任意位置,发出相应指令给该软件,软件识别出指令后,对指令进行分析处理,即可达到用户需求。发指令时,用户有两种选择:第一种是“打电话给+联系人姓名”,此时系统将调用手机数据库中的通讯录查找该联系人,如果找到该联系人则直接拨号,否则提示未找到该联系人;第二种是“打电话给+电话号码”,此时系统直接提取号码进行拨号。
3.2语音播报来电信息并自动接听
移动设备装上该软件后,该软件将一直监听手机的状态,当监听到有电话打进时,系统将在手机数据库的通讯录中查找联系人,如果找到,则语音提示“您有电话来自某联系人”,否则直接播报“您有电话来自‘电话号码’”。系统为语音播报预留20S,20S过后,系统自动接听电话,接听后提示“接通成功,祝你们沟通愉快!”。
3.3及时朗读短信功能模块
该模块主要使用Android的监听机制完成,添加一个BroadcastReceiver来监听操作Android.provider.Telephony.SMS_RECEIVED。此操作在设备收到SMS消息时由Android广播,只要收到SMS消息,就会通知应用程序[7],应用程序收到广播后就会语音通知“有新信息来自+联系人”,然后调用语言合成功能播报短信给用户。
3.4定位附件的餐馆
当盲人向应用发出语音指令“我好饿。”或其他与吃饭有关的语言指令时,系统自动为盲人定位到当前位置附近5000米内的所小吃店和餐馆,盲人知道了附近的餐馆名称后,即可用语音导航功能定位到餐馆所在的地点,并就餐。
3.5天气预报功能
应用中添加了天气预报功能,该功能需要获取盲人用户所在的位置,然后用盲人的位置作为参数向百度天气发出天气请求,软件接收到返回结果后,对返回的Json数据进行解析,根据用户不同的请求做出不同的回应。
3.6娱乐功能
笔者曾到盲人学校进行调查,发现很多盲人性格都比较孤僻,不喜欢与别人交流,因此笔者在应用里加入了一系列娱乐功能,包括智能聊天、讲故事、讲笑话、百度百科等,以此来丰富盲人朋友的生活。
4.系统功能实现
4.1语音合成功能实现
语音合成和语音识别是该款软件的核心,这两个功能的实现借助了科大讯飞语音平台,语音识别功能的关键代码如下:
publicvoidYuyinHecheng(Context context, String t){
mTts = SpeechSynthesizer.createSynthesizer(context, mTtsInitListener);
mSharedPreferences = context.getSharedPreferences(TtsSettings.PREFER_NAME, Activity.MODE_PRIVATE);
setParam();
int code = mTts.startSpeaking(t, mTtsListener);
if (code != ErrorCode.SUCCESS) {
if(code == ErrorCode.ERROR_COMPONENT_NOT_INSTALLED){
}else {}}}
4.2语音识别功能实现
实现该功能需要创建一个RecognizerDialogListener对象,然后复写该对象的2个方法,onResult()和onError()。其中关键的是onResult()方法;该是语音识别结果回调方法,控件采用边录音边发送的方式,可能会多次返回结果在调用时要判断是否是最后一次返回,在该方法里可得到识别结果,然后对识别结果做处理。privateRecognizerDialogListenerrecognizerDialogListener = newRecognizerDialogListener() {
publicvoidonResult(RecognizerResult results, booleanisLast) {
// 把自然语言转化成文字
String text = JsonParser.parseIatResult(results.getResultString());
editText1.append(text);
if (isLast) {
if (flag == 1) {
smsInfo = editText1.getText().toString();
}
4.3 语音拨打电话功能
系统启动后,用户点击屏幕,用户可发两种指令,若发语音指令“打电话给付靖玲”,若手机中存有名为“付靖玲”的联系人,应用将拨打电话给“付靖玲”;若发语音指令“打电话给10086”,应用将拨打电话给10086。实现该功能需要两步操作:第一步,在AndroidManifest.xml中添加用户权限。第二步,判别识别结果并调用打电话功能,该部分代码必须写在语音识别控件RecognizerDialogListener的音识别结果回调方法onResult()中。
4.4语音播报天气
该盲人手机的语音应用软件运用了百度的天气预报API,实现了给使用者播报天气信息的功能,该功能可播报用户所在城市近三天的天气情况。代码实现如下:
buffer = newStringBuffer("http://api.map.baidu.com/telematics/v3/weather?");
buffer.append("location=").append(URLEncoder.encode(lCityName, "utf-8"));
buffer.append("&output=json");
buffer.append("&ak=").append("AINCvl9FxeNWQiWEML1rpyen");
buffer.append("&mcode=").append("百度秘").append(";").append("a.com.fjl.main");
5.手机应用界面图
下图展示了语音拨打电话模块的界面图,图示如下:
6.作品创新点
任意一款装上了该软件的智能手机都可以供盲人使用,没有机型的限制。此外,不仅盲人朋友可以使用该软件,老人和不会使用智能手机的朋友也可以通过安装该软件享受智能手机带来的便利,让老年朋友的生活丰富多彩。笔者在完成软件的开发工作后,曾到盲人学校进行测试,受到盲人朋友的一致好评,目前该软件正在推行中,已有800人左右的盲人用户在使用该软件。
7.小结
盲人手机的语音应用软件是一款方便盲人使用智能手机而开发的手机应用软件,它避免了繁琐的输入,该软件目前还在完善中,增加聋哑人模块,最终达到一体化服务于残疾人的目的。
本文来源:http://www.010zaixian.com/shiyongwen/2164586.htm