音频文件未经Google语音解析

时间:2017-04-22 05:42:18

标签: audio google-cloud-platform google-speech-api

这个问题是previous question的后续问题。

以下代码片段几乎可以正常运行...它运行时没有错误,但为None提供了results_list值。这意味着它正在访问该文件(我认为),但却无法从中提取任何内容。

我有一个文件sample.wav,在这里公开生活:https://storage.googleapis.com/speech_proj_files/sample.wav

我正在尝试通过指定source_uri='gs://speech_proj_files/sample.wav'来访问它。

我不明白为什么这不起作用。我不认为这是一个权限问题。我的会话被实例化很好。代码突然响了一秒,但总是没有结果。我怎么调试这个?任何建议都非常感谢。

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

audio_sample = speech_client.sample(
    content=None,
    source_uri='gs://speech_proj_files/sample.wav',
    encoding='LINEAR16',
    sample_rate_hertz= 44100)
results_list = audio_sample.async_recognize(language_code='en-US')

2 个答案:

答案 0 :(得分:1)

啊,这是我上一个问题的错。那是async_recognize命令,而不是sync_recognize命令。

该库有三个识别命令。 sync_recognize读取整个文件并返回结果。那可能就是你想要的那个。删除字母“a”,然后重试。

以下是执行此操作的示例Python程序:https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/cloud-client/transcribe.py

仅供参考,以下是其他类型的摘要:

async_recognize启动一个长时间运行的服务器端操作来翻译整个文件。您可以进一步调用服务器以查看是否已使用operation.poll()方法完成,并在完成后通过operation.results获取结果。

第三种类型是streaming_recognize,它会在处理结果时不断向您发送结果。这对于您希望立即获得某些结果的长文件,或者您不断上传实时音频非常有用。

答案 1 :(得分:1)

我终于得到了一些工作:

import time

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


sample = speech_client.sample(
      content = None
    , 'gs://speech_proj_files/sample.wav'
    , encoding='LINEAR16'
    , sample_rate= 44100
    , 'languageCode': 'en-US'
)

retry_count = 100

operation = sample.async_recognize(language_code='en-US')

while retry_count > 0 and not operation.complete:
    retry_count -= 1
    time.sleep(10)
    operation.poll()  # API call

print(operation.complete)

print(operation.results[0].transcript)

print(operation.results[0].confidence)

for op in operation.results:
    print op.transcript

然后像

for op in operation.results:
    print op.transcript