0

我正在使用 Google Speech to Text API 来转换音频文件。问题是,在 Google Speech to text 中,我们必须等待操作完成,即使我们使用long_running_recognize().

有没有办法让它完全异步?因此,当我们上传音频文件时,它会为我们提供一个 operation_id,我们可以使用它随时异步下载转录。

4

1 回答 1

0

这很奇怪,答案是肯定的,但直接否定。

从任何客户端库发送异步请求时,您将收到一个包含两个重要元素的操作对象:

  • 姓名。这将是已发送请求的标识符。

  • 完毕。这是告诉我们请求是否完成的布尔值。

在您的实现中,您可以使用 发送请求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"

这个来自关于如何转录长音频的文档。即使它尚未完成,您也应该收到它的答复。

看看这个 Github 问题,其中用户的代码从代码本身达到了超时,这让他们认为请求尚未完成,但他们能够在达到超时后检索数据。

Github问题告诉我们什么?即使脚本等待响应超时,该请求仍由 Speech to text 服务处理。我不确定停止脚本是否会保持对 Speech to Text 的实际请求运行,但我可以想到以下几点:

  • 让您的脚本在后台进程或类似线程的实现中运行。

  • 您可以从中删除成绩单打印件,因为您想稍后查看此数据。

  • 确保打印您的操作名称并保存以备后用。

您可以使用上述方法来检索数据或使用另一个脚本来读取数据,只需在需要时传递操作名称即可。通过这些步骤,我们可以模拟对服务的异步调用。

希望这有帮助!:)

于 2020-06-26T15:09:51.060 回答