Google Cloud Speech API遇无效音频源错误及Curl请求无响应求助
解决Cloud Speech API的两个问题:gcloud命令报错与curl无响应
先聊聊你遇到的第一个gcloud命令报错问题——明明用的是官方提供的GCS链接,却被提示音频源无效,大概率是这几个原因:
- 更新gcloud SDK版本:旧版本的gcloud工具可能对GCS URL的解析有bug,先执行
gcloud components update把SDK更到最新,再重试命令。 - 调整引号格式:有些shell环境下,单引号会干扰URL的解析,你可以去掉命令里的单引号试试:
gcloud ml speech recognize gs://cloud-samples-tests/speech/brooklyn.flac --language-code=en-US - 验证GCS访问权限:先执行
gsutil ls gs://cloud-samples-tests/speech/brooklyn.flac测试能不能访问这个公开样本文件,如果能正常返回路径,说明权限没问题;如果报错,就得检查你的gcloud账号是否有存储服务的访问权限了。
再来说curl请求无响应的问题,没收到反馈大概率是请求配置或环境出了问题,你可以按这几步排查:
- 检查sync-request.json的格式:确保JSON内容完全符合Speech API的要求,针对GCS音频的正确同步请求格式应该是这样的:
要是你用的是本地音频,{ "config": { "encoding": "FLAC", "sampleRateHertz": 16000, "languageCode": "en-US" }, "audio": { "uri": "gs://cloud-samples-tests/speech/brooklyn.flac" } }audio字段得换成content(填base64编码的音频内容),别搞混了。 - 确认访问令牌有效:单独执行
gcloud auth print-access-token,看看能不能输出一串有效的token字符串。如果输出为空或报错,说明你的账号授权有问题,重新执行gcloud auth application-default login获取凭据就行。 - 关闭curl静默模式:去掉命令里的
-s参数,这样curl会输出详细的请求日志,能直接看到是连接超时、HTTP错误还是其他问题,方便定位:curl -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token)" https://speech.googleapis.com/v1/speech:recognize -d @sync-request.json
最后再确认一下:你的Speech-to-Text API确实在Cloud控制台里启用了吧?有时候配置完容易漏了这一步,去API库查一下状态更稳妥。
内容的提问来源于stack exchange,提问作者Madiha
相关产品推荐
相关产品推荐

