云端识别


ASR SDK支持Android平台的在线语音API接入, 开发者通过集成SDK获取从采集音频到识别结果输出的全链路支持。结合DUI平台强大的可定制语言模型的特性,开发者可以通过上传说法和词表的方式,对偏僻的说法以及用户相关内容的识别效果进行优化。

内置录音机

语音识别SDK按平台内置有录音机,可完成识别过程中的音频采集任务。

音频压缩

支持符合16Khz采样率、16bit数据位宽的PCM音频识别,SDK内部会对音频进行压缩。

VAD功能

VAD (语音活动检测)功能为可选项,开启后可启用本地的语音活动检测功能。关闭后,只能通过实体按键结束语音输入。
允许设置VAD后端点检测超时时间,开启后若说话停顿时长超过阈值,则主动结束本次识别的输入。

实时反馈识别结果

支持流式返回识别结果。当用户开口说话时,部分识别结果就绪后,能立即展示该部分结果。

初始化

 AICloudASREngine mEngine = AICloudASREngine.createInstance();
 AICloudASRConfig.Builder cloudASRBuilder = new AICloudASRConfig.Builder()
                    .setServer("wss://asr.dui.ai/runtime/v2/recognize")//设置服务器地址,默认不用设置
                    .setEnablePunctuation(false)//设置是否启用标点符号识别,默认为false关闭
                    .setEnableEmotion(true)
                    .setResourceType(type)//设置识别引擎的资源类型,默认为comm
                    .setLocalVadEnable(true)
                    .setCloudVadEnable(false)
                    .setEnableNumberConvert(true)//设置启用识别结果汉字数字转阿拉伯数字功能
                    .setVadResource(SampleConstants.VAD_RES)
                    .setVadPauseTime(500)
                    .setCustomWakeupWord(jsonArray)//设置自定义唤醒词
                    .setWakeupWordVisible(false)//是否过滤setCustomWakeupWord设置的oneshot句首唤醒词,默认为false,不顾虑
                    .setEnableSNTime(true)//设置rec结果增加对齐信息接口
                    //.setEnableTone(false)//设置音调功能接口
                    .setEnableLanguageClassifier(true)//设置语言分类功能接口
                    .setCloudVadEnable(true);//设置是否开启服务端的vad功能,默认开启为true

 mEngine.init(cloudASRBuilder.build(), new AIASRListener(){
      @Override
        public void onReadyForSpeech() {
            resultText.setText("请说话...");
        }

        @Override
        public void onBeginningOfSpeech() {
            resultText.setText("检测到说话");
        }

        @Override
        public void onEndOfSpeech() {
            resultText.append("检测到语音停止,开始识别...\n");
        }

        @Override
        public void onRmsChanged(float rmsdB) {
            showTip("RmsDB = " + rmsdB);
        }

        @Override
        public void onError(AIError error) {
            Log.e(Tag, "error:" + error.toString());
            resultText.setText(error.toString());
        }

        @Override
        public void onResults(AIResult results) {
            if (results.isLast()) {
                if (results.getResultType() == AIConstant.AIENGINE_MESSAGE_TYPE_JSON) {
                    String recordId = results.getRecordId();
                    Log.i(Tag, "recordId = " + recordId);
                    Log.i(Tag, "result JSON = " + results.getResultObject().toString());
                    // 可以使用JSONResultParser来解析识别结果
                    // 结果按概率由大到小排序
                    JSONResultParser parser = new JSONResultParser(results.getResultObject()
                            .toString());
                    resultText.append("识别结果为 :  " + parser.getText() + "\n");
                    resultText.append("识别结果为 :  " + results.getResultObject().toString());
                }
            }
        }

        @Override
        public void onInit(int status) {
            Log.i(Tag, "Init result " + status);
            if (status == AIConstant.OPT_SUCCESS) {
                resultText.setText("初始化成功!");
                btnStart.setEnabled(true);
                btnStop.setEnabled(true);
            } else {
                resultText.setText("初始化失败!code:" + status);
            }
        }

        @Override
        public void onResultDataReceived(byte[] buffer, int size, int wakeupType) {

        }

        @Override
        public void onRawDataReceived(byte[] buffer, int size) {

        }
 });

启动识别

  AICloudASRIntent intent = new AICloudASRIntent();
                intent.setWaitingTimeout(5000);//设置等待识别结果超时时长,默认5000ms
                intent.setNoSpeechTimeOut(5000);  //设置无语音超时市场,默认5000ms
                //intent.setMaxSpeechTimeS(0)//音频最大录音时长
                intent.setSaveAudioPath("/sdcard/aispeech");//保存的音频路径,格式为.ogg

                mEngine.start(intent);

停止识别

mEngine.cancel();

引擎销毁

if(mEngine!=null)  mEngine.destroy();

results matching ""

    No results matching ""