python - 稍后如何获取长时间运行的 Google Cloud Speech API 操作的结果?

标签 python google-cloud-speech

下面是调用 Google Cloud Speech API 长时间运行操作以将音频文件转换为文本的片段

from google.cloud import speech
speech_client = speech.Client()

audio_sample = speech_client.sample(
    content=None,
    source_uri=gcs_uri,
    encoding='FLAC',
    sample_rate_hertz=44100)

operation = audio_sample.long_running_recognize('en-US')

retry_count = 100
while retry_count > 0 and not operation.complete:
    retry_count -= 1
    time.sleep(60)
    operation.poll()

但是,由于这是一个长时间运行的操作,可能需要一段时间,理想情况下我不想在等待期间保持 session 。是否可以存储一些信息并在以后检索结果?

最佳答案

如另一个答案中所述,您可以在主线程继续运行时使用单独的线程来轮询操作。或者,您可以将返回的操作的 operation.name 传递给单独的服务,并让其他服务处理轮询。例如,在实践中,调用长时间运行操作的服务可以将 operation.name 发布到 Pub/Sub 主题。

下面是一种通过名称查找来检索长时间运行的操作的可能方法:

from oauth2client.client import GoogleCredentials
from googleapiclient import discovery

credentials = GoogleCredentials.get_application_default()
speech_service = discovery.build('speech', 'v1', credentials=credentials)

operation_name = .... # operation.name

get_operation_request = speech_service.operations().get(name=operation_name)

# response is a dictionary
response = get_operation_response.execute()

# handle polling
retry_count = 100
while retry_count > 0 and not response.get('done', False):
    retry_count -= 1
    time.sleep(60)
    response = get_operation_response.execute()

操作完成后,response 字典可能如下所示:

{u'done': True,
 u'metadata': {u'@type': u'type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata',
  u'lastUpdateTime': u'2017-06-21T19:38:14.522280Z',
  u'progressPercent': 100,
  u'startTime': u'2017-06-21T19:38:13.599009Z'},
 u'name': u'...................',
 u'response': {u'@type': u'type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse',
  u'results': [{u'alternatives': [{u'confidence': 0.987629,
      u'transcript': u'how old is the Brooklyn Bridge'}]}]}}

关于python - 稍后如何获取长时间运行的 Google Cloud Speech API 操作的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43945114/

相关文章:

python - Python OpenCV从黑白蒙版检测圆圈

java - Google-Cloud-Speech:StreamingRecognize 方法的第一个临时结果中的延迟

ios - 从 Google speech api 获取 "transcript"值

android - ibm watson 和 google cloud speech to text api 是否有可能合并?

python - 触发事件和执行实际事件的更好逻辑?

python - 3D SparseTensor 矩阵乘以 2D Tensor :InvalidArgumentError: Tensor 'a_shape' must have 2 elements [Op:SparseTensorDenseMatMul]

python - 在二维 numpy 数组中查找公共(public)元素

Python SpeechRecognition 与 Google Cloud Speech API

google-cloud-speech - 云语音 API 错误 : RecognitionAudio not set

python - 单击站点上的 Selenium 返回到类似状态和陈旧错误