为什么我无法访问 Google 语音请求的结果?

Why can't I access the results of a Google Speech request?

我希望能够同时运行几个并发的长识别作业,所以我写了下面的Python代码。

client = speech.SpeechClient()
config = types.RecognitionConfig(
    encoding=enums.RecognitionConfig.AudioEncoding.FLAC,
    language_code='en-US')
audio = {"Brooklyn": types.RecognitionAudio(uri='gs://cloud-samples-tests/speech/brooklyn.flac')}
jobs = {}
output = {}

for name, job in audio.items():
  jobs[name] = client.long_running_recognize(config, job)

while len(jobs) > 0:
  time.sleep(5)
  for name, job in jobs.items():
    if job.done() == False:
      print(name + ' progress: ' + str(job.metadata.progress_percent))
    else:
      print(name + ' is done!')
      output[name] = job
      jobs.pop(name)

for name, result in output.items():
  print(u'Transcript: {}'.format(result.alternatives[0].transcript))
  print('Confidence: {}'.format(result.alternatives[0].confidence))

它 运行 没问题,但是当尝试在倒数第二行打印成绩单结果时,出现错误 AttributeError: 'Operation' object has no attribute 'alternatives'。我想我在属性嵌套在客户端对象中的方式中遗漏了一些相当明显的东西,但我就是想不通。

意识到我需要在 else 中使用 import pdb; pdb.set_trace() 来弄清楚 Google 实际上返回给我的是什么。事实证明我是对的,有一些我不知道的额外嵌套。 print(u'Transcript: {}'.format(result._result.results[0].alternatives[0].transcript)) 成功了。