接入第三方语音
观看人机对话演示视频
申请谷歌服务账号
1.创建谷歌GCP账号
点击谷歌GCP(Google Cloud Platform)
类型选择:用于商家管理
注:本文使用简体中文撰写;您可切换自己熟悉的语言。

2.进入GCP控制台
点击右上角“控制台”,或点击链接:https://console.cloud.google.com/

创建Google服务凭据
1.Tips:更改语言为简体中文
修改语言步骤:”…” ——> 偏好设置 ——> 语言 ——> 中文(中国) ——> 保存
这里不建议使用浏览器所提供的网页翻译,因为翻译结果可能与配图中的选项不一致。


2.项目相关
a.创建项目
点击:https://console.cloud.google.com/projectcreate
自定义输入项目名称,然后点击“创建”

b.进入该项目
点击下拉箭头“↓”

点击进入刚刚创建的项目:

3.创建服务账号并设置角色
a.点击左侧的“导航菜单——> IAM和管理 ——> 服务账号”

b.点击“创建服务账号”

c.输入服务账号的名称,并点击底部“创建并继续”
注意:页面会自动填写服务账号ID,一般不必修改。

d.点击角色下拉列表,选择“基本-Owner”,然后“添加其他角色”

e.点击第二个角色的下拉列表,选择“Dialogflow – Dialogflow API Client”,然后点击底部的“完成”即可

4.获取密钥
a.点击进入刚刚创建的服务账号

b.点击“密钥”——>“添加密钥”——“创建新密钥”

c.选择json类型后,点击创建

d.您的电脑会自动下载一个json文件,这就是Google服务凭据

提供谷歌服务凭据给猎户星空
1.需要提供的内容
- Google服务凭据(Json文件)
- 企业的完整名称
2.提供给对接人
- 张国梁Grayson 或 杨婧(Yami)
我们需要1个工作日来完成企业和谷歌项目的绑定。此时,您可以继续完成后续的步骤。
启用谷歌API
1.启用Cloud Speech-to-Text API服务
打开:https://console.cloud.google.com/marketplace/product/google/speech.googleapis.com
点击“启用”按钮


启用结算功能:需要绑定付款账户,可以使用个人信用卡,或者使用GCP Partner的付款账户。
2.启用Cloud Text -to- Speech API服务
打开:https://console.cloud.google.com/marketplace/product/google/texttospeech.googleapis.com 点击“启用”按钮

Dialogflow(人机对话设计)
Dialogflow是用于设计人机对话(Q&As)的操作平台
1.新建Agent
输入名称、选择语言(暂时以英文”en”举例)、选择已创建的Google Project,然后点击右上角的”Create”即可。

2.设计机器人Q&A能力
a.添加第一个问题
- 【重要】请按照格式“tell_me_why::orion_baike::sample question”的格式填写您希望添加的问答信息的名称
-
- 新建Agent自带的“Default Welcome Intent”请改为”tell_me_why::orion_baike::Default Welcome Intent”。当有人跟机器人打招呼时,会播报里面的回答,比如“你好”。
- 新建Agent自带的“Default Fallback Intent” 表示当机器人听到问题但是回答不上来的时候,就会播报它里面的回答。这个不需要添加前缀,保持原状即可。否则机器人听到各种噪音,也会当作问题进行回答。
- 开头的 “tell_me_why::orion_baike::”必须一字不差,”::”为英文双冒号,这样才能让招财豹机器人正确解析此问答
- 末尾的”sample question”可以完全自定义,相当于是给这条问答信息起一个名字,比如: what’s your job
- Training Phrases:就是用户可能会问答的问题,建议添加多种类似的问法。
-
- 注意:问题只写文字即可,末尾不要带问号“?”,参考下面两个示例
- Text Response:是希望机器人回答的内容,可以填写一条或多条回答;如果多条,会随机选择一个进行回答
- Training phrases 和 Text Response 需要使用与该Agent当前正在配置的语言一致:
- 如果当前语言为”en”,那么问题和回答需要全部使用英文填写。
- 如果当前语言为”zh-hk”,那么问题和回答都要用繁体中文填写。


注:“Save”之后,页面右侧可以在线测试;如果成功的话,再到机器上测试体验
b.支持多语种对话
如果需要支持多种语言, 可后续点击“+”,添加相应的语言,然后点击右上角“Save”按钮保存即可。

如果希望机器人支持“粤语”的语音识别,请添加:Chinese(Traditional)-zh-hk.



但是每种语言需要配置该语言的问题和回答,才能支持相应语言的语音交互


