-
背景概述
为了更好的用户体验、更高的市场竞争力和更丰富的功能,想要实现从移动端APP语音控制电视的效果,目前市面上有很多成熟的技术选型,当前通过前期商务沟通,主要考虑接入谷歌的产品,以下主要分析谷歌实现智能语音控制电视设备的报告
-
流程概述
即从谷歌产品的技术来分析,移动端APP收集麦克风语音并转为转为音频流,以音频流为参数调用coolita后台服务,在后台服务中去调用谷歌云服务接口解析音频流并获取控制电视的指令返回给移动端,移动端再将指令下发给设备,设备返回指令执行结果
-
流程实现
如上流程图所示,最重要的部分是谷歌的dialogflow如何从音频流中进行意图识别,即下面将介绍dialogflow是如何进行意图识别的
-
dialogflow概念介绍
-
代理
Dialogflow 代理是负责与最终用户同时对话的虚拟客服。它是一种自然语言理解模块,能够理解人类语言的细微差别。
Dialogflow 可以在对话过程中将最终用户输入的文字和音频转换为应用和服务可以理解的结构化数据。您可以设计并构建 Dialogflow 代理来负责您的系统所需的各种对话。
Dialogflow 代理类似于人类呼叫中心的客服人员。您可以对代理/客服人员进行训练来处理预期的对话场景,您的训练不需要过于明确。
-
意图
“意图”用于对一轮对话中的最终用户意图进行分类。每个代理可以定义多个意图,组合意图可以处理一段完整的对话。当最终用户输入文字或说出话语(称为“最终用户表述”)时,Dialogflow 会将最终用户表述与代理中的最佳意图进行匹配。匹配意图也又称为“意图分类”。下面是一个天气意图的列子:
基本意图包含以下内容:
- 训练短语:这些是最终用户可能会说的示例短语。当最终用户的表述与其中某一短语类似时,Dialogflow 会匹配意图。因为 Dialogflow 的内置机器学习功能可使用其他相似的短语扩展您的列表,所以您无需定义所有可能出现的示例。
- 操作:您可以为每个意图定义一个操作。当匹配了相应意图时,Dialogflow 会向系统提供该操作,您可以使用该操作触发系统中定义的特定操作。
- 参数:在运行时中匹配了某个意图时,Dialogflow 会将从最终用户表述中提取的值作为“参数”提供。每个参数都有一个类型,称为实体类型,用于确切规定提取该数据的方式。与原始的最终用户输入不同,参数是结构化数据,可以轻松用于执行某些逻辑或生成响应。
- 响应:您可以定义要返回给最终用户的文本、语音或视觉响应。这些响应可能是为最终用户提供解答、向最终用户询问更多信息或终止对话。
下图显示了匹配意图和响应最终用户的基本流程:
-
实体
每个意图参数都有一个类型,称为实体类型,该类型确切规定从最终用户表述中提取数据的方式。Dialogflow 提供预定义的系统实体,这些系统实体可以匹配许多常见数据类型。例如,有用于匹配日期、时间、颜色、电子邮件地址等类型的系统实体。您还可以自行创建自定义实体来匹配自定义数据。例如,您可以定义一个 vegetable 实体,来匹配杂货店代理出售的蔬菜类型。
-
上下文
使用上下文来控制对话流。可以为意图配置上下文,方法是设置由字符串名称标识的输入和输出上下文。匹配了某个意图时,为该意图配置的所有输出上下文都将变为活跃状态,下图显示了为银行代理使用上下文的示例。
- 最终用户询问其支票账户的相关信息。
- Dialogflow 将此最终用户表述与
CheckingInfo意图匹配。此意图具有checking输出上下文,因此上下文变为活跃状态。 - 代理向最终用户询问其希望了解其支票帐号哪类信息。
- 最终用户回复“我的余额”。
- Dialogflow 将此最终用户表述与
CheckingBalance意图匹配。此意图具有checking输入上下文,该上下文需要处于活跃状态才能匹配此意图。当savings上下文处于活跃状态时,也可能存在类似的SavingsBalance意图来匹配该最终用户表述。 - 系统执行必要的数据库查询后,代理会回复该支票账户的余额。
-
后续意图
使用后续意图自动设置意图对的上下文。后续意图是相关父意图下的子意图。创建后续意图时,系统会将输出上下文添加到父意图中,并将同名的输入上下文添加到子意图中。只有父意图在上一轮对话中匹配时,系统才会匹配后续意图
官方网址:cloud.google.com/dialogflow/…
-
通过 API 实现用户互动
即通过谷歌官方提供的依赖、相关配置信息,在coolita后台服务中去访问dialogflow的API,获取匹配意图的响应结果
-
最终用户输入或说出表达内容。
-
您的服务通过一个检测意图请求消息将此最终用户表达式发送到 Dialogflow。
-
Dialogflow 向您的服务发送检测意图响应消息。此消息中包含下列相关信息:匹配的意图以及为该意图定义的操作、参数和响应。
-
您的服务会根据需要执行操作,如数据库查询或外部 API 调用。
-
您的服务向最终用户发送响应。
-
最终用户看到或听到响应。
-
价格明细
注:已和谷歌工程师确认,整个链路只需要使用dialogflowES的音频输入功能
| 功能 | 价格 |
|---|---|
| 音频输入(也称为语音识别、语音转文字、STT) | 每 15 秒音频 $0.0065 † |
-
和微软语音性能比较
| 比较 | 谷歌语音 | 微软语音微软智能语音报告 |
|---|---|---|
| 响应时间 | 较短,因为dialogflow内嵌STT服务,所以整个请求链路较短,即1)移动端->后台->dialogflow2) 移动端->设备且后台访问dialogflow的API时,本地测试只需3~6秒注:上述不包括移动端到设备的访问时间 | 较长,因为需要单独调用微软的STT服务,所以整个请求链路较长,即1)移动端->微软STT服务2)移动端->后台->Chat-Gpt3) 移动端->设备旧版本访问STT+Chat-Gpt时,本地测试需10-20秒目前chat-gpt在23年7月份已推出api新版本:2023-07-01-preview,新版本访问STT+Chat-Gpt时,本地测试只需3-8秒注:上述不包括移动端到设备的访问时间 |
| 功能扩展(移动端语音控制电视) | 一般1)dialogflow以意图识别的形式回答用户提问,如果需要扩展其他的功能只需要在平台新增对应意图即可2)实际有多个出货国家,那么在意图识别之前需要在dialogflow建立多种语言意图3)不友好支持在一次调用diaologflow中满足多次执行的意图 | 强1)Chat-Gpt同样也支持通过增加协议内容去支持相关新增的功能2)同理,在访问Chat-Gpt之前需要规定好多个语言的示例(用户+助手)内容3)支持在一次Chat-gpt的调用中获取协议中多个执行操作 |
| 功能扩展(其它) | 弱,dialogflow对话基础在于提前去规划设置相关的问答信息,虽然Dialogflow 也有内置机器学习功能,但并不具有很强的分析和理解能力 | 强,Chat-GPT具有多种处理文本的能力,包括生成自然流畅的对话、处理长文本、情感识别、问题回答以及处理多语言等能力,这些能力可以被广泛应用于各种自然语言处理场景 |
| 准确率 | 较强,dialogflow的意图识别准确率是基于意图配置中训练短语设置和实体类设置,设置越完善,识别率越高 | 强,基于Chat-Gpt的大模型技术,在写好的规范协议内,在本地测试时,识别率很高,识别率也和协议的内容有关,越明确识别率就越高 |
| 语言支持 | 每次在dialogflow进行意图识别时,只支持一种语言语音 | 微软的STT服务最多支持4或8种语言候选列表 |
-
和微软语音成本比较
当前根据谷歌成本预估案列,按月活设备40万,每设备月请求20计算,直接使用Dialogflow语音识别,单价为0.0065*400000=$52,000
| 比较 | 谷歌语音 | 微软语音 |
|---|---|---|
| 价格(一次请求 5 秒语音) | $0.002166(dialogflowES) | 0.000002625+0.001389(STT)为5秒语音转文本费用0.0000015150为调用chat-gpt返回token的时费用 |
| 按月活且单价为每5秒 | 7356432031877.8633 | 7356432042137.63前提:8月5日为准,算出过去30日到昨日的去重累计活跃设备数量735643为列,每设备月请求20计算 |
| 价格(一次请求15 秒) | $0.0065(dialogflowES) | 0.0000002*700+0.005792 |
| 按月活且单价为每15秒 | 7356432095633.59 | 7356432085216.88 |