【问题标题】:audio file isn't being parsed with Google Speech未使用 Google Speech 解析音频文件
【发布时间】:2017-04-22 05:42:17
【问题描述】:

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

下面代码的 sn-p 几乎可以工作...它运行没有错误,但返回 results_listNone 值。这意味着它正在访问该文件(我认为)但无法从中提取任何内容。

我有一个档案,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')

【问题讨论】:

  • 请注意,由于音频文件时长为 15 分钟,因此仅几秒钟就无法正确处理。至少需要几分钟才能完成。
  • 说得好……有可能是我不耐烦了。

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


【解决方案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,它会在处理结果时不断地向您发送结果。这对于需要立即获得结果的长文件或持续上传实时音频非常有用。

【讨论】:

  • 嗯...我尝试了所有 3 种风格的脚本,但没有返回任何内容。不过我会在星期一再试一次。谢谢!!
  • 由于音频文件长达 15 分钟,唯一可以使用的 API 是异步 API,因为 usage limits
【解决方案2】:

我终于有事干了:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多