Google语音API超时时间
我正在尝试使用Speech API客户端API来将audio文件转换为文本。
到目前为止,我已经成功地转换了一个短的audio剪辑,但现在用更长的文件(10分钟),我得到这个错误:
Retry total timeout exceeded before anyresponse was received
我在文档中看到,使用asynchronous调用时,每次调用的最大分钟数为60次,而且我已将file upload到Google Cloud Storage,因为文件需要超过1分钟。
所以我真的不明白为什么我得到这个错误,有什么帮助?
对于有此问题的其他人,Google现在通过删除超时值来解决此问题。 请参阅https://github.com/googleapis/gax-nodejs/pull/140/files更新至最新的google-gax npm软件包后,我的语音API请求现已成功运行。
默认情况下有10分钟的系统超时。 这是其他Google云服务的已知问题 ,但是修复build议不适用于我,我认为在运行代码并开始连接时还需要设置其他function。
无论如何,有一个解决方法! 你得到长时间运行的操作名称,然后你停止你的程序。 该操作将继续在谷歌服务器上,稍后您将获取结果!
正如在文档中所写的那样
asynchronous语音识别启动长时间运行的audio处理操作。
我将在这里引用node.js
示例,类似的概念将适用于其他。 所以,当你得到你的回应(不要使用诺言版本)时,传递一个callback, 就像这里解释的那样 ,而不是
operation .on('error', function(err) {}) .on('complete', function(transcript) { // transcript = "how old is the Brooklyn Bridge" });
只是做一些像
console.log(operation)
记下操作名称,以后再使用操作方法
你可以在google oauth操场上testing这些
我没有find正确的方法来设置超过10分钟超时,所以我直接修改node_modules/google-gax/lib/longrunning.js
。 有一个variables叫做backoffSettings
,它包含超时值,它是调用node_modules/google-gax/lib/gax.js
。 在我修改该variables之前,它是这样的:
backoffSettings = createBackoffSettings(100, 1.3, 60000, null, null, null, 600000);
我改变它来处理1小时超时:
backoffSettings = createBackoffSettings(100, 1.3, 60000, null, null, null, 3600000);
createBackoffSettings
函数调用的最后一个参数是totalTimeoutMillis
,正如您所看到的,默认为10分钟。
如果有人知道更好的方式来处理它,请分享。 希望能帮助到你。