安卓调用科大讯飞语音
发布日期: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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:IjkPlayerView使用
下一篇:安卓自定义照相机(横竖屏感应)

发表评论

最新留言

不错!
[***.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