核心概念
小雅OS是一个智能语音对话系统。使用人工智能相关技术,将自然语言对话简单便捷的应用于到您的硬件设备。
在了解如何开发之前,先了解以下一些概念。
通信过程
系统包含三个部分:中控(API Gateway)、自然语言理解引擎(NLU)、技能(Skill)。
在用户的语音转为文字后,系统将会把相应的文字发给对话中控。对话中控请求语言理解
服务,将文字理解为domain/intent
结构化数据。然后对话中控将此数据发给技能,技能则会返回执行后的结果,客户端即可对结果进行响应。
除了语音对话,还需要请求其他接口执行其他任务,例如同步播放进度接口,此时接口中控则会像对话中控一样,将客户端发来的domain/intent
数据发给技能进行执行,执行结果再返回给客户端。
技能
技能是语音交互的基本单位,定义了对话的语法规则,以及对应的执行逻辑,用承接一段对话的逻辑,完成一组特定的任务。
例如小雅OS已经支持喜马拉雅FM、喜马拉雅儿歌、查天气、查快递等技能。
以喜马拉雅FM技能为例,你可以说:“我想听郭德纲的相声”, “继续播放”, “下一集” 等。将由技能执行相应的动作并返回数据。
Domain/Intent
技能具体执行时,将会有明确的执行对象和执行动作。自然语言的”今天天气怎么样?“为例,执行对象是天气,执行动作是查询,动作的参数是时间:今天
。
我们表示为:
{
"domain": "weather",
"intent": "get_weather",
"slots": {
"time": [
{
"slot_type": "TIME",
"text": "今天",
"value": {
"sub_type": 0,
"type": 1,
"begin": {
"date": {
"month": 3,
"year": 2019,
"day": 20
}
}
}
}
]
}
}
这组数据是由NLU根据”今天天气怎么样“这句话生成,并发给技能去查询和处理,技术侧按照相应的逻辑返回文本即可。文本将由设备再次请求TTS(Text to Speech,语音合成)服务生成语音播放给用户。
这组数据中,有以下概念:
Domain
(领域):技能的一个内部概念,用于指明要查询的信息是什么;
Intent
(意图):技能等执行的动作,天气
领域可以”查天气“,也可以”查空气质量“、”查洗车指数“、”查有没有雨“等,即天气技能包含多个意图;
Slot
(槽位):意图的参数,从对话中抽取,例如天气技能的时间槽位可以是”今天“,也可以是”明天“,地点可以是”北京“,也可以是”上海“。