使用Android自带的TTS实现语音播报(电话号码)功能
来源:互联网 发布:olay新生塑颜系列知乎 编辑:程序博客网 时间:2024/05/14 07:42
事先声明:该文章参考以下几篇文章,如果大家想看,可直接点击进入:
https://github.com/SolveBugs/Utils/blob/master/SpeechUtils.java
http://blog.qiji.tech/archives/13040
http://blog.csdn.net/ichliebephone/article/details/5802044
https://developer.android.google.cn/reference/android/speech/tts/TextToSpeech.html
最近做的产品有一个需要边输入电话号码边进行语音播报的简单功能,一开始采用的是使用MediaPlayer事先播放,但效果与IOS相比,真的是差强人意,所以转换了种思路,在网上搜索解决方案,原来Android系统有自带的语音播报功能(TTS:TextToSpeech,以后需要多多了解Android的API了,汗颜)。
当然在写这篇文章的时候,对于整个tts包(android.speech.tts)中的所有类并不是全部了解熟悉,所有有需要的同学可以自己再去学习和了解。而使用TTS其实很简单,大概就分成三步(当然是我很浅显的理解):
1、初始化TTS对象
TextToSpeech mTts = new TextToSpeech(context, mInitListener);
context就不用说了;mInitListener指的是TextToSpeech.OnInitListener,是构造TextToSpeech对象的第二个参数,所以需要实现该接口,具体实现代码如下:
private final TextToSpeech.OnInitListener mInitListener = new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { int result = mTts.setLanguage(Locale.CHINESE); mTts.setPitch(1.0f); mTts.setSpeechRate(1.0f); if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { LogUtils.e("Language is not available."); } } else { LogUtils.e("Could not initialize TextToSpeech."); } } };
setPitch()方法用来控制音调;
setSpeechRate()用来控制语速;
当然也可参考第三个链接,会更详细;
2、调用speak()
mTts.speak(s, TextToSpeech.QUEUE_ADD, null);但该方法已在API21废弃了,s表示要播报的字符串
3、销毁TextToSpeech对象,在无用时销毁该对像
public void closeVoice() { if (null != mTts) { mTts.stop(); mTts.shutdown(); } }
注:TTS读语音数字的时候需要用空格隔开,如150需要写成1 5 0,读“一五零”,否则TTS会读成“一百五十”
源码地址:https://github.com/LomoLin/Lomo/blob/master/app/src/main/java/com/lomo/utils/VoiceUtils.java
以上只是做一个简单的记录,如有什么不正确的地方,请指教,谢谢!- 使用Android自带的TTS实现语音播报(电话号码)功能
- android TTS语音播报
- Android自带实现语言播报功能(针对英文)
- Android自带的TTS功能
- android 语音播报(通过手说tts 实现中文语音播报)
- Android 自带TTS 使用
- iOS项目开发—TTS技术的实现即语音播报(实现方法一)
- MediaPlayer实现金额的语音播报功能
- MediaPlayer 实现金额的语音播报功能
- tts语音播报
- TTS—语音播报
- 语音播报TTS
- Android 语音播报实现
- java实现语音播报功能
- 使用讯飞tts实现安卓语音中文合成播报
- Android进阶:Google自带语音播放功能实现
- android tts语音使用的一些资料(转)
- 获得语音播报的功能
- 灰度变换:imadjust and stretchlim
- 24_方法_方法的本质_形参_实参_return语句
- c#多线程对于字典型的处理
- Flask-SQLAlchemy 学习总结
- containing block和BFC
- 使用Android自带的TTS实现语音播报(电话号码)功能
- Openlayers之加载MapQuest地图
- IE7和IE9中有关于javaScript的兼容问题
- oracle 索引比表大的情况测试
- js函数中参数的传递
- andfix增量升级更新 热补丁修复
- 单机存储系统
- ant使用教程--基础篇
- java中的Queue