我正在使用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。
在你的情況下,結果似乎只是空的。這可能是由於音頻格式不匹配,音頻必須是16khz 16bit的小端。 –
音頻是44,100或48,000。我會嘗試降低音量,雖然文檔中提到:「有效值爲:8000-48000」,並建議「使用音頻源的本機採樣率(而不是重新採樣)。」在我說的問題中,我使用的是pcm_l16se,它應該讀取pcm_s16le,它是有符號的,16位,小端。 – tlum
48,你必須指定asyncrecognize率我相信 –