使用 Python 将音频文件发送到 DialogFlow

Send audio file to DialogFlow using Python

我知道我可以使用 Python 以下列方式将数据(在本例中为文本)发送到 DialogFlow:

ai = apiai.ApiAI(CLIENT_ACCESS_TOKEN)
request = ai.text_request()
request.lang = 'de'  # optional, default value equal 'en'
request.session_id = "<SESSION ID, UNIQUE FOR EACH USER>"
request.query = "Hello"
response = request.getresponse()
print (response.read())

但我不确定是否可以将音频文件发送到 DialogFlow,有人知道吗?

有两种方法可以在 Google Action/Dialogflow 响应中使用音频文件:带有 <audio> 标签的 SSML 和媒体响应。两者都希望通过 HTTPS URL 提供音频文件,文件本身通常存储在 Google Cloud Storage 或 Amazon S3 等云存储服务中。

SSML (Speech Synthesis Markup Language)是一种用于音频输出的标记语言,就像HTML用于视觉输出一样。它受 Google Actions 支持,可用作普通文本响应的替代品,而不是像这样包含响应文本:

{
    "speech": "This is the text that the users hears",
    ...
}

您可以像这样使用 SSML 对其进行标记:

{
    "speech": "<speak><audio src="https://some_cloud_storage.com/my_audio_file.ogg"></audio></speak>",
    ...
}

请注意,<speak> 标签必须始终包围整个响应,这样 Google 现在它必须使用 SSML 呈现文本(就像网站上的 <html> 标签一样) . <audio> 标签可以带几个可选属性,详情请参阅文档。

SSML 的优点是开发人员非常容易使用,但音频文件的长度限制为 120 秒,文件大小限制为 5MB,并且用户无法控制播放。

Media responses 没有这些限制,显示为带有图像和播放控件的卡片,但它们目前仅适用于 Google 家庭和 Android 设备。