是否无法使用curl来使用Google Cloud Speech API识别10到15分钟的文件?

时间:2016-07-30 20:29:29

标签: rest curl speech-recognition google-speech-api

我正在使用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。

1 个答案:

答案 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>