概述

  • 如今,机器人崛起,而语音正是机器人的一个必要的技能,想想如果一个机器人听不懂人说的话,那它只能是机器,而不能冠以“人”之名
  • 科大讯飞,想必是现在最火的一家公司之一吧,其拥有好几年的技术经验的积累,观望以前,技术的不成熟:神经网络算法的不成熟,硬件上的瓶颈,等等,这些,都让从前的科大讯飞吃尽了苦头。但是,现在却不同了,随着硬件上关键的突破,软件上的突破,机器学习,语音分析的成熟,再加上这些年来的技术积累以及数据的沉淀,科大讯飞也就迎来了她的春天。

今天我要谈的就是语音分析。总所周知,android系统是外国佬谷歌开发的,因此android系统的默认语音TextToSpeech是不支持中文的,但是现在使用android的系统有很多,使用语音功能的应用更多,尤其在国内,但是由于谷歌的限制,TextToSpeech不支持中文,科大讯飞的语音包(sdk)场景是需要收费,难道就无计可施了,今天我就带大家巧妙的绕过这些限制,实现中文语音播报功能。(不过,国内部分高版本的手机由于已经集成了科大讯飞为默认语音引擎,那么恭喜你,你可以安心使用,本文只正对部分比较老的版本android手机)

准备工作

只需要去各大应用商店下载讯飞语句安装包,安装后,把讯飞语句设置为默认引擎即可。
安装完科大讯飞语句后,话不多说,直接上代码,快速实现语音播报功能

开始编码

  1. 首先,我们只需要实现TextToSpeech.OnInitListener接口,并在onStart生命周期实例化TextToSpeech
