教程 框架 组件 接口 其他

语音识别 vui car 1060+

接口声明

{ "name": "service.vui" }

接口引入

import vui from '@service.vui'

接口定义

initialize(OBJECT)

内置语音需要建立连接等初始化过程,成功后才可使用后面的能力;

参数:

参数名类型必填说明
domainsArray应用关注的垂域。目前支持music和interactive两个垂域,参考意图列表
successFunction初始化成功
failFunction失败原因

示例:

import vui from '@service.vui'
vui.initialize({
  success: function(){
    console.log(`### 内置语音接口 ### 初始化成功`)
  },
  fail: function(err){
    console.log(`### 内置语音接口 ### 初始化失败:`, err)
  }
})

setDomains(OBJECT)

应用关注的垂域

参数:

参数名类型必填说明
domainsArray应用关注的垂域。目前支持music和interactive两个垂域,参考意图列表
successFunction成功回调
failFunction失败回调

示例:

vui.setDomains({
  domains: ["common", "music"],
  success: function(){
  },
  fail: function(err){
  }
})

getProviderInfo(OBJECT)

获取内置语音能力的基本信息,如:语音提供商、版本、及其额外携带的信息;

参数:

参数名类型必填说明
successFunction成功回调
failFunction失败回调
success 返回值:
参数值类型说明
nameString提供商名称
versionString提供商版本

示例:

vui.getProviderInfo({
  success: function(data){
    const { name, version } = data
    console.log(`### 内置语音接口 ### 获取基本信息成功:`, data)
  },
  fail: function(err){
    console.log(`### 内置语音接口 ### 获取基本信息失败:`, err)
  }
})

onError 属性

监听期间发生的错误并回调

示例:

vui.onError = function (err) {
  // err拥有 message, stack 属性
}

openMic(OBJECT)

开麦,打开收音能力;

参数:

参数名类型必填说明
successFunction成功回调
failFunction失败回调

示例:

vui.openMic({
  success: function(){
  },
  fail: function(err){
  }
})

closeMic(OBJECT)

关麦,关闭收音能力;

参数:

参数名类型必填说明
successFunction成功回调
failFunction失败回调

示例:

vui.closeMic({
  success: function(){
  },
  fail: function(err){
  }
})

onAsrPartialResult

当用户说话时,ASR持续识别中返回的结果;

回调函数参数的属性:
参数值类型说明
originalTextString初始ASR用户解析结果

示例:

vui.onAsrPartialResult = function (response) {
  const { originalText } = response
  console.info(`语音识别中的结果:`, originalText)
}

onAsrCompleteResult

当用户说话经过判停后,ASR识别返回的结果;

场景举例:CP自己根据ASR结果去做后续的意图识别,并完成对应的操作:页面元素的点击 或 意图业务逻辑;

回调函数参数的属性:
参数值类型说明
originalTextString经过ASR后用户最原始的结果
rewrittenTextString经过纠错等环节后的最终结果

示例:

// 识别结束
vui.onAsrCompleteResult = function (response) {
  const { originalText, rewrittenText } = response

  // 如果开发者希望根据ASR结果去决策,而不用到默认语音的NLP能力,那么可以在这里拦截并处理;
  // 伪代码处理方式,比如:本地做意图识别、UI事件分发
  // const { text } = values[0]
  // const viewControlList = vui.getVuiContext()
  // const controlList = searchViewControls(text, viewControlList)
  // if (controlList.length > 0) {
  //   vui.dispatchEvent(controlList[0])
  // }
}

onNlpResult

当用户说话得到ASR结果,然后NLP处理后,返回对应的处理结果。

回调函数参数的属性:

参数值类型说明
pageChangedBoolean语音识别中页面是否切换了
instructionsArray指令对象数组

指令对象包含两种类型:

  • 元素指令,作用是触发一个页面元素的操作(如点击操作)。如果页面发生切换,元素指令需要抛弃;
  • 意图指令,作用是表达一个NLP意图,需要快应用编写处理逻辑。

元素指令的结构如下:

参数值类型说明
typeString识别出来的类型,元素指令永远是vui.INSTRUCTION_TYPE.ELEMENT

