科大讯飞 语音评测 + 保存录音 解决wav 录音无法播放问题

 
    

// 设置评测语种
    //en_us 英文,zh_cn 汉语
      mSpeechEvaluator.setParameter(SpeechConstant.LANGUAGE, "en_us");

            // 设置评测题型评测题型,可选值:
                        read_syllable(单字,汉语专有)、read_word(词语)、
                    read_sentence(句子)、read_chapter(篇章)
            mSpeechEvaluator.setParameter(SpeechConstant.ISE_CATEGORY, "read_sentence");

            // 设置结果等级,不同等级对应不同的详细程度 plain complete
            mSpeechEvaluator.setParameter(SpeechConstant.RESULT_LEVEL, "plain");

            // 设置语音前端点:静音超时时间,即用户多长时间不说话则当做超时处理
            mSpeechEvaluator.setParameter(SpeechConstant.VAD_BOS, "5000");

            // 设置语音后端点:后端点静音检测时间,即用户停止说话多长时间内即认为不再输入, 自动停止录音
            mSpeechEvaluator.setParameter(SpeechConstant.VAD_EOS, "1800");


            // 设置音频保存路径,保存音频格式支持pcm、wav,设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限
            // 注:AUDIO_FORMAT参数语记需要更新版本才能生效
            //这句话必须加,否则音频文件无法播放
            mSpeechEvaluator.setParameter(SpeechConstant.AUDIO_FORMAT,"wav");
           

            //设置保存语音路径
            mSpeechEvaluator.setParameter(SpeechConstant.ISE_AUDIO_PATH, Environment.getExternalStorageDirectory()+ path);

           


            // mSpeechEvaluator.setParameter(SpeechConstant.ISE_AUDIO_PATH, Environment.getExternalStorageDirectory().getAbsolutePath() + "/msc/ise.wav");
            //通过writeaudio方式直接写入音频时才需要此设置
            //mSpeechEvaluator.setParameter(SpeechConstant.AUDIO_SOURCE,"-1");

            Log.e("swt1111", mSpeechEvaluator.getParameter(SpeechConstant.ISE_AUDIO_PATH));


            // evaText 为试题内容
            mSpeechEvaluator.startEvaluating(model.getAnswer().get(mCurrentButtonPosition).getEnglish(), null, new EvaluatorListener() {

                @Override
                public void onVolumeChanged(int i, byte[] bytes) {

                }

                @Override
                public void onBeginOfSpeech() {
                }

                @Override
                public void onEndOfSpeech() {
                }

                @Override
                public void onResult(EvaluatorResult result, boolean b) {
             


                    if (b) {
                        StringBuilder builder = new StringBuilder();

                        builder.append(result.getResultString());

                        FinalResult result1 = null;
                        try {
                            result1 = XmlPull(result.getResultString());
                        } catch (Exception e) {
                            e.printStackTrace();

                        }
                       

                        if (result != null) {

                            switch (result1.getRet()) {

                                //只有0的情况为正常情况,但是为了用户体验,所有情况均设置分数
                                case 0:
                                case 28673:
                                    //无语音输入或音量太小
//                                    ToastUtil.show(mContext, "无语音输入或音量太小,请重试");
                                case 28676:
                                    //检测到语音为乱说类型
                                case 28680:
                                    //音频数据信噪比太低
                                case 28690:
                                    //音频数据出现截幅
//                                    ToastUtil.show(mContext, "请重试");
                                    setAnimation(mBinding.tvCenterScore, result1.getTotal_score());
                                default:
                                    break;

                            }

                        } else {

                            ToastUtil.show(mContext, "没有获取到结果,请重录");
                        }


                    } else {

//                        ToastUtil.show(mContext,"无法识别,请重录");
                       
                    }
                }

                @Override
                public void onError(SpeechError speechError) {

                    ToastUtil.show(mContext, speechError.toString());

                
                }

                @Override
                public void onEvent(int i, int i1, int i2, Bundle bundle) {
                  
                }
            });



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值