android盲人APP中语音播放的问题

2014年09月22日 Android 5条评论 阅读10186次

android盲人APP中语音播放的问题

最近在考虑着为盲人做android应用一事相关的问题。

盲人和其他视力正常的人群最大的不同点就是不能用文字展示出来,所以语音播放的功能就顺势而出了。
在考虑语音播放时,想到了两个思路。其中一个是事先录制一些音频文件,作为资源文件在android应用中使用MediaPlayer去播放。
另一个思路就是使用android平台的TTS功能。

两种思路各有优劣,先说思路一,支持性好,也就是说录制好之后,只要是现在市场上主流的手机都能正常使用,缺点则是,自己录音显得很不专业,并且只是录制固定内容的声音,如果应用中有可变的东西,声音就没法播放了。
思路二,虽然说是android平台的一个功能,但考察过很多型号的手机后发现,感觉TTS基本都被阉割掉了。如果想用TTS功能,则还需要安装第三方TTS引擎服务的APK或插件。

基于上面的比较,我先使用思路一试探一下这条路,但做着做着总感觉中间录音过程太多,并且频繁读写文件到SD卡,再加之后考虑到后续用户有可能删除文件的异常操作,所以就放弃了。
虽然放弃了,但还是有点值得记录的。

接下来就必须和TTS拼一把了。虽然手机厂商的各种问题,但幸好市场上还有很多这种第三方语音发音库的出现,使得问题变得容易多了。
第三发语音支持,我使用了大名鼎鼎的讯飞,完美支持中英文的,赞!

使用中还是出现了很多问题,先记录下下面的问题。

09-18 19:23:25.193: I/TextToSpeech(30319): Sucessfully bound to com.iflytek.tts
09-18 19:23:25.193: I/TextToSpeech(30319): Connected to ComponentInfo{com.iflytek.tts/com.iflytek.tts.TtsService}
09-18 19:23:25.203: I/Timeline(30319): Timeline: Activity_idle id: android.os.BinderProxy@41b327f8 time:196691720
09-18 19:23:25.203: I/TextToSpeech(30319): Set up connection to ComponentInfo{com.iflytek.tts/com.iflytek.tts.TtsService}
09-18 19:23:25.203: I/Timeline(30319): Timeline: Activity_idle id: android.os.BinderProxy@41b327f8 time:196691727
09-18 19:23:29.923: D/Camera-JNI(30319): stopPreview
09-18 19:23:30.083: D/Camera-JNI(30319): release camera
09-18 19:25:24.803: I/Timeline(30319): Timeline: Activity_idle id: android.os.BinderProxy@418c8f78 time:196811323
09-18 19:25:45.033: I/Timeline(30319): Timeline: Activity_launch_request id:xx.xx.xxx.xxxx time:196831552
09-18 19:25:45.703: I/Timeline(30319): Timeline: Activity_idle id: android.os.BinderProxy@41f26360 time:196832227
09-18 19:25:45.903: E/ActivityThread(30319): Activity xx.xx.xx.activity.XXXXActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@41d8b4c8 that was originally bound here
09-18 19:25:45.903: E/ActivityThread(30319): android.app.ServiceConnectionLeaked: Activity xx.xx.xx.activity.XXXXActivity has leaked ServiceConnection android.speech.tts.TextToSpeech$Connection@41d8b4c8 that was originally bound here
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:979)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:873)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1582)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.ContextImpl.bindService(ContextImpl.java:1565)
09-18 19:25:45.903: E/ActivityThread(30319): at android.content.ContextWrapper.bindService(ContextWrapper.java:524)
09-18 19:25:45.903: E/ActivityThread(30319): at android.speech.tts.TextToSpeech.connectToEngine(TextToSpeech.java:687)
09-18 19:25:45.903: E/ActivityThread(30319): at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:657)
09-18 19:25:45.903: E/ActivityThread(30319): at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:610)
09-18 19:25:45.903: E/ActivityThread(30319): at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:584)
09-18 19:25:45.903: E/ActivityThread(30319): at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:568)
09-18 19:25:45.903: E/ActivityThread(30319): at xx.xx.xx.activity.ActivityBase.onActivityResult(ActivityBase.java:50)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.Activity.dispatchActivityResult(Activity.java:5457)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.ActivityThread.deliverResults(ActivityThread.java:3364)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3411)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.ActivityThread.access$1300(ActivityThread.java:138)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
09-18 19:25:45.903: E/ActivityThread(30319): at android.os.Handler.dispatchMessage(Handler.java:102)
09-18 19:25:45.903: E/ActivityThread(30319): at android.os.Looper.loop(Looper.java:136)
09-18 19:25:45.903: E/ActivityThread(30319): at android.app.ActivityThread.main(ActivityThread.java:5050)
09-18 19:25:45.903: E/ActivityThread(30319): at java.lang.reflect.Method.invokeNative(Native Method)
09-18 19:25:45.903: E/ActivityThread(30319): at java.lang.reflect.Method.invoke(Method.java:515)
09-18 19:25:45.903: E/ActivityThread(30319): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:780)
09-18 19:25:45.903: E/ActivityThread(30319): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:596)
09-18 19:25:45.903: E/ActivityThread(30319): at dalvik.system.NativeStart.main(Native Method)
09-18 19:25:46.623: I/Timeline(30319): Timeline: Activity_launch_request id:xx.xx.xxx.xxxx time:196833142
09-18 19:25:47.033: I/Timeline(30319): Timeline: Activity_idle id: android.os.BinderProxy@428e2260 time:196833555




分享本文至:

WRITTEN BY

avatar
本文标签:盲人语音TTS
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

5 条评论

  1. avatar 合肥网站建设

    码农的世界,很难被人看懂啊。

  2. avatar 金浩秋

    完全不明白哈。

  3. avatar 装修

    呵呵,造福社会的事,支持一下,最后求回访一下下鸟。

  4. avatar 进销存软件

    非常不错的文章,过来看看学习,希望博主分享更多好的文章。

    【轻松掌柜软件】-关注中小企业及管理软件应用

  5. avatar 电子变压器

    呵呵,大神,一串串代码,完全不明白哈。

欢迎留言




用户登录

sitemap