Google Cloud Speech API python 代码示例可能存在错误
Google Cloud Speech API python code sample has possible bug
我正在研究 Google 演讲 API、found here 中提供的代码片段。该代码应该足以将 .wav 文件转换为转录文本。
感兴趣的区块在这里:
def transcribe_file(speech_file):
"""Transcribe the given audio file."""
from google.cloud import speech
speech_client = speech.Client()
with io.open(speech_file, 'rb') as audio_file:
content = audio_file.read()
audio_sample = speech_client.sample(
content=content,
source_uri=None,
encoding='LINEAR16',
sample_rate_hertz=16000)
alternatives = audio_sample.recognize('en-US')
for alternative in alternatives:
print('Transcript: {}'.format(alternative.transcript))
首先,我想可能是代码太旧了,sample_rate_hertz=16000
不得不改成sample_rate=16000
。
在那之后,我得到了这一行的错误:
alternatives = audio_sample.recognize('en-US')
上面写着
AttributeError: 'Sample' object has no attribute 'recognize'
我很好奇如何纠正这个问题。我似乎找不到有关此方法的任何文档。也许它也需要更换。
您使用了 github quickstart.py 示例,所以我怀疑它与文档 Google Cloud Speech API class sample 不同步。但它仍然是 BETA。
假设 isinstance(audio_sample, <class Sample(object)>) == True
,
然后 .recognize
在你的
alternatives = audio_sample.recognize('en-US')
应该是
之一
async_recognize, streaming_recognize, sync_recognize
您需要将文件读取为二进制文件,然后将 service.speech().syncrecognize
与 body 参数(dict)一起使用,其中包含所有必需的参数,如 :
- 编码,
- 采样率
- 语言)
你可以试试这样的东西吗:
with open(speech_file, 'rb') as speech:
speech_content = base64.b64encode(speech.read())
service = get_speech_service()
service_request = service.speech().syncrecognize(
body={
'config': {
'encoding': 'LINEAR16', # raw 16-bit signed LE samples
'sampleRate': 16000, # 16 khz
'languageCode': 'en-US', # a BCP-47 language tag
},
'audio': {
'content': speech_content.decode('UTF-8')
}
})
response = service_request.execute()
print(json.dumps(response))
请看看,因为有一个类似的工作示例。
我正在研究 Google 演讲 API、found here 中提供的代码片段。该代码应该足以将 .wav 文件转换为转录文本。
感兴趣的区块在这里:
def transcribe_file(speech_file):
"""Transcribe the given audio file."""
from google.cloud import speech
speech_client = speech.Client()
with io.open(speech_file, 'rb') as audio_file:
content = audio_file.read()
audio_sample = speech_client.sample(
content=content,
source_uri=None,
encoding='LINEAR16',
sample_rate_hertz=16000)
alternatives = audio_sample.recognize('en-US')
for alternative in alternatives:
print('Transcript: {}'.format(alternative.transcript))
首先,我想可能是代码太旧了,sample_rate_hertz=16000
不得不改成sample_rate=16000
。
在那之后,我得到了这一行的错误:
alternatives = audio_sample.recognize('en-US')
上面写着
AttributeError: 'Sample' object has no attribute 'recognize'
我很好奇如何纠正这个问题。我似乎找不到有关此方法的任何文档。也许它也需要更换。
您使用了 github quickstart.py 示例,所以我怀疑它与文档 Google Cloud Speech API class sample 不同步。但它仍然是 BETA。
假设 isinstance(audio_sample, <class Sample(object)>) == True
,
然后 .recognize
在你的
alternatives = audio_sample.recognize('en-US')
应该是
之一async_recognize, streaming_recognize, sync_recognize
您需要将文件读取为二进制文件,然后将 service.speech().syncrecognize
与 body 参数(dict)一起使用,其中包含所有必需的参数,如 :
- 编码,
- 采样率
- 语言)
你可以试试这样的东西吗:
with open(speech_file, 'rb') as speech:
speech_content = base64.b64encode(speech.read())
service = get_speech_service()
service_request = service.speech().syncrecognize(
body={
'config': {
'encoding': 'LINEAR16', # raw 16-bit signed LE samples
'sampleRate': 16000, # 16 khz
'languageCode': 'en-US', # a BCP-47 language tag
},
'audio': {
'content': speech_content.decode('UTF-8')
}
})
response = service_request.execute()
print(json.dumps(response))
请看看