3.高级用法
a.导出与导入
如果您已经完成了第一个Agent的配置,需要开通第二个Agent并复用第一个Agent里面的问题和答案,此时有个简单的办法。
从第二个Agent中导出zip包,如下图示;然后解压,并删除其中的intent文件夹

然后从第一个Agent中导出Zip包,解压之后把intent文件夹复制到上面的目录中
(相当于是替换掉之前的intent文件夹)。
最后把zip压缩后重新导入第二个Agent即可,如下图示:

注意:导入时,需要按照页面提示,准确输入“IMPORT”方可导入。
注意:您也可参考猎户星空提供的intent配置文件,可手工添加意图:按照下图编辑意图的名称、问法、回答,然后保存即可
英语日语韩语 | 繁体中文(粤语) |
配置文件示例intents.zip | 配置文件示例intents.zip |
配置文件的意图列表:![]() | 配置文件的意图列表:![]() |
配置文件中的一条内容:what’s your job![]() | 配置文件中的一条内容:你做咩呀![]() |
“Save”之后,页面右侧可以在线测试;如果成功的话,再到机器人上测试 |
b.人工干预
可通过”Training”模块对语义解析的结果进行干预。

如果是正确识别的结果,但匹配了错误的意图或者没有匹配任何意图,可以直接指定到适合的意图。 比如:

Try it now:

如果文字识别结果无法判断出明确的意图,可以点击右侧按钮进行屏蔽。

c.招财豹领位指令
(1).进入Dialogflow
https://dialogflow.cloud.google.com/
(2).创建地点列表Entity

输入Entity信息:
- Entity名字:location_list
- 勾选3项:1、3、4打勾
- 添加地点词:
- 第一栏为地点名(与地图中的地点名称保持一致,包括大小写)
- 第二栏可以添加该地点词的几个别名
点击Save保存

(3).新建领位Intent
领位Intent的标题格式:leading::go_location::帶我去零食區 (标红部分必须一字不差)
Training Phrases填入一个领位的句式:比如“帶我去零食區”
然后鼠标选中地点名称”零食區”,在出现的下拉列表中选择刚刚添加的Entity“location_list

此时,”零食區”和“location_list”都变为黄色,说明零食区已经匹配到了Entity”location_list”中的对应条目.
然后在Parameter name下方,把 location_list 改为location,此时下方的”Action and Paramaters”中的
location_list也会自动改为location。 如下图所示:

可以继续添加不同的句式:比如“零食區去邊度”,同样用鼠标选中”零食區”,然后可直接选 择”@location_list:location“,这就是第一个句式中设置好的匹配规则.
然后点击“SAVE“保存

(4).在线测试
右上方Try it now,输入测试句子,即可查看结果。
如果匹配了正确的intent、parameter 和 value,那么就可以在机器人上测试了。
要注意的是:value的值应该与机器人地图地点中的某个地点名完全一致

以下是别名“零食”的测试结果,以及换了 另一个地点“汽水”和另一个句式“xxx去邊度”的测试结果。
该结果表示:Entity“location_list”中的所有地点名都可以适用于领位Intent中的所有句式,能够
正确识别并执行领位任务。如果有30个地点 和5个句式,那么就支持150种领位指令的不同说法.


d.招财豹送餐指令
与3.3的领位指令相互,只有两处不同
Intent的名字前缀格式:cafe_meal::add_task::xxxx
Parameter Name修改:table_number
其他的配置与领位指令相同,快去试试吧!

e.招财豹问某一道菜指令
与3.3的领位指令配置方法一致。区别之处有以下几点:
菜品需要新建一个Entity(菜品词典表),如下表的”Dish_List”
第一栏为菜名(需要与招牌菜中的菜名完全一致,包括大小写),如Pork Pot/Fish
第二栏可以添加该地点词的几个别名,不区分大小写

Intent的名字前缀格式:solicit::specialty::ask dish::xxx
Parameter Name修改:entity

常见问题排查
- rpc error: code = PermissionDenied desc = IAM permission ‘dialogflow.sessions.detectIntent’ on ‘projects/orion-314912/agent’ denied.
——>账号授权问题:确认是否给服务账号授予dialogflow api client 权限
- 机器人听到一个问题并且屏幕上显示了正确的文字,但是没有任何回答
——>在Dialogflow Agent中通过Try it now测试一下,如果也没有回答,就表示尚未配置该问题及其回答。请添加问答并Save之后,先在网页上通过”try it now”测试,成功之后即可在机器人上测试。
