这个问题是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')
答案 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