我正在使用REST API与cURL,因为我需要做一些快速而简单的事情,而且我在一个我无法开始倾倒垃圾的盒子上;即一些厚的开发人员SDK。
我开始base64
编码flac
个文件并发起speech.syncrecognize
。
最终失败了:
{
"error": {
"code": 400,
"message": "Request payload size exceeds the limit: 10485760.",
"status": "INVALID_ARGUMENT"
}
}
好的,你不能在请求中发送31,284,578字节;必须使用云存储。所以,我上传了flac音频文件,然后再使用云存储中的文件重试。那失败了:
{
"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"
}
继续检查,最终完成:
{
"name": "9174269756763138681",
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.speech.v1beta1.AsyncRecognizeResponse"
}
}
等等,毕竟,结果现在坐在队列中,没有REST
方法来请求结果?有人请告诉我,我已经错过了直截了当地盯着我的那个人,并且谷歌并没有创建完全毫无意义的,不完整的REST API。
答案 0 :(得分:3)
所以这个问题的答案是,不,可以使用curl来使用Google Cloud Speech API识别10到15分钟的文件......假设你导航并遵守一套相当紧凑的约束......至少在beta1。
文档中没有明显的结果是结果应该由operations.get
方法返回...如果我的任何尝试实际上都返回了除空结果之外的其他内容,那么显而易见。
我的文件中的源速率是44,100或48,000 Hz,我将sample_rate
设置为源本机速率。但是,与文件相反:
所有RecognitionAudio中发送的音频数据的采样率(赫兹) 消息。有效值为:8000-48000。 16000是最佳的。为了最好 结果,将音频源的采样率设置为16000 Hz。如果 这是不可能的,使用音频源的本机采样率 (而不是重新采样)。
重新采样到16,000 Hz后,我开始使用operations.get
获得结果。
我认为值得注意的是,相关性并不意味着因果关系。重新采样到16,000 Hz后,文件变得非常小。因此,我无法证明这是一个采样率问题,而不仅仅是对超过一定大小的文件的服务阻塞。
值得注意的是,文档中的采样率不一致。似乎gRPC API可能期望sample_rate
,并且REST API可能期望sampleRate
,根据它们各自的详细定义,在这种情况下,Quickstart可能会为REST API提供不正确的示例。 / p>