本页面介绍如何使用 API 将音频输入流式传输给检测意图请求。Dialogflow 会处理音频并将其转换为文字,然后再尝试匹配意图。这种转换称为音频输入、语音识别或语音转文字 (STT)。
准备工作
此功能仅适用于使用 API 与最终用户互动的情况。如果您使用的是集成服务,则可以跳过本指南。
在阅读本指南之前,请先完成以下事项:
- 阅读 Dialogflow 基础知识。
- 执行设置步骤。
创建代理
如果尚未创建代理,请立即创建一个:
- 前往 Dialogflow ES 控制台。
- 如果系统要求登录 Dialogflow 控制台,请登录。如需了解详情,请参阅 Dialogflow 控制台概览。
- 点击左侧边栏菜单中的创建代理 (Create Agent)。如果您已有其他代理,请点击代理名称,滚动到底部,然后点击创建新代理 (Create new agent)。
- 输入您的代理名称、默认语言和默认时区。
- 如果您已经创建了项目,请输入该项目。如果要允许 Dialogflow 控制台创建项目,请选择创建新 Google 项目 (Create a new Google project)。
- 点击创建 (Create) 按钮。
将示例文件导入代理
本指南中的步骤对您的代理进行了假设,因此您需要导入为本指南准备的代理。 导入时,这些步骤使用“恢复”(restore) 选项,该选项会覆盖所有代理设置、意图和实体。
如需导入文件,请按以下步骤操作:
-
下载
room-booking-agent.zip文件。 - 前往 Dialogflow ES 控制台。
- 选择您的代理。
- 点击代理名称旁边的设置 settings 按钮。
- 选择导出和导入 (Export and Import) 标签页。
- 选择从 ZIP 文件恢复 (Restore from ZIP),然后按照说明恢复下载的 zip 文件。
流式传输基础知识
Session 类型的 streamingDetectIntent 方法返回双向 gRPC 流式传输对象。此对象的可用方法随语言而变,因此请参阅与您的客户端库相应的参考文档,以了解详情。
流式传输对象用于并发收发数据。使用此对象,客户端可将音频内容流式传输到 Dialogflow,并同时侦听 StreamingDetectIntentResponse。
streamingDetectIntent 方法的 query_input.audio_config.single_utterance 参数会影响语音识别:
- 如果为
false(默认值),则在客户端关闭数据流之前,不会停止语音识别。 - 如果为
true,则 Dialogflow 将检测输入音频中的单独一条话语。Dialogflow 检测到音频的语音停止或暂停时,它会停止语音识别,并向客户端发送StreamingDetectIntentResponse及END_OF_SINGLE_UTTERANCE的识别结果。收到END_OF_SINGLE_UTTERANCE后,Dialogflow 会忽略该流中向其发送的任何音频。
在双向流式传输中,客户端可以半关闭流式对象,以告知服务器它不会再继续发送数据。例如,在 Java 和 Go 中,此方法称为 closeSend。在以下情况下,半关闭(并非取消)数据流非常重要:
- 客户端已完成数据发送。
- 客户端配置为
single_utterance设为 true,并且收到了StreamingDetectIntentResponse以及识别结果END_OF_SINGLE_UTTERANCE。
关闭数据流后,客户端应根据需要使用新数据流发起新请求。
流式传输检测意图
以下示例使用 Session 类型的 streamingDetectIntent 方法流式传输音频。
Go
如需向 Dialogflow CX 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Dialogflow CX 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Dialogflow CX 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Dialogflow CX 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
其他语言
C#: 请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Dialogflow CX 参考文档。
PHP: 请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Dialogflow CX 参考文档。
Ruby:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Dialogflow CX 参考文档。
示例
如需了解从浏览器麦克风流式传输到 Dialogflow 的最佳做法,请参阅示例页面。