意图指令的结构如下:

参数值类型说明
typeString识别出来的类型,意图指令永远是vui.INSTRUCTION_TYPE.INTENT
nameString意图的名称
paramsObject意图的参数

支持的意图详情见意图列表

开发者需要在函数中返回一个布尔值。当返回true时,表明开发者已经自行处理了上述指令;否则框架将使用默认处理策略。

框架的默认处理策略如下:

  1. 对于元素指令,如果页面没有发生切换,会触发页面元素的事件,如按钮的点击;如果页面发生切换,不会做任何处理;
  2. 对于意图指令,如果是默认支持的意图(如音乐控制或退出应用),会实现意图希望的功能。对于不支持的意图,不会做任何处理。

示例:

vui.onNlpResult = function (response) {
  const { pageChanged, instructions } = response
  // 取第0个元素
  const instructionItem = instructions[0]
  const { type } = instructionItem

  if (instructionItem.type === vui.INSTRUCTION_TYPE.ELEMENT) {
    // 识别结果为:UI事件操作    
    if (!pageChanged) { // 只有页面没有切换的情况下,才处理元素指令
      // 触发UI事件操作,如:某个页面中某个元素的点击事件
      vui.dispatchEvent(instructionItem)
    }
  }
  else if (instructionItem.type === vui.INSTRUCTION_TYPE.INTENT) {
    // 识别结果为:之前注册的意图命令

    // 开发者根据识别出来的意图结果,完成对应的业务响应;如:"CART_OPEN"
    const { name } = instructionItem
    // ... switch case ...
  }
}

元素的vindex,vtags属性:NLP意图识别的结果类型:UI事件操作

如果开发者希望,用户说的话识别为对UI元素的操作,那么就需要做到:某个元素对应的操作尽量符合用户的话语;

比如:页面中有一个"购物车"按钮,CP希望尽量匹配:"第5个,打开购物车,查看购物车,看看点了哪些"这样的话术;

那么,CP在代码中写该节点时,就声明对应的:vtags, vindex的属性;

如:购物车

参见vtags和vindex属性

requestTts(OBJECT)

设置TTS播报内容;

参数:

参数名类型必填说明
textString播报的内容
successFunction成功回调
failFunction失败回调

示例:

vui.requestTts({
  text: '这是要语音播报的内容',
  success: function(){
    console.log(`### 内置语音接口 ### TTS成功`)
  },
  fail: function(err){
    console.log(`### 内置语音接口 ### TTS失败:`, err)
  }
})

cancelTts(OBJECT)

停止TTS播报内容;

参数:

参数名类型必填说明
successFunction成功回调
failFunction失败回调

示例:

vui.cancelTts({
  success: function(){
    console.log(`### 内置语音接口 ### 停止TTS成功`)
  },
  fail: function(err){
    console.log(`### 内置语音接口 ### 停止TTS失败:`, err)
  }
})

dispatchEvent(OBJECT)

当NLP识别结果的类型为界面元素的操作时,用于触发该元素的事件操作;

事件包含了:发生在哪个页面、哪个元素、什么操作(如:点击);

注意:该方法的参数,不支持开发者自己定义;通常传递该类型时指令的结果即可;

示例:

// 触发DOM操作
vui.dispatchEvent(instructionItem)

close(OBJECT)

关闭语音接受能力;

参数:

参数名类型必填说明
successFunction成功回调
failFunction失败回调

示例:

vui.close({
  success: function(){
    console.log(`### 内置语音接口 ### 关闭成功`)
  },
  fail: function(err){
    console.log(`### 内置语音接口 ### 关闭失败:`, err)
  }
})

意图列表

领域(domain)意图(name)参数(params)说明默认响应话术示例
music(音乐)intent.music.previous上一首上一首、前一首、上一个
intent.music.next下一首下一首、后一首、下一个
intent.music.play播放播放、放歌
intent.music.pause暂停暂停、停止、安静
intent.music.resume继续继续、继续放
intent.music.stop停止停止、停、别放了
interactive(交互)intent.interaction.back返回返回、后退
intent.interaction.exit退出退出、关闭

条匹配 "" 的结果

    没有搜索到与 "" 相关的内容