安卓调用科大讯飞语音
发布日期:2021-06-28 19:37:25
浏览次数:2
分类:技术文章
本文共 4235 字,大约阅读时间需要 14 分钟。
一.官网下载SDK
1.1项目创建
APPID是项目调用SDK会用到的
1.2SDK下载
二.代码调用
2.1在Application中初始化SDK
/** * @author Longchengbin * @description 初始化讯飞语音 * @since 2020-10-22 11:42 **/ private void initXFYY() { // 应用程序入口处调用,避免手机内存过小,杀死后台进程后通过历史intent进入Activity造成SpeechUtility对象为null // 注意:此接口在非主进程调用会返回null对象,如需在非主进程使用语音功能,请增加参数:SpeechConstant.FORCE_LOGIN+"=true" // 参数间使用“,”分隔;设置你申请的应用appid,注意: appid 必须和下载的SDK保持一致,否则会出现10407错误 StringBuffer param = new StringBuffer(); param.append("appid="+getString(R.string.app_id)); param.append(","); // 设置使用v5+ param.append(SpeechConstant.ENGINE_MODE+"="+SpeechConstant.MODE_MSC); SpeechUtility.createUtility(TvApp.this, param.toString()); }
2.2代码中调用语音播报
/*+++++++++++++++++++++++++++ 语音播报 +++++++++++++++++++++++++++ */ /** * @author Longchengbin * @description 播报的车牌号 * @since 2020-11-3 10:48 **/ private void play(String num) { setParam(); String string = getString(R.string.pay, num, num); mTts.startSpeaking(string, mTtsListener); } /** * @author Longchengbin * @description 初始化语音播报的参数 * @since 2020-10-22 13:56 **/ 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, "xiaofeng"); //设置合成语速 在线0~100本地0~200 mTts.setParameter(SpeechConstant.SPEED, "33"); //设置合成音调 范围 0~100 mTts.setParameter(SpeechConstant.PITCH, "99"); //设置合成音量 范围 0~100 mTts.setParameter(SpeechConstant.VOLUME, "99"); //设置播放器音频流类型0通话1系统2铃声3音乐4闹铃5通知 mTts.setParameter(SpeechConstant.STREAM_TYPE, "3"); // 设置播放合成音频打断音乐播放,默认为true mTts.setParameter(SpeechConstant.KEY_REQUEST_FOCUS, "true"); // 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限 mTts.setParameter(SpeechConstant.AUDIO_FORMAT, "wav"); mTts.setParameter(SpeechConstant.TTS_AUDIO_PATH, Environment.getExternalStorageDirectory() + "/msc/tts.wav"); } /** * @author Longchengbin * @description 获取发音人本地资源 * @since 2020-10-22 13:57 **/ private String getResourcePath() { StringBuffer tempBuffer = new StringBuffer(); String type = "tts"; //合成通用资源 tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, type + "/common.jet")); tempBuffer.append(";"); //发音人资源 tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, type + "/xiaofeng.jet")); return tempBuffer.toString(); } /** * 初始化监听 */ private InitListener mTtsInitListener = new InitListener() { @Override public void onInit(int code) { if (code != ErrorCode.SUCCESS) { Log.e("lcb", "语音合成失败,错误码: " + code + ",请点击网址https://www.xfyun.cn/document/error-code查询解决方案"); } } }; /** * 合成回调监听。 */ private SynthesizerListener mTtsListener = new SynthesizerListener() { @Override public void onSpeakBegin() {// Log.e("lcb", "开始播放:" + System.currentTimeMillis()); } @Override public void onSpeakPaused() { Log.e("lcb", "暂停播放"); } @Override public void onSpeakResumed() { Log.e("lcb", "继续播放"); } @Override public void onBufferProgress(int percent, int beginPos, int endPos, String info) { } @Override public void onSpeakProgress(int percent, int beginPos, int endPos) { // 播放进度 } @Override public void onCompleted(SpeechError error) { if (error == null) { Log.e("lcb", "播放完成"); } else { Log.e("lcb", error.getPlainDescription(true)); } } @Override public void onEvent(int eventType, int arg1, int arg2, Bundle obj) { } };
2.3资源调用
转载地址:https://blog.csdn.net/xxdw1992/article/details/109463857 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月04日 22时23分25秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android多线程实现方式及并发与同步,技术详细介绍
2019-04-29
Android开发究竟该如何学习,成功入职字节跳动
2019-04-29
三年老Android经验面经,看看这篇文章吧!
2019-04-29
为什么Android要采用Binder作为IPC机制?成功入职腾讯
2019-04-29
海量算法高频面试题精编解析,附超全教程文档
2019-04-29
深入浅出Android性能调优,系列篇
2019-04-29
深入浅出Android性能调优,附大厂真题面经
2019-04-29
深入解析Android-AutoLayout,全网疯传
2019-04-29
深入解析android核心组件和应用框架,最全Android知识总结
2019-04-29
深入解析android核心组件和应用框架,社招面试心得
2019-04-29
深度解析跳槽从开始到结束完整流程,持续更新中
2019-04-29
深度解析跳槽从开始到结束完整流程,面试真题解析
2019-04-29
hashmap扩容过程,字节大神强推千页PDF学习笔记,经典好文
2019-04-29
kotlin面试题!Android大厂高频面试题解析,薪资翻倍
2019-04-29
kotlin面试题!一口气拿了9家公司的offer,已拿offer入职
2019-04-29
retrofit优点,互联网寒冬公司倒闭后,年薪50W
2019-04-29
retrofit原理面试,Android性能优化最佳实践,面试必备
2019-04-29
【工作感悟】Android多进程从头讲到尾,offer拿到手软
2019-04-29
【微信小程序】面试一路绿灯Offer拿到手软,好文推荐
2019-04-29
Android之内存泄漏调试学习与总结,分享PDF高清版
2019-04-29