@Overrideprotected void onStart() {super.onStart();if(mTextToSpeech == null){mTextToSpeech = new TextToSpeech(this, this);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规mTextToSpeech.setPitch(1.0f);//设定语速 ,默认1.0正常语速mTextToSpeech.setSpeechRate(1.5f);}}

2.既然有实例化,就有回收,回收再对应的 onStop生命周期实现回收:

   @Overrideprotected void onStop() {super.onStop();try{if (mTextToSpeech != null) {mTextToSpeech.stop(); // 不管是否正在朗读TTS都被打断}} catch (Exception e){e.printStackTrace();} finally {mTextToSpeech.shutdown(); // 关闭,释放资源mTextToSpeech = null;}}
  1. 有了实例化,下面就应该要mTextToSpeech大声高歌了吧,此时你会发现主要监听onInit的status是否SUCCESS,你会发现onInit回调会给我们对应的初始化状态是否成功
@Overridepublic void onInit(int status) {//如果初始化成功if (status == TextToSpeech.SUCCESS) {canSpeck=true;int result = mTextToSpeech.setLanguage(Locale.CHINA);if (result == TextToSpeech.LANG_MISSING_DATA|| result == TextToSpeech.LANG_NOT_SUPPORTED){Toast.makeText(this,"数据丢失或不支持",Toast.LENGTH_SHORT).show();}}}

我们可以在onInit方法里setLanguage为我们想要的语种,比如CHINA,本例设置的是中文。

  1. 正式调用speak方法,实现语音播报,这里我们就歌颂我们伟大祖国
      findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.e("TAG","this is can "+canSpeck);if (mTextToSpeech != null && !mTextToSpeech.isSpeaking()) {mTextToSpeech.speak("我爱你我的祖国,中国", TextToSpeech.QUEUE_FLUSH, null);}}});

是不是感觉非常简单,自此,一个完整的语音播报功能就实现了,不管是中文还是都可以。下面给出完整的代码:
5. 完整语音播报code

public class TestSpeackActivity extends BaseActivity implements TextToSpeech.OnInitListener{//语音播放apiprivate TextToSpeech mTextToSpeech;@Overridepublic int getLayoutId() {getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,     WindowManager.LayoutParams.FLAG_FULLSCREEN);//设置全屏return R.layout.activity_test_speack;}@Overridepublic void initView() {findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Log.e("TAG","this is can "+canSpeck);if (mTextToSpeech != null && !mTextToSpeech.isSpeaking()) {mTextToSpeech.speak("您好中国", TextToSpeech.QUEUE_FLUSH, null);}}});}@Overridepublic void addListeners() {}@Overridepublic void onInit(int status) {//如果初始化成功if (status == TextToSpeech.SUCCESS) {canSpeck=true;int result = mTextToSpeech.setLanguage(Locale.CHINA);if (result == TextToSpeech.LANG_MISSING_DATA|| result == TextToSpeech.LANG_NOT_SUPPORTED){Toast.makeText(this,"数据丢失或不支持",Toast.LENGTH_SHORT).show();}}}@Overrideprotected void onStart() {super.onStart();if(mTextToSpeech == null){mTextToSpeech = new TextToSpeech(this, this);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规mTextToSpeech.setPitch(1.0f);//设定语速 ,默认1.0正常语速mTextToSpeech.setSpeechRate(1.5f);}}@Overrideprotected void onStop() {super.onStop();try{if (mTextToSpeech != null) {mTextToSpeech.stop(); // 不管是否正在朗读TTS都被打断}} catch (Exception e){e.printStackTrace();} finally {mTextToSpeech.shutdown(); // 关闭,释放资源mTextToSpeech = null;}}
}

注意

要想实现语音播报功能请注意一下几点

  1. 对于低版本的android手机,如果没有默认讯飞语音库,而是谷歌默认的TTS语音库,请先安装讯飞语句。
  2. 安装后讯飞语句后,请设置系统默认语音引擎为科大讯飞。
  3. 在调用speak方法前,一定要确认onInit方法被成功执行,否则调用speak方法还是默认调用TTS语音库, 将不会支持中文。

Android-----巧用科大讯飞语句实现中文语音播报相关推荐

  1. tts android,Android系统自带的TTS实现语音播报

    Android系统自带的TTS实现语音播报(类似支付宝到账xx元)(这里写自定义目录标题) 以按钮的点击事件来实现: public class MainActivity extends Activit ...

  2. android 语音播报(通过手说tts 实现中文语音播报)

    手说TTS介绍: 关于手说tts中文语音包的详细资料可以查看官网 http://shoushuo.com/index.html 手说TTS,是Android平台下的中文语音引擎,提供了中文文本到语音的 ...

  3. android 语音播报中文,android 语音播报(通过手说tts 实现中文语音播报)

    手说TTS介绍: 手说TTS,是Android平台下的中文语音引擎,提供了中文文本到语音的转换. 使用手说TTS进行中文文本的朗读,包括中文简繁体.阿拉伯数字.英文字母及一些符号的混读.并且处理了中文 ...

  4. android 融云 + 科大讯飞 实现仿微信语音消息转换为文字(附DEMO源码)

    融云SDK 使用很方便,简单配置就可以搭建即时通讯功能,配合科大讯飞的语音识别, 即可实现微信中语音消息转换为文字的功能 融云sdk的基本使用就不细说了, 网上很多资料 使用融云sdk自带的聊天会话界 ...

  5. android 最简单TextToSpeech控件实现语音播报(朗读文字)

    TextToSpeech实现播报 android有自带语音播报功能,比较简单,这里只做一个朗读文字功能. JAVA代码如下: 应用前需添加 import android.speech.tts.Text ...

  6. android采用MediaPlayer监听EditText实现语音播报手机号码(阿拉伯数字)

    项目中有语音播报手机号码的需求,以提高用户体验.我把这项工作放在最后,到今天基本实现,在这里总结如下: android自带TTS语音组建,网上有相关的介绍:看过一些帖子,TTS支持英文的语音发音,但是 ...

  7. python 中文语音播报,用Python实现语音播报

    以下内容为带着儿子一起学Python的实现记录,为自己保存下来,也希望对其他学习者有用! 1. 确保已经安装python,本例使用python,操作系统为:Windows 10 专业版: 2. 设置环 ...

  8. android语音播报

    百度TTS引擎离线语音合成+语音播报已个人测试,可用声音满意,代码只是一个模块参考还需要一些文件下面连接方可进入下载demo,虽花钱但是负责你到最后实现 mqtts长连接   双进程保活   tts中 ...

  9. android----Android语音播报的两种简单实现

    转自 https://blog.csdn.net/xialong_927/article/details/84256354 a.两种方案 1.Android自带的语音播报(老版本手机Android6. ...

最新文章

  1. 爬虫准备工作1-Java写入字符串到txt文档
  2. IE下使用jquery ajax失效的原因
  3. python读取json配置文件_Python简单读取json文件功能示例
  4. 输出java_java基础----Java的格式化输出
  5. pyTorch自然语言处理简单例子
  6. Spring Boot从Controller层进行单元测试
  7. 19【推荐系统5】NeuralCF
  8. 【微分方程数值解】常\偏微分方程及其常用数值解法概述
  9. ovnif摄像头修改ip
  10. 5种设计有效按钮的最佳做法
  11. 手机计算机快速切换功能,群控系统快速切换多部手机
  12. 【小白】用python写一个单向聊天室
  13. lcs算法 php,使用PHP编写的LCS算法
  14. 文字识别总结(OCR)
  15. java 保存图片_java后台接受到图片后保存方法
  16. 如何删除WORD中的空白行以及换行符
  17. 语音信号的短时平均过零率
  18. 硬件学习_差模与共模
  19. 【译】将字符转换为双精度浮点型
  20. Cascade Classification

热门文章

  1. “达观杯”文本智能处理挑战赛代码示例
  2. 关闭打开苹果电脑Rootless机制
  3. 又是一年秋来到,学习要趁早,Power BI Desktop8月更新又来了
  4. 我的第一个python web开发框架(6)——第一个Hello World
  5. 中国象棋源码c语言,中国象棋C语言源代码.doc
  6. header()函数使用说明
  7. 网易云音乐被纳入港股通 3月7日起生效
  8. 三星Galaxy Tab S8系列国行版曝光:对标iPad Pro的旗舰平板
  9. 可口可乐开了家网店卖奶,价值62亿元
  10. 报告漏洞后 马斯克宣布撤回FSD Beta 10.3版本