Google语音API超时时间

时间:2017-03-13 16:34:00

标签: node.js timeout google-speech-api google-cloud-speech

我尝试使用Speech API客户端API将音频文件转换为文本。

到目前为止,我已经成功转换了一个简短的音频片段,但现在有了更长的文件(10分钟),我收到了这个错误:

Retry total timeout exceeded before anyresponse was received

我已在docs中读到,通过异步通话,每次通话的最大分钟数为60,我已将文件上传到Google云端存储,因为文件需要超过1分钟。

所以我真的不明白为什么我会收到这个错误,有什么帮助?

3 个答案:

答案 0 :(得分:1)

默认情况下,系统超时为10分钟。 This is a known issue for other Google Cloud services,但是修复建议不适用于我,我认为在运行代码并开始连接时需要设置其他内容。

无论如何,有一个解决方法!您获得长时间运行的操作名称,然后停止您的程序。该操作将在谷歌服务器上继续,稍后您将获取结果!

As written in the docs

  

异步语音识别启动长时间运行的音频处理操作。

我将在这里引用node.js示例,类似的概念将适用于其他人。 因此,当您收到回复时(请勿使用承诺版本),请将回调传递给like explained here,而不是

operation
    .on('error', function(err) {})
    .on('complete', function(transcript) {
      // transcript = "how old is the Brooklyn Bridge"
    });

做一些像

这样的事情
console.log(operation)

记下操作名称,稍后使用the operation method

You can test these on the google oauth playground

答案 1 :(得分:1)

对于遇到此问题的其他人,Google现在已通过删除超时值修复了此错误。见https://github.com/googleapis/gax-nodejs/pull/140/files 在更新到最新的google-gax npm软件包之后,我的语音api请求现在可以成功运行。

答案 2 :(得分:0)

我没有找到将超时设置为超过10分钟的正确方法,因此我直接修改了node_modules/google-gax/lib/longrunning.js。 有一个名为backoffSettings的变量保存超时值,它是对createBackoffSettings中函数node_modules/google-gax/lib/gax.js的调用。 在我修改该变量之前,它是这样的:

backoffSettings =
        createBackoffSettings(100, 1.3, 60000, null, null, null, 600000);

我将其更改为处理1小时超时:

backoffSettings =
        createBackoffSettings(100, 1.3, 60000, null, null, null, 3600000);

createBackoffSettings函数调用中的最后一个参数是totalTimeoutMillis,如您所见默认为10分钟。

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