ASR语音识别

功能说明:iFLYHOME OS 提供将语音转化给文本的能力,并将识别结果对外提供。参考:产品白皮书

使用说明:集成方在申请开放该能力后,在需要使用时激活或者申请该ASR识别能力,当触发语音识别后,会将识别文本结果回调给集成方。

改动:ApiLevel 达到1时,具备开放流式识别文本能力(需要申请权限)

在使用时也支持一些自定义的配置,具体见接口或者协议说明。

安卓原生

通过如下方法获取能力接口

XiriOPManager.getInstance().getTextMgr();

注意此处返回值可能为Null, 原因: SDK未初始化

api如下:

public interface IText {
    /**
     * 设置参数,激活后调用有效
     * @param sceneId 场景id
     * @return 返回码,参考
     *
     */
    int updateParams(String sceneId);
    /**
     * 关闭开放识别文本
     */
    int invalid();
    /**
     * 开放识别文本
     * @param listener 识别文本回调
     */
    int active(ITextListener listener);
    /**
     * 开放识别文本
     * @param listener 识别文本回调
     * @param iatLsn  流式识别监听(非空则监听,否则取消监听), 需要申请权限
     */
    @ApiLevel(1)
    int active(ITextListener listener, IatListener iatLsn);

    /**
     * 反馈文本处理结果
     * @param token listener 回调结果中token
     * @param processed 已处理
     */
    int feedbackResult(String token, boolean processed);

    /**
     * 设置仅透传数字,激活后调用有效
     * @param digitalOnly
     */
    int updateDigitalOnly(boolean digitalOnly);
}

注意: 标注 @ApiLevel 需要达到指定api等级才有效。

示例:

// isActive:是否激活ASR能力
public void text(boolean isActive) {
    final IText iText = XiriOPManager.getInstance().getTextMgr();
    //激活拦截识别文本
    if (iText != null) {
        if (isActive) {
            // 可选 激活监听 流式识别
            iText.active(new ITextListener() {
                @Override
                public void onText(TextEntity entity) {
                    // TODO 处理entity
                    // 最终反馈给电视助手,第二个参数true表示已处理,false未处理(iFLYHOME OS继续处理后续逻辑)
                    iText.feedbackResult(entity.getToken(), true/false);
                }
            });
        } else {
            iText.invalid();
        }
    }
}

应用内嵌Web

  1. 注册识别文本结果监听

     native_call_H5('h5_send_asr_result',function(data,responseCallback){
          //客户单发来的文本消息通过该接口回调
     })
    
  2. web端申请语点的识别文本的能力

     H5_call_native('native_open_asr',{"appid":"xxxxx","token":"xxx"},function(response){})
    
  3. 切换当前识别的场景(针对有需要切换场景的使用调用)

     H5_call_native('native_update_asr',{"appid":"xxxxx","token":"xxx","params":"当前场景id"},function(res){})
    
  4. 收到识别文本结果后,web端需要回传语点通知是否处理当前文本(通过responseCallback回传)

     native_call_H5('h5_send_asr_result',function(data,responseCallback){
         var text = data.text;
         var token = data.token
         var linkId = data.linkId
         if (responseCallback) {
              resObj.code=200;
              resObj.msg='success';
              var result = {"asrToken": data.token,"handled": handleResult};
             resObj.data=result;
             responseCallback(JSON.stringify(resObj));
       }
     })
    
  5. 关闭当前开放识别文本能力(在页面关闭的时候,或者不使用的时候关闭)

     H5_call_native('native_close_asr', "appid":"xxx","token":"xxxxx"},function(response){})
    

应用外Web

  1. 注册回调数据监听,创建listener对象

     function callback(data) {
         //对应数据格式
         var data = JSON.stringify(data);
     }
     var listener = new Xiri.Listener(callback);
    
  2. 开启轮询数据获取

     listener.getCmd("open_xiri");
    
  3. 申请能力

     listener.openFeatureFunc("{\"name\":\"native_open_asr\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\"}\"}");
    
  4. 切换当前识别的场景(针对有需要切换场景的使用者调用)

     listener.openFeatureFunc("{\"name\":\"native_update_asr\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\",\\\"params\\\": \\\"当前场景ID\\\"}\"}");
    
  5. 收到回调数据结果

    回调数据data为Json格式

     var jsData = data.data;
     var name = jsData.name;
     var params = JSON.parse(jsData.params);
     //识别文本
     var text = params.text;
    
  6. 关闭能力

     listener.openFeatureFunc("{\"name\":\"native_close_asr\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\"}\"}");
    

results matching ""

    No results matching ""