使用Google Cloud Speech API可以使用curl识别10到15分钟的文件吗?

问题描述:

我正在使用REST API和cURL,因为我需要做一些快速和简单的事情,并且我在一个箱子上,我无法开始倾倒垃圾;即一些厚厚的开发者SDK。使用Google Cloud Speech API可以使用curl识别10到15分钟的文件吗?

我开始编码base64编码flac文件并启动speech.syncrecognize

,最终失败:

{ 
    "error": { 
    "code": 400, 
    "message": "Request payload size exceeds the limit: 10485760.", 
    "status": "INVALID_ARGUMENT" 
    } 
} 

所以没关系,你不能在发送请求31284578个字节;必须使用云端存储。因此,我上传了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" 
} 

继续检查它,最终它的完成:

{ 
    "name": "9174269756763138681", 
    "done": true, 
    "response": { 
    "@type": "type.googleapis.com/google.cloud.speech.v1beta1.AsyncRecognizeResponse" 
    } 
} 

所以等待,毕竟那,结果现在坐在队列中,有没有REST方法来请求结果?有人请告诉我,我已经错过了明显地盯着我,并且Google没有创建完全没有意义的,不完整的REST API。

+0

在你的情况下,结果似乎只是空的。这可能是由于音频格式不匹配,音频必须是16khz 16bit的小端。 –

+0

音频是44,100或48,000。我会尝试降低音量,虽然文档中提到:“有效值为:8000-48000”,并建议“使用音频源的本机采样率(而不是重新采样)。”在我说的问题中,我使用的是pcm_l16se,它应该读取pcm_s16le,它是有符号的,16位,小端。 – tlum

+0

48,你必须指定asyncrecognize率我相信 –

因此,问题的答案是,不可以使用curl来使用Google云语音API在10到15分钟的文件中识别......假设您导航并符合相当紧密的一组约束......至少在beta1中。

什么是不明显从文档是结果应该返回的operations.get方法......这显然有我的任何尝试实际上返回的东西除空结果之外。

我的文件中的源码率为44,100或48,000 Hz,我将sample_rate设置为源本机码率。然而,与其中规定的文件:

采样率,赫兹在所有RecognitionAudio 邮件发送的音频数据。有效值是:8000-48000。 16000是最佳的。要获得最佳效果,请将音频源的采样率设置为16000 Hz。如果 不可行,请使用音频源的本机采样率 (而不是重新采样)。

重新采样到16,000赫兹我开始用operations.get得到结果。

我认为值得注意的是,相关并不意味着因果关系。重新采样到16,000 Hz后,文件变得非常小。因此,我无法证明它是一个采样率问题,而不仅仅是服务窒息超过一定大小的文件。

同样值得注意的是,文档指的是采样率不一致。看起来gRPC API可能期望sample_rate,并且REST API可能期望sampleRate,根据它们各自的详细定义,在这种情况下,快速入门可能会给出REST API的不正确示例。

+0

根据[文档](https://cloud.google.com/speech/reference/rest/Shared.Types/RecognitionConfig)它是'sampleRate',而不是'sample_rate',它一定是你没有正确设置比率。 –

+1

这取决于你在看什么文件。在[Quick Start](https://cloud.google.com/speech/docs/getting-started)中,它是sample_rate。 – tlum

+0

尽管快速入门使用cURL提供了一个REST示例,但[gRPC](https://cloud.google.com/speech/reference/rpc/google.cloud.speech.v1#google.cloud.speech.v1.InitialRecognizeRequest)使用sample_rate可能是差异的根源。在[最佳实践](https://cloud.google.com/speech/docs/best-practices)中,它也是sample_rate,但更明显的是他们谈论的是gRPC ......只要您不去假设REST是一样的。这就是你用预览测试版获得的。 – tlum