科大讯飞纯离线语音合成的快速集成
1,注册科大讯飞开发者,新建应用,下载离线语音合成SDK到本地
2,将下载好的SDK中的jar,assets文件下的tts包,.so文件复制到项目中
3,将下面的工具类复制到项目中
/*** 语音合成器** @author kongqw*/
public class KqwSpeechSynthesizer {// Log标签private static final String TAG = "KqwSpeechSynthesizer";private Context mContext;// 语音合成对象private SpeechSynthesizer mTts;public KqwSpeechSynthesizer(Context context) {mContext = context;// 初始化合成对象mTts = SpeechSynthesizer.createSynthesizer(context, new InitListener() {@Overridepublic void onInit(int code) {Log.d(TAG, "InitListener init() code = " + code);if (code != ErrorCode.SUCCESS) {Toast.makeText(mContext, "初始化失败,错误码:" + code, Toast.LENGTH_SHORT).show();}}});}/*** 开始语音合成*/public void start(String text) {// 设置参数setParam();int code = mTts.startSpeaking(text, mTtsListener);if (code != ErrorCode.SUCCESS) {Toast.makeText(mContext, "语音合成失败,错误码: " + code, Toast.LENGTH_SHORT).show();}}/*** 结束语音合成*/public void stop() {if (null != mTts) {mTts.stopSpeaking();// 退出时释放连接mTts.destroy();}}/*** 合成回调监听。*/private SynthesizerListener mTtsListener = new SynthesizerListener() {@Overridepublic void onSpeakBegin() {Log.i(TAG, "开始合成");}@Overridepublic void onSpeakPaused() {Log.i(TAG, "暂停合成");}@Overridepublic void onSpeakResumed() {Log.i(TAG, "继续合成");}@Overridepublic void onBufferProgress(int percent, int beginPos, int endPos, String info) {Log.i(TAG, "传冲进度 :" + percent);}@Overridepublic void onSpeakProgress(int percent, int beginPos, int endPos) {
// Log.i(TAG, "合成进度 : " + percent);}@Overridepublic void onCompleted(SpeechError speechError) {if (speechError == null) {Log.i(TAG, "合成完成");} else {Log.i(TAG, "error : " + speechError.toString());}}@Overridepublic void onEvent(int i, int i1, int i2, Bundle bundle) {}};/*** 参数设置*/private void setParam() {// 清空参数mTts.setParameter(SpeechConstant.PARAMS, null);// 设置使用本地引擎mTts.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_LOCAL);// 设置发音人资源路径mTts.setParameter(ResourceUtil.TTS_RES_PATH, getResourcePath());// 设置发音人mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");// 设置语速mTts.setParameter(SpeechConstant.SPEED, "50");// 设置音调mTts.setParameter(SpeechConstant.PITCH, "50");// 设置音量mTts.setParameter(SpeechConstant.VOLUME, "50");// 设置播放器音频流类型mTts.setParameter(SpeechConstant.STREAM_TYPE, "3");}// 获取发音人资源路径private String getResourcePath() {// 合成通用资源// 发音人资源return ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/common.jet") + ";" +ResourceUtil.generateResourcePath(mContext, ResourceUtil.RESOURCE_TYPE.assets, "tts/xiaoyan.jet");}
}
4,项目中使用
首先在Application中初始化:
String param = "appid=5c6224f9," + SpeechConstant.ENGINE_MODE + "=" + SpeechConstant.MODE_MSC;
SpeechUtility.createUtility(this, param); //将这里的appid的值替换成你在第一步中拿到的appid的值
然后在有需要的页面使用:
在onCreate中初始化工具类:mKqwSpeechSynthesizer = new KqwSpeechSynthesizer(this);
在具体要语音播报的地方调用:mKqwSpeechSynthesizer.start(speckContent);
在onDestory中释放:mKqwSpeechSynthesizer.stop();
OK!完成,就是这么简单!
科大讯飞纯离线语音合成的快速集成相关推荐
- 百度离在线语音合成的快速集成
1,注册百度开发者账号后下载离在线语音合成SDK到本地,然后在控制台创建一个应用,以便获取AppID,APIKey,SecretKey 2,将下载到本地的SDK中的jar,assets,.so下的文件 ...
- UNITY实战进阶-科大讯飞TTS(离线语音合成) unity播放PCM格式的wav(不依赖第三方库)-7
准备工作 1.注册科大讯飞开发者账户 2.创建一个应用,获取APPID 3.下载离线sdk(你是什么平台的就下什么平台的) 4.开打压缩包 5.我们需要的文件 bin\msc.dll ...
- C#调用科大讯飞离线语音合成TTS
原作者勿怪,未经允许就转载了,感谢万分. http://www.cnblogs.com/xuguanghui/p/4505555.html ------------------------------ ...
- php调用科大讯飞离线语音合成linux sdk
背景 要使用tts功能,文字转语言文件.目前已采用百度在线web api接口实现了联网版,现需要现实离线版.故采用科大讯飞的离线语音合成sdk,但是对于linux的sdk官方只有c语言的api接口,现 ...
- 集成科大讯飞TTS【离线语音合成服务】
背景:最近机器人项目需要集成科大讯飞TTS服务,遇到各种坑. 集成过程中主要遇到:引擎相关错误[21001|21002|25107错误] **解决方法:**1.多去论坛上面搜相关帖子:2.仔细看看提供 ...
- 科大讯飞离线语音合成简单实例
讯飞语音开发集成地址http://www.xfyun.cn/ 如何使用科大讯飞开放平台的语音合成呢? 1.首先要注册开发者账户, 创建我的新应用,创建完后就有一个专属APPID(非常重要),添加我的应 ...
- JAVA JNI调用科大讯飞离线语音合成(Linux篇)
JNI调用科大讯飞离线语音合成(Linux篇) 背景:之前已经介绍过JNI调用科大讯飞离线语音合成(Windows篇),今天我们接着聊一聊在Linux系统中如何使用科大讯飞离线语音合成,我们这里以(u ...
- 使用python语言调用科大讯飞离线语音合成
科大讯飞属于第三方服务,但是支持的语言里面没有python,所以我们在这种情况下还想使用它的功能的话,可以通过调用C语言的包,来间接的使用. 代码贴上来: def text_to_voice(text ...
- [Delphi][FMX]集成迅飞离线语音合成-安卓版本
QQ:13498714 有个朋友在迅飞上申请了个app,想在Firemonkey上集成迅飞离线语音合成,说不会处理. 好安排! 迅飞会为创建应用的账号生成一个测试Demo, Demo是Android ...
最新文章
- AMNO.6 给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123 输入 一个不大于5位的数字
- 【Android 逆向】使用 DB Browser 查看并修改 SQLite 数据库 ( 从 Android 应用数据目录中拷贝数据库文件 | 使用 DB Browser 工具查看数据块文件 )
- SQLServer-sysobjects-type
- 让你的插件兼容AMD, CMD ,CommonJS和 原生 JS
- LeakCanary——消除Android中的内存泄露
- comp 313 schemas的学习
- 修复IE9-- safari 的sort方法
- arcgis xml 下载 切片_GIS开发:Arcgis的切片格式
- javax.cache_新的Java缓存标准(javax.cache)
- Python异常捕获及自定义异常类
- LRU的两种实现方案
- C++ 继承的构造与析构
- 贴片铝电解电容封装的说明
- 数据结构和算法基础(6)——常用十种算法
- Spring中使用aop操作需要用到的aspectjweaver-1.8.7.jar包
- 2019426 SPSS入门学习
- 29、NeRV: Neural Reflectance and Visibility Fields for Relighting and View Synthesis
- CHM 已取消到该网页的导航
- SWUST OJ 99:Euclid‘s Game
- tkmybatis 默认值 问题