使用PHP调用Google Speech Recognition API遇请求体调用失败问题
解决Google Speech-to-Text API调用失败的常见问题
嘿,我太懂调用Google语音识别API时卡壳的郁闷了,结合你给出的请求信息,我梳理了几个最容易踩坑的点,还有能直接上手的正确调用姿势:
1. 先把基础请求配置拉满
首先得确保这两个核心细节没出错:
- 必须用POST请求:绝对不能用GET,毕竟要传JSON格式的请求体,GET压根扛不住这么大的内容
- 请求头一定要加
Content-Type: application/json:这步很多人容易忘,直接导致服务器识别不了你的请求格式,直接拒掉
另外,你的URL里已经带了key参数,这没问题,但得确认:
- 这个API Key是有效的,没过期也没被禁用
- 你已经在Google Cloud控制台里启用了Speech-to-Text API(好多人注册了Key却忘了开对应服务,白忙活半天)
2. 音频内容的坑得仔细抠
你在config里指定了FLAC编码、16kHz采样率,那必须保证:
audio.content里的base64字符串,确实是从16kHz、单声道的FLAC文件转来的- 要是你的音频是立体声,得在config里加
"audioChannelCount": 2 - 可以把base64解码回文件,用播放器打开试试,先确认音频本身没问题
- 要是你的音频是立体声,得在config里加
- 单次请求的音频时长不能超过1分钟(免费额度限制),超过的话得用
speech:longrunningrecognize这个异步端点,不能用recognize同步接口
3. 给你一个可直接测试的请求示例
用curl命令的话,正确的调用格式是这样的(把你的Key和base64内容替换进去就行):
curl -X POST "https://content-speech.googleapis.com/v1/speech:recognize?key=AIzaSyD-XXXXXXXXXXXXXXXXX-Al7hLQDbugrDcw" \ -H "Content-Type: application/json" \ -d '{ "audio": { "content": "ZkxhQwAAACIEg....more......FzSi6SngVApeE=" }, "config": { "encoding": "FLAC", "sampleRateHertz": 16000, "languageCode": "en-US" } }'
4. 常见错误的快速排查指南
要是还是失败,对着错误信息找原因就行:
API key not valid:检查Key是不是输错了,有没有设置IP限制,或者Speech-to-Text API没启用Invalid audio content:要么base64编码错了,要么音频格式和config里的不匹配(比如实际是MP3却写了FLAC)Permission denied:可能是Key没有对应权限,或者超出了免费额度需要启用付费
内容的提问来源于stack exchange,提问作者Faraaz Farzain Permadi
相关产品推荐
相关产品推荐

