4

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

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

Retry total timeout exceeded before anyresponse was received

我在文档中读到异步调用的最大分钟数为每次调用 60 分钟,并且我已将文件上传到 Google Cloud Storage,因为超过 1 分钟的文件需要它。

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

4

3 回答 3

1

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

于 2017-06-12T06:50:04.490 回答
1

默认情况下,系统超时为 10 分钟。 这是其他 Google Cloud 服务的已知问题,但建议的修复对我不起作用,我认为当您运行代码并开始连接时需要设置其他内容。

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

如文档中所写

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

我将参考node.js 这里的示例,类似的概念将适用于其他人。所以,当你得到你的回应(不要使用承诺版本)时,给它一个回调,就像解释这里一样,而不是

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

只是做类似的事情

console.log(operation)

记下操作名称,稍后使用操作方法

您可以在 google oauth playground 上测试这些

于 2017-03-16T08:05:20.847 回答
0

没找到合适的方法设置timeout超过10分钟,所以node_modules/google-gax/lib/longrunning.js直接修改了。有一个名为backoffSettings保存超时值的变量,它是createBackoffSettingsnode_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 分钟。

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

于 2017-05-29T18:00:56.450 回答