我正在尝试使用语音API客户端API,以将音频文件转换为文本。
到目前为止,我已经成功地转换了一个简短的音频剪辑,但是现在使用更长的文件(10分钟),我得到了此错误:
Retry total timeout exceeded before anyresponse was received
我已经在文档中阅读了,与async呼叫的最多分钟数为每电话60,我已将文件上传到Google Cloud Storage,因为文件需要超过1分钟的时间。
。所以我真的不明白为什么要遇到错误,有任何帮助吗?
默认情况下,系统超时为10分钟。这是其他Google Cloud Services的已知问题,但是修复建议对我不起作用,我认为当您运行代码并启动连接时还需要设置其他问题。
无论如何,有一个解决方法!您可以获得长期运行的操作名称,然后停止程序。该操作将继续在Google服务器上,然后您将获取结果!
文档中写的
异步语音识别开始了长期运行的音频处理操作。
我将在此处参考node.js
样本,类似的概念将适用于其他概念。因此,当您得到响应时(请勿使用Promise版本)将其传递给回调,就像此处所述,而不是
operation
.on('error', function(err) {})
.on('complete', function(transcript) {
// transcript = "how old is the Brooklyn Bridge"
});
只是做
之类的事情console.log(operation)
记下操作名称,然后在使用操作方法
时使用您可以在Google Oauth Playground上进行测试
对于其他任何问题,Google现在通过删除超时值修复了此错误。请参阅https://github.com/googleapis/gax-nodejs/pull/140/files我的语音API请求现在在更新到最新的Google-Gax NPM软件包后成功工作。
我找不到将超时设置为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分钟。
如果有人知道一种更好的处理方法,请分享。希望它有帮助。