繁体   English   中英

带有音频的 Dialogflow V2 HTTP API detectIntent 返回无效响应(不完整的正文)

[英]Dialogflow V2 HTTP API detectIntent with audio returns invalid response (incomplete body)

我面临下一个问题:一些 Dialogflow V2 HTTP API 请求响应体不完整。 没有发现规律,它可能发生在具有不同意图和会话信息的随机请求期间。

例子:

POST https://dialogflow.googleapis.com/v2/projects/{project-name}/agent/sessions/{session-uuid}:detectIntent

> Content-Type: application/json
> Authorization: Bearer {token}

REQUEST BODY:
{
    "queryInput": {
        "audioConfig": {
            "audioEncoding": "AUDIO_ENCODING_OGG_OPUS",
            "sampleRateHertz": 48000,
            "languageCode": "en-US",
            "model": "command_and_search"
        }
    },
    "inputAudio": "{base64-encoded-file}"
}

RESPONSE:
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=UTF-8

RESPONSE BODY:
{
  "queryResult": {
    "languageCode": "en-US"
  }
}

... 就这样。 API 仅在queryResult返回带有languageCode字段的正文。 除了这个,其他都不见了。

问题仅在有音频的请求期间发生,对于文本输入一切正常。

任何帮助/提示如何避免这个问题? 我将不胜感激任何帮助。

我已经查看了文档 [1],在我看来,您使用的采样间隔与默认格式的采样间隔不同。

特别是,如您所见“Ogg 容器 (OggOpus) 中的 Opus 编码音频帧。sampleRateHertz 必须为 16000。”

同时,您指定了“sampleRateHertz”:48000。

这可能是您出现意外结果的原因。 如果采样率不同,那么您可能会错误地识别信号。 我建议您将输入中的音频重新采样为 16000 Hz 或更改编码格式,也许选择 FLAC(免费无损音频编解码器),因为这是推荐的编码,因为它是无损的(因此识别不会受到影响)

[1] https://cloud.google.com/dialogflow/docs/reference/rest/v2beta1/QueryInput#audioencoding

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM