本页面介绍如何使用 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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需向 Dialogflow 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需向 Dialogflow 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需向 Dialogflow 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
其他语言
C#:请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 Dialogflow 参考文档。
PHP:请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 Dialogflow 参考文档。
Ruby 版:请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 Dialogflow 参考文档。
示例
如需了解从浏览器麦克风流式传输到 Dialogflow 的最佳做法,请参阅示例页面。