Google语音APIPython异常:指定FLAC编码匹配文件头?
Google Speech API Python Exception: Specify FLAC encoding to match file header?
我 运行 Google 演讲的示例代码 API Python 发布于此:https://googlecloudplatform.github.io/google-cloud-python/stable/speech-usage.html
我要使用异步识别方法(只允许使用 LINEAR16 编码):
导入 Google 云客户端库
from google.cloud import speech
client = speech.Client()
sample = client.sample(source_uri='gs://my-bucket/example.flac',
encoding=speech.Encoding.LINEAR16,
sample_rate=44100)
operation = sample.async_recognize(language_code='es-CL',max_alternatives=2)
retry_count = 100
while retry_count > 0 and not operation.complete:
retry_count -= 1
time.sleep(10)
operation.poll() # API call
operation.complete
for result in operation.results:
for alternative in result.alternatives:
print('=' * 20)
print(alternative.transcript)
print(alternative.confidence)
这是我遇到的错误:
google.gax.errors.RetryError:GaxError(异常发生在未归类为瞬态的重试方法中,由终止于(StatusCode.INVALID_ARGUMENT 的 RPC 的<_Rendezvous,指定 FLAC 编码以匹配文件头。)>)
我该如何解决这个问题?我在使用同步方法时没有遇到这个问题。
从您的代码(以及您链接到的 Google 代码)看来您将编码指定为 LINEAR16 但使用的是 FLAC 文件。如果您需要使用异步 API,那么您必须将 .flac
文件转换为原始 LINEAR PCM 文件。所以第二行应该看起来更像这样:
sample = client.sample(source_uri='gs://my-bucket/example.raw',
encoding=speech.Encoding.LINEAR16,
sample_rate=44100)
要从 FLAC 转换为 LINEAR16,您需要使用其他工具,例如 sox
。
有关转换文件格式的更多信息,请参阅 this page。该命令可能类似于:
sox example.flac example.raw
我 运行 Google 演讲的示例代码 API Python 发布于此:https://googlecloudplatform.github.io/google-cloud-python/stable/speech-usage.html
我要使用异步识别方法(只允许使用 LINEAR16 编码):
导入 Google 云客户端库
from google.cloud import speech
client = speech.Client()
sample = client.sample(source_uri='gs://my-bucket/example.flac',
encoding=speech.Encoding.LINEAR16,
sample_rate=44100)
operation = sample.async_recognize(language_code='es-CL',max_alternatives=2)
retry_count = 100
while retry_count > 0 and not operation.complete:
retry_count -= 1
time.sleep(10)
operation.poll() # API call
operation.complete
for result in operation.results:
for alternative in result.alternatives:
print('=' * 20)
print(alternative.transcript)
print(alternative.confidence)
这是我遇到的错误: google.gax.errors.RetryError:GaxError(异常发生在未归类为瞬态的重试方法中,由终止于(StatusCode.INVALID_ARGUMENT 的 RPC 的<_Rendezvous,指定 FLAC 编码以匹配文件头。)>)
我该如何解决这个问题?我在使用同步方法时没有遇到这个问题。
从您的代码(以及您链接到的 Google 代码)看来您将编码指定为 LINEAR16 但使用的是 FLAC 文件。如果您需要使用异步 API,那么您必须将 .flac
文件转换为原始 LINEAR PCM 文件。所以第二行应该看起来更像这样:
sample = client.sample(source_uri='gs://my-bucket/example.raw',
encoding=speech.Encoding.LINEAR16,
sample_rate=44100)
要从 FLAC 转换为 LINEAR16,您需要使用其他工具,例如 sox
。
有关转换文件格式的更多信息,请参阅 this page。该命令可能类似于:
sox example.flac example.raw