【问题标题】:Invalid json payload for syncrecognize curl request用于同步识别 curl 请求的 json 负载无效
【发布时间】:2025-12-31 06:30:10
【问题描述】:

我关注https://cloud.google.com/speech/docs/getting-started成功跑了

curl -s -k -H "Content-Type: application/json" \
-H "Authorization: Bearer access_token" \
https://speech.googleapis.com/v1beta1/speech:syncrecognize \
-d @sync-request.json

获得预期的输出。但是,现在我正在尝试做基本相同的事情,但对于本地 flac 文件,所以我改为运行:

curl -s -k -H "Content-Type: audio/x-flac" -H "Authorization: Bearer [my access key]" 
https://speech.googleapis.com/v1beta1/speech:syncrecognize --data-binary @file.flac

我收到了

的回复
{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unexpected     token.\nfLaC\u0000\u0000\u0000\"\u0004\n^",
    "status": "INVALID_ARGUMENT"
  }
}

google api 开发者控制台显示了进来的消息,但没有给我更多信息来帮助我。我也试过了

wget --post-file file.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "https://speech.googleapis.com/v1beta1/speech:syncrecognize?key=[my api key]"

并且我还收到 400 Bad Request 错误。

有人成功实现了我的目标吗?我能找到的所有示例都是使用 api 上传文件或使用一些库,而不是简约 curl 或 wget 请求。

【问题讨论】:

  • 愚蠢的我。我收到此错误是因为我在文件名前缺少@。

标签: curl wget google-cloud-speech


【解决方案1】:

您应该尝试像这样引用数据二进制文件:

curl -s -k -H "Content-Type: audio/x-flac" -H "Authorization: Bearer [my access key]" 
https://speech.googleapis.com/v1beta1/speech:syncrecognize --data-binary @'file.flac'

我遇到了同样的问题,这为我解决了。

【讨论】:

  • 稍后我会试一试,然后告诉你它是如何工作的。谢谢
  • 所以我尝试在文件名周围添加单引号,但仍然得到同样的错误。还有其他建议吗?