我正在使用带有 cURL 的 REST API,因为我需要做一些快速而简单的事情,而且我在一个无法开始倾倒垃圾的盒子上;即一些厚厚的开发人员SDK。
我开始base64
编码flac
文件并启动speech.syncrecognize
.
最终失败了:
{
"error": {
"code": 400,
"message": "Request payload size exceeds the limit: 10485760.",
"status": "INVALID_ARGUMENT"
}
}
所以好吧,你不能在请求中发送 31,284,578 字节;必须使用云存储。因此,我上传了 flac 音频文件,并现在在 Cloud Storage 中使用该文件重试。那失败了:
{
"error": {
"code": 400,
"message": "For audio inputs longer than 1 min, use the 'AsyncRecognize' method.",
"status": "INVALID_ARGUMENT"
}
}
很好,speech.syncrecognize
不喜欢内容大小;再试一次speech.asyncrecognize
。那失败了:
{
"error": {
"code": 400,
"message": "For audio inputs longer than 1 min, please use LINEAR16 encoding.",
"status": "INVALID_ARGUMENT"
}
}
好的,所以speech.asyncrecognize
只能做LPCM;以格式上传文件,pcm_s16le
然后重试。所以最后,我得到了一个操作手柄:
{
"name": "9174269756763138681"
}
Keep checking it, and eventually it's complete:
{
"name": "9174269756763138681",
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.speech.v1beta1.AsyncRecognizeResponse"
}
}
So wait, after all that, with the result now sitting on a queue, there is no REST
method to request the result? Someone please tell me that I've missed the glaringly obvious staring me right in the face, and that Google didn't create completely pointless, incomplete, REST API.