Google语音API超时时间

Google speech API timeout time

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

到目前为止,我已经成功地转换了一个较短的音频剪辑,但是现在使用更长的文件(10 分钟)我得到了这个错误:

Retry total timeout exceeded before anyresponse was received

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

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

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

无论如何,有一个解决方法!你得到了长长的 运行ning 操作名称,然后你停止了你的程序。会在google服务器上继续操作,稍后你会去取结果!

As written in the docs

Asynchronous Speech Recognition starts a long running audio processing operation.

我将在此处参考 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

没有找到合适的方法设置超时时间大于10分钟,所以直接修改了node_modules/google-gax/lib/longrunning.js。 有一个名为 backoffSettings 的变量保存超时值,它是对 node_modules/google-gax/lib/gax.js 中函数 createBackoffSettings 的调用。 在我修改那个变量之前它是这样的:

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

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

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

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

如果有人知道更好的处理方法,请分享。 希望对你有帮助。

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