Android科大讯飞语音按队列播报

本文介绍如何在Android开发中解决科大讯飞语音播报的跳跃问题。通过使用消息队列,确保语音播报按顺序进行,即使消息收发频率高,也能保证每条消息播放完毕后再播放下一条。
摘要由CSDN通过智能技术生成

在Android开发中,语音播报经常使用,但是,在使用过程中会发现,如果语音来源过于块,频率过高,在前一条没有播放完的情况下会执行第二条播放,本篇文章用来解决这个问题。

一、科大讯飞语音集成:
1、在科大讯飞的开发者平台(科大讯飞开放平台)注册。我这里使用的是在线语音合成,下载SDK包。
2、将SDK包里面的libs里面的.so文件和jar包复制到你的项目中,并且引用.so文件和jar包,这里要注意的是,个人建议将所有CPU类型的.so文件都放到你的项目中,这样保证在所有设备中都能播放,虽然这样会导致项目变大。

3、在MyApplication中初始化:
SpeechUtility.createUtility(this, SpeechConstant.APPID + "=******"); 注意这里的APPID,不要丢了这个“=”号。

4、在使用到语音播放的地方,初始化语音引擎:
private SpeechSynthesizer mTts = SpeechSynthesizer.createSynthesizer(context, mTtsInitListener);

5、初始化中有两个参数,第一个是上下文,第二个是初始化回调:

private InitListener mTtsInitListener = new InitListener() {
        @Override
        public void onInit(int code) {
            if (code != ErrorCode.SUCCESS) {
                Toast.showToast(context, "语音初始化失败,错误码:" + code);
            } else {
                AppLog.i("语音初始化成功");
                // 初始化成功,之后可以调用startSpeaking方法
                // 注:有的开发者在onCreate方法中创建完合成对象之后马上就调用startSpeaking进行合成,
                // 正确的做法是将onCreate中的startSpeaking调用移至这里
            }
        }
    };

6、播放:

 public void playVoice(String msg) {
        mTts.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");
        mTts.s
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值