Google Cloud Speech API - 证书验证在Python中失败

时间:2018-05-15 12:46:49

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

我正在使用SpeechRecognition库。

import speech_recognition as sr

AUDIO_FILE = 'test_audio.wav'

with open("api-key.json") as f:
    GOOGLE_CLOUD_SPEECH_CREDENTIALS = f.read()

r = sr.Recognizer()
with sr.AudioFile(AUDIO_FILE) as source:
        audio = r.record(source)

print('Starting recognition...')
print(r.recognize_google_cloud(audio, credentials_json=GOOGLE_CLOUD_SPEECH_CREDENTIALS))
print('Completed')

运行上述代码时,会发生错误 -

  

ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证   失败了(_ssl.c:777)

音频文件和api-key文件已就位。

1 个答案:

答案 0 :(得分:1)

我通过直接在python中编辑Google语音客户端库的代码来设法通过代理进行消费。具体来说,我在以下位置编辑了文件(您的情况可能有所不同):

lib/python3.6/site-packages/google/auth/transport/requests.py

Request类,方法 call ,有一行像这样:

response = self.session.request(method, url, data=body, headers=headers, timeout=timeout)

我向该调用添加了参数verify = False,它将仅忽略SSL证书验证。但是,不建议这样做,因为这会引起安全问题。如果代理中恰好有CA的证书,则将cert = / False替换为cert =“ / local / address / to / ca /​​ cert”。这是我的工作方式:

 response = self.session.request(method, url, data=body, headers=headers, timeout=timeout,verify=False,**kwargs)