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();
/**
* 开放识别文本
* 结合feedbackResult使用,实现是拦截还是监听
* @param listener 识别文本回调,最终的转写文本
*/
int active(ITextListener listener);
/**
* 开放识别文本
*
* 结合feedbackResult使用,实现是拦截还是监听
* @param listener 识别文本回调,最终的转写文本
* @param iatLsn 流式识别监听(转写文本流式回调)
*/
@ApiLevel(1)
int active(ITextListener listener, IatListener iatLsn);
/**
* 反馈文本处理结果
* @param token listener 回调结果中token
* @param processed 是否处理,true表示已处理(拦截),false未处理(iFLYHOME OS继续处理后续逻辑)
*/
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
注册识别文本结果监听
native_call_H5('h5_send_asr_result',function(data,responseCallback){ //客户单发来的文本消息通过该接口回调 })
web端申请语点的识别文本的能力
H5_call_native('native_open_asr',{"appid":"xxxxx","token":"xxx"},function(response){})
切换当前识别的场景(针对有需要切换场景的使用调用)
H5_call_native('native_update_asr',{"appid":"xxxxx","token":"xxx","params":"当前场景id"},function(res){})
收到识别文本结果后,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)); } })
关闭当前开放识别文本能力(在页面关闭的时候,或者不使用的时候关闭)
H5_call_native('native_close_asr', "appid":"xxx","token":"xxxxx"},function(response){})
应用外Web
注册回调数据监听,创建listener对象
function callback(data) { //对应数据格式 var data = JSON.stringify(data); } var listener = new Xiri.Listener(callback);
开启轮询数据获取
listener.getCmd("open_xiri");
申请能力
listener.openFeatureFunc("{\"name\":\"native_open_asr\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\"}\"}");
切换当前识别的场景(针对有需要切换场景的使用者调用)
listener.openFeatureFunc("{\"name\":\"native_update_asr\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\",\\\"params\\\": \\\"当前场景ID\\\"}\"}");
收到回调数据结果
回调数据data为Json格式
var jsData = data.data; var name = jsData.name; var params = JSON.parse(jsData.params); //识别文本 var text = params.text;
关闭能力
listener.openFeatureFunc("{\"name\":\"native_close_asr\",\"params\":\"{\\\"appid\\\": \\\"xxx\\\",\\\"token\\\": \\\"11111\\\"}\"}");