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分钟。

如果有人知道更好的方式来处理它,请分享。 希望能帮助到你。