android 科大讯飞语音播报简单集成
1.下载官网demo后倒入此jar包放入lib下
2.在main目录下导入相对应的so文件
3.添加权限,权限可按自己需求而定
<!--连接网络权限,用于执行云端语音能力 --><uses-permission android:name="android.permission.INTERNET" /><!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 --><uses-permission android:name="android.permission.RECORD_AUDIO" /><!--读取网络信息状态 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!--获取当前wifi状态 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--允许程序改变网络连接状态 --><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><!--读取手机信息权限 --><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!--读取联系人权限,上传联系人需要用到此权限 --><uses-permission android:name="android.permission.READ_CONTACTS" /><!--外存储写权限,构建语法需要用到此权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!--外存储读权限,构建语法需要用到此权限 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!--配置权限,用来记录应用配置信息 --><uses-permission android:name="android.permission.WRITE_SETTINGS" /><!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务--><!--定位信息是敏感信息,可通过Setting.setLocationEnable(false)关闭定位请求 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!--如需使用人脸识别,还要添加:摄相头权限,拍照需要用到 --><uses-permission android:name="android.permission.CAMERA" />
4.同步项目 并进行初始化操作
private void initKDXF() {SpeechUtility.createUtility(this, SpeechConstant.APPID + "=APPID");}
5.放入语音播报的语音文件(语音文件在官网demo里面附带可自行搜索)
注:免费的
6.在相对应的播报页面进行播报
private void initTTS() {SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(this, mTtsInitListener);if (mTts != null) {mTts.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaofeng"); // 设置发音人mTts.setParameter(SpeechConstant.SPEED, "1");// 设置语速mTts.setParameter(SpeechConstant.VOLUME, "80");// 设置音量,范围 0~100mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端//这里出现的问题是因为多次进入语音播报页面会导致语音未播报,只是稍微简单处理一下boolean speaking = mTts.isSpeaking();ToastUtils.showShort(speaking + "");if (speaking) {if (mTts != null) {mTts.pauseSpeaking();mTts.stopSpeaking();mTts.destroy();}mTts1 = SpeechSynthesizer.createSynthesizer(this, mTtsInitListener);mTts1.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());mTts1.setParameter(SpeechConstant.VOICE_NAME, "xiaofeng"); // 设置发音人mTts1.setParameter(SpeechConstant.SPEED, "1");// 设置语速mTts1.setParameter(SpeechConstant.VOLUME, "80");// 设置音量,范围 0~100mTts1.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端mTts1.startSpeaking("需要播报的文字", new MySynthesizerListener());} else {mTts.startSpeaking("需要播报的文字"", new MySynthesizerListener());}}}
6.1获取发言人资源方法
//获取发音人资源路径private String getResourcePath() {StringBuffer tempBuffer = new StringBuffer();String type = "tts";if (mEngineType.equals(SpeechConstant.TYPE_XTTS)) {type = "xtts";}//合成通用资源tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, type + "/common.jet"));tempBuffer.append(";");//发音人资源if (mEngineType.equals(SpeechConstant.TYPE_XTTS)) {tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, type + "/" + LeaveDatailsActivity.voicerXtts + ".jet"));} else {tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, type + "/" + LeaveDatailsActivity.voicerLocal + ".jet"));}return tempBuffer.toString();}
6.2初始化监听操作
/*** 初始化监听。*/private InitListener mTtsInitListener = new InitListener() {@Overridepublic void onInit(int code) {LogUtil.e("InitListener init() code = " + code);if (code != ErrorCode.SUCCESS) {LogUtil.e("初始化失败,错误码:" + code + ",请点击网址https://www.xfyun.cn/document/error-code查询解决方案");} else {// 初始化成功,之后可以调用startSpeaking方法// 注:有的开发者在onCreate方法中创建完合成对象之后马上就调用startSpeaking进行合成,// 正确的做法是将onCreate中的startSpeaking调用移至这里}}};
6.3使用的相对应的全局变量
// 引擎类型private String mEngineType = SpeechConstant.TYPE_CLOUD;public static String voicerXtts = "xiaofeng";// 默认本地发音人public static String voicerLocal = "xiaofeng";private SpeechSynthesizer mTts;private SpeechSynthesizer mTts1;
7.最后只需要在播报页面相对应的生命周期里加入和SpeechSynthesizer相对应的生命周期即可
例:
@Overrideprotected void onResume() {super.onResume();if (mTts != null) {mTts.resumeSpeaking();}if (mTts1 != null) {mTts1.resumeSpeaking();}}@Overrideprotected void onPause() {super.onPause();if (mTts != null) {mTts.pauseSpeaking();}if (mTts1 != null) {mTts1.pauseSpeaking();}}@Overrideprotected void onStop() {super.onStop();if (mTts1 != null) {if (mTts != null) {mTts.stopSpeaking();}mTts1.stopSpeaking();}}@Overrideprotected void onDestroy() {super.onDestroy();if (mTts != null) {mTts.destroy();}if (mTts1 != null) {mTts1.destroy();}}
大致就是这个样子,其他的请默认移步官网
android 科大讯飞语音播报简单集成相关推荐
- 【Uniapp 原生插件】科大讯飞语音播报插件
文章目录 科大讯飞语音播报插件 插件需求 使用插件 科大讯飞语音播报插件 插件地址:https://ext.dcloud.net.cn/plugin?id=8287 插件需求 使用插件前,请先使用试用 ...
- Android 科大讯飞 语音转文字
Android 科大讯飞 语音转文字 语音听写SDK适配安卓6.0需要手动申请权限,各位可以自信查询资料实现,关于语音听写SDK的开发,参考科大讯飞开放平台官网为准 第一,首先去科大讯飞官网注册一个账 ...
- Android科大讯飞语音按队列播报
在Android开发中,语音播报经常使用,但是,在使用过程中会发现,如果语音来源过于块,频率过高,在前一条没有播放完的情况下会执行第二条播放,本篇文章用来解决这个问题. 一.科大讯飞语音集成: 1.在 ...
- Android 科大讯飞语音SDK集成步骤
前言 科大讯飞语音虽好,其严格的认证与校验确实精密,不过也大大提高了开发者的集成难度,并非危言耸听,我想大多数人都有经历过 11210(用户ID与离线资源不匹配) 21480( 离线引擎GUID不一致 ...
- Android 原生语音播报
Android系统本身自带的语音引擎不支持中文,所以需要依赖 如 科大讯飞.度秘 等,类似语音引擎才可以. 三步: 1:安装语音引擎. 安装包百度找一下.安装到需要播报的机子上 如果没找到的话,这里 ...
- Android TTS语音播报实践
在工作中遇到了语音播报的需求,在收到push后,用语音播报push携带的播报内容.类似于微信支付宝的收款信息一样.调研后主要的语音播报方案有一下几种: 基于第三方的TTS SDK,如百度.思必驰.讯飞 ...
- android开发语音播报
转载请注明出处:http://blog.csdn.net/sw950729/article/details/52069582 本文出自:马云飞的博客 上次也说了最近一直在整理东西以及封装东西.然后今天 ...
- Android TTS语音播报
TTS 语音播报: 代码摘要: private TextToSpeech mTts;private EditText et_setPitch;private EditText et_setSpeec ...
- python 语音播报 简单入门
# coding: utf-8 import pyttsx3 import time # 初始化 pt = pyttsx3.init() # 说什么 pt.say("你好,dbirder&q ...
- android支付宝语音播报,支付宝商家语音播报 PushVoiceBroadcast
PushVoiceBroadcast 支付宝商家语音播报 gradle引入 allprojects { repositories { ... maven { url 'https://jitpack. ...
最新文章
- msicuu.exe (msizap.exe),程序的作用
- 比较高明的暗部提亮方法:选取暗部,滤色叠加
- 软件开发人员该如何深入理解自己的代码
- 能源利用率逼近理论极限 阿里巴巴展示液冷黑科技
- 自动驾驶科普:一辆无人车到底是怎样工作的?
- 计算机应用基础专2020春,计算机应用基础(专)(专,2020春)(20200831130023).pdf
- Anaconda创建虚拟环境报错—UnavailableInvalidChannel: The channel is not accessible or is invalid
- Spring IOC 容器源码分析 - 循环依赖的解决办法 1
- Open3D 点云包围盒
- 学软件测试必须要会Java吗_软件测试需要学什么?
- 电脑桌面云便签怎么将界面最小化?
- 同或门真值表_三输入异或门真值表计算详解
- C#开发工控上位机编程 csdn_5种将死的编程语言
- Tableau基础 | 维度、度量、蓝色、绿色
- java 标点符号_java的标点符号
- WebRTC 教程二:WebRTC API 和 Leak
- 谈谈值得注意的高危端口
- 华为测试 称砝码
- Gartner 魔力象限:云基础设施和平台服务 2020年
- 基于切比雪夫逼近法的滤波器的matlab设计与实现