【问题标题】:How make Google Speech to Text API Async如何使 Google Speech to Text API 异步
【发布时间】:2020-06-25 08:20:37
【问题描述】:
我正在使用 Google Speech to Text API 来转换音频文件。问题在于,在 Google Speech to text 中,即使我们使用 long_running_recognize() 将其设为异步,我们也必须等待操作完成。
有没有办法让它完全异步?这样当我们上传音频文件时,它会为我们提供一个 operation_id,我们可以使用它随时异步下载转录。
【问题讨论】:
标签:
python
google-cloud-platform
google-api
speech-to-text
google-speech-to-text-api
【解决方案1】:
这很好奇,答案是肯定的,但直接否定。
从任何客户端库发送异步请求时,您将收到一个 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 服务处理。我不确定停止脚本是否会保持对 Speech to Text 的实际请求运行,但我可以想到以下几点:
您可以使用上述方法来检索数据或使用另一个脚本来读取数据,只需在需要时传递操作名称即可。通过这些步骤,我们可以模拟对服务的异步调用。
希望这有帮助! :)