2016-07-30 17 views
5

我正在使用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率我相信 –

回答

3

因此,問題的答案是,不可以使用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

相關問題