定制技能配置说明
此文档将带您快速了解度家-AIOT语音语义平台“定制技能配置”板块的功能定位与核心概念。
1. 功能定位
度家-AIOT语音语义平台(下文称“度家”)的“定制技能配置”板块集成百度自然语言处理的能力,支持智能家居设备厂商和方案商快速定制设备控制技能。例如,台灯控制技能、冰箱控制技能、扫地机控制技能、全屋控制技能等。
度家“定制技能配置”与传统的技能创建方法区别之处在于:用户无需创建意图、词槽,无需匹配语言模板,只要根据设备自身特性创建相关“属性”和“控制动作”,并添加必要的词典、动作泛化与答复话术,即可快速获得基础版技能。
2. 核心概念
若你想快速入门,在“定制技能配置”板块配置一个控制智能家居设备的语义解析技能,请先了解以下核心概念。
2.1 定制技能
指客户在度家“定制技能配置”板块创建、配置、训练的技能,目前每个客户仅可创建一个定制技能,并在研发环境进行训练。若创建的定制技能要上线生产环境,需与百度商务联系。
2.2 模块
创建定制技能时需区分“单模块”和“多模块”控制技能。此处的模块可理解为技能需要控制的最小单元,或终端用户控制query中涉及的最小单元。请通过以下三个例子理解此概念:
- 假设您是台灯厂商,需要定制一个台灯控制技能,创建技能时需选择“单模块”即可,无需将台灯细分为更小的零部件模块。终端用户通常只会说“台灯打开”,而不会说“台灯按钮打开”,所以在配置技能模块时,“台灯”本身作为一个模块即可。
- 假设您是全屋控制方案商,需要定制一个全屋控制技能。创建技能时需选择“多模块”,需要控制的最小单元为屋内的具体设备,例如:“顶灯”、“台灯”、“左窗帘”、“右窗帘”、“加湿器”、“卧室插座”等,每一个设备需要创建为一个“模块”,终端用户会对上述各个设备下达控制query。
- 假设您是集成灶厂商,需要定制一个集成灶控制技能,由于集成灶上需要控制的最小单元包含“灶灯”、“蒸烤箱”、“抽油烟机”。创建技能时需选择“多模块”,并将以上控制单元分别创建为模块,终端用户会对上述各个设备下达控制query。
2.3 有属性指令
每个物理设备都具备诸多属性,以灯为例,“亮度”、“模式”、“色温”为灯的常见属性。终端用户若需要语音控制灯的常见属性,典型控制指令如下:
- “亮度调高一点”
- “灯亮度调为50”
- “把灯调到学习模式”
- “打开夜晚模式”
- “色温调低一些”
- “灯的温调到2300”
上述指令都是为了控制物理设备的某个“属性”,所以我们称之为“有属性指令”。为了让定制技能可以解析上述指令,需要需要通过“创建属性”来创建、编辑属性。
2.4 无属性指令
但在语音控制中,有一些指令无法与属性挂钩,例如:
- “开灯”
- “关灯”
- “把灯复位”
上述无法归纳出属性的控制指令,我们称之为“无属性指令”。为了让定制技能解析上述指令,可通过创建“无属性指令”来实现指令解析。
2.5 属性基础信息
属性基础信息需要您自主编辑“属性名称”和“属性标识符”。
“属性名称”输入代表设备属性的中文,例如“音量”、“温度”、“亮度”、“长度”
“属性标识符”输入代表设备属性的英文,例如“sound_volume”、“temperature”、“brightness”、“length”。当技能配置完成后,当用户query命中相关属性后,技能将下发您定义的“属性标识符”。
2.6 属性权限
属性权限选择包含两方面,“语音查询属性功能”、“定时功能”。
语音查询属性功能:
开启:若选择开启,则默认支持解析“属性是多少”类型的query,例如”现在温度是多少“、”亮度是多少“。
暂不需要:若技能无需支持“属性是多少”类型的查询query,建议保持默认不开启状态。
定时功能:
开启:若选择开启,则默认支持解析“2个小时后关灯”,“下午3点开始打扫”等类型的预约query。
暂不需要:若技能无需解析“预约某时间执行特定操作”类型的query,建议保持不开启状态。
2.7 属性值类型
度家-AIOT语音平台的属性分为五类,您需要根据属性的值类型,在下图中选择合适的“属性值”。
属性类型 | 中文名 | 备注 |
---|---|---|
int | 整型 | 需选择“整型”的典型属性为“音量” |
float | 浮点 | 需选择“浮点型”的典型属性为“温度” |
enumerate | 枚举 | 需选择“枚举型”的典型属性为“模式”,例如台灯的“夜晚模式”、“护眼模式”等 |
bool | 布尔 | 需选择“布尔型”的典型属性为状态对称的属性,例如某设备需要语音控制“开启状态”、“关闭状态” |
time | 时间 | 需选择“时间”的典型属性中不可包含其他属性因素,创建此属性是为了解析如“时间调到5点”等query,而非“5点后开始打扫卧室” |
2.8 属性值
属性值如何编辑依赖于属性值类型的选择。您选择属性值类型后,度家控制台会自动弹出待编辑的属性值。示例如下:
int类型属性值示例:
float类型属性值示例:
enumerate类型属性值示例(无序):
注意:无序enumerate类型代表词典值之间无大小关系,如下图所示
enumerate类型属性值示例(有序):
注意:有序enumerate类型代表词典值之间有大小逻辑关系,如下图所示
bool类型属性值示例:
time类型属性值示例:
注意:timee类型属性值为系统预置,无需您编辑
2.9 控制动作
终端用户通过语音指令控制设备时明说或意图中暗含的动作。例如:
- “打开台灯”,控制动作为“打开”。
- “台灯亮度调高一点”,控制动作为“调高”。
- “台灯亮度100”,终端用户虽未说出动词,但默认控制动作为“调到”,即“台灯亮度调到100”。
2.10 泛化
“泛化”可理解为替特定词语添加“同义词”或“同义说法”的过程。例如,“抽油烟机”在用户群体中有多重说法——“抽烟机”、“抽风机”、“油烟机”。当您创建完模块“抽油烟机”后,为了保证不同用户的说法都能被技能识别,需要为“抽烟机”这一名称进行泛化。
2.11 答复话术
当定制技能解析时命中已配置信息时,技能下发的回答内容。答复话术需要在“模块-属性-动作”粒度下逐一创建。
2.12 兜底话术
当所配置的定制技能无法解析指令时,技能返回的说法。每个技能可配置多条兜底话术,系统将随机返回。
3. 技能返回字段说明
定制技能配置完成、且训练过后,您可在控制台上的技能测试窗口进行对话测试。测试返回字段说明如下。
备注:若代表query中不包含某字段信息,则该字段返回null,
字段 | 字段中文名 | 备注 |
---|---|---|
action | 动作 | 模块、属性下关联的动作,或模块下关联的无属性指令词。具体含义可参考上述全局名词解释 |
mod | 模块 | 英文全名为module,即模块。实际含义可理解为“设备”。具体含义可参考上述全局名词解释 |
property | 属性 | 模块下关联的属性。具体含义可参考上述全局名词解释 |
propertyUnit | 属性单位 | 属性单位,当终端用户的query中不包含单位时,值为空。例如,用户说“温度调高10”,返回propertyUnit为null,用户说“温度调高10度”,返回propertyUnit为“度”。 |
propertyValue | 属性值 | 例如,用户说“空调调高10”,返回propertyValue为“10” |
reply | 答复话术 | 针对每个模块-属性-动作粒度下的答复话术。具体含义可参考上述全局名词解释 |
skillId | 技能ID | 所创建的控制技能ID,创建技能后自动自动生成返回 |
timeDuration | 持续时间 | 当用户query中涉及“持续时间”概念时返回的字段,例如用户说“烤箱烤鱼半小时”,timeDuration返回“0.5小时” |
timeStart | 开始时间 | 根据当下时间推算出的预定动作起始时间,当用户query中涉及“开始时间”概念时返回的字段。例如“过2小时关闭空调”,且当下时间为下午2点,timeStart返回“16:00” |
query与返回示例
若测试query为“小度小度,空调温度调到26度”,技能测试窗口将返回如下结果。
字段名 | 字段值 |
---|---|
action | "to" |
mod | "air_condition" |
property | "temperature" |
propertyUnit | “度” |
propertyValue | “26” |
reply | “好的,主人” |
skillId | “12345678” |
timeDuration | null |
timeStart | null |
返回示例代码
若测试query为“开始清扫”时,技能解析返回的代码示例: