我希望能够一次运行多个并发的长识别作业,因此我编写了以下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'
。我认为我在客户机对象中嵌套属性的方式上缺少了一些显而易见的东西,但是我只是想不通。
答案 0 :(得分:0)
意识到我需要在其他地方使用import pdb; pdb.set_trace()
来确定Google实际返回给我的东西。原来我是对的,还有一些我不知道的额外嵌套。 print(u'Transcript: {}'.format(result._result.results[0].alternatives[0].transcript))
做到了。