从google.cloud.speech_v1导入enums失败,请求技术排查
解决Google Cloud Speech-to-Text API的
enums导入错误 你的问题出在新版本的Google Cloud Speech-to-Text v1客户端库已经不再单独导出enums模块,原来的枚举类型已经被整合到对应的配置类中,不需要再单独导入enums。
修正步骤
- 删掉所有和
enums导入相关的代码:- 移除
from google.cloud.speech_v1 import enums - 移除
enums = importlib.import_module("google.cloud.speech_v1.enums")这行
- 移除
- 修改
RecognitionConfig里的encoding参数,有两种可行方式:
方法一:直接使用类内置的枚举
直接通过speech_v1.RecognitionConfig.AudioEncoding访问枚举值,代码如下:
from google.cloud import speech_v1 import os # 设置Google Cloud服务账号凭据 os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "creds.json" # 创建Speech-to-Text客户端 stt_client = speech_v1.SpeechClient() # 音频转写请求 response = stt_client.recognize( audio=speech_v1.types.RecognitionAudio(uri="gs://focus-0/speech-to-text-sample.wav"), config=speech_v1.types.RecognitionConfig( encoding=speech_v1.RecognitionConfig.AudioEncoding.FLAC, sample_rate_hertz=48000, language_code="en-US" ) ) # 输出转写结果 for result in response.results: print("Transcription: {}".format(result.alternatives[0].transcript))
方法二:直接使用字符串常量
API支持直接传入枚举对应的字符串值,代码更简洁:
from google.cloud import speech_v1 import os # 设置Google Cloud服务账号凭据 os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "creds.json" # 创建Speech-to-Text客户端 stt_client = speech_v1.SpeechClient() # 音频转写请求 response = stt_client.recognize( audio=speech_v1.types.RecognitionAudio(uri="gs://focus-0/speech-to-text-sample.wav"), config=speech_v1.types.RecognitionConfig( encoding="FLAC", sample_rate_hertz=48000, language_code="en-US" ) ) # 输出转写结果 for result in response.results: print("Transcription: {}".format(result.alternatives[0].transcript))
补充说明
Google Cloud的Python客户端库在版本迭代中,逐步将枚举类型从单独的enums模块迁移到了对应的服务类内部,这样更符合Python的类设计规范,也避免了模块导入混乱。你之前的导入方式是旧版本库的用法,现在已经不再适用。
内容的提问来源于stack exchange,提问作者reallymemorable
相关产品推荐
相关产品推荐

