为什么enable_automatic_punctuation = true在python 3中给出错误

时间:2018-04-30 07:55:29

标签: python python-3.x google-speech-api

我希望从google-speech-api获得带有标点符号的单词成绩单。我正在使用python 3和

当我运行我的代码时出现此错误,这是与

完全相同的代码示例

https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/speech/cloud-client/beta_snippets.py

我收到错误

"ValueError: Protocol message RecognitionConfig has no "enableAutomaticPunctuation" field. “。

我能做些什么来克服这一点。

def transcribe_file_with_auto_punctuation(path):
    client = speech.SpeechClient()

with io.open(path, 'rb') as audio_file:
    content = audio_file.read()
    audio = speech.types.RecognitionAudio(content=content)
    config = speech.types.RecognitionConfig(
    enableAutomaticPunctuation=True,
    encoding= speech.enums.RecognitionConfig.AudioEncoding.LINEAR16,
    languageCode= 'en-US',
    model= 'default')

response = client.recognize(config, audio)

for i, result in enumerate(response.results):
    alternative = result.alternatives[0]
    print('-' * 20)
    print('First alternative of result {}'.format(i))
    print('Transcript: {}'.format(alternative.transcript))

1 个答案:

答案 0 :(得分:0)

Python API使用snake_case约定命名所有选项(使用下划线连接的小写单词),因此您想要的选项称为enable_automatic_punctuation。请注意,这同样适用于language_code option

config = speech.types.RecognitionConfig(
    enable_automatic_punctuation=True,
    encoding=speech.enums.RecognitionConfig.AudioEncoding.LINEAR16,
    language_code='en-US',
    model='default')

您链接的示例确实使用了snake_case名称。

请注意,自动标点符号是API的较新v1p1beta1 release中的新功能,因此请确保导入正确的类。来自API Reference section

  

提供了一个新的测试版,拼写为v1p1beta1,用于预览即将推出的功能。要使用此功能,您需要从google.cloud.speech_v1p1beta1导入以代替google.cloud.speech

此功能可能在将来从免费API中删除。正如enableAutomaticPunctuation状态的v1p1beta1文档:

  

目前作为实验服务提供,免费提供给所有用户。在未来,这可能仅作为高级功能提供。