Google云语音API python代码示例有可能存在bug

2024-09-30 01:27:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究googlespeechapifound 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'

我很好奇如何纠正这一点。我似乎找不到任何关于这种方法的文档。也许它也需要更换。在


Tags: sample代码clientratecontentaudiospeechfile
2条回答

你用的是github快速入门.py例如,我想知道这与文档Google Cloud Speech API class sample不同步。但它仍然是BETA。在

假设isinstance(audio_sample, <class Sample(object)>) == True
然后.recognize

alternatives = audio_sample.recognize('en-US')

应该是

^{pr2}$

您需要将文件读取为二进制文件,然后将service.speech().syncrecognize正文参数(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))

请看一下here,因为有一个类似的工作示例。在

相关问题 更多 >

    热门问题