我正在使用Google Speech to Text API转换音频文件。问题是,在谷歌语音到文本,我们必须等待操作完成,即使我们让它异步,因为它的文档说通过使用long_running_recognize()。
有没有办法让它完全异步?因此,当我们上传音频文件时,它会给我们一个operation_id,我们可以使用它在任何时候异步下载转录。
发布于 2020-06-26 23:09:51
这很奇怪,答案是肯定的,但直接回答是否定的。
当从任何客户端库发送异步请求时,您将收到一个Operation object,其中包含两个重要元素:
在您的实现中,您可以使用long_running_recognize发送请求,获取名称,然后使用以下命令返回查询该名称:
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
"https://speech.googleapis.com/v1/operations/your-operation-name"这是来自docs的关于如何转录长音频的文章。即使它还没有完成,您也应该收到它的答复。
看看this Github issue,其中用户的代码从代码本身到达超时,这使他们认为请求没有完成,而是,他们能够在达到超时后检索数据。
Github的问题告诉了我们什么?即使脚本到达等待响应的超时时间,该请求仍由Speech to text服务处理。我不确定停止脚本是否会使实际的语音到文本请求保持运行,但我可以想到以下几点:
在后台进程或类似线程的implementation.中运行
您可以使用前面提到的方法来检索数据,或者使用另一个脚本来读取数据,只需在需要的时候传递Operation Name即可。通过这些步骤,我们可以模拟对服务的异步调用。
希望这对您有帮助!:)
https://stackoverflow.com/questions/62570954
复制相似问题