SSL 在 watson-developer-cloud 示例 microphone-speech-to-text.py 中不可用

SSL not available in watson-developer-cloud example microphone-speech-to-text.py

你好我试着得到下面的例子运行ning:

microphone-speech-to-text

我 运行 这个 python 脚本在 Gentoo Linux 设备上 Python 2.7.6。 该设备已通过我手机上的移动热点连接到互联网 phone。

不幸的是它不起作用并得到以下输出:

Enter CTRL+C to end recording...
Error received: SSL not available.
Connection closed

我 运行 我 windows 上的脚本,它运行良好。

已安装 SSL 库:

ldconfig -p | grep ssl
vocon_ssl.so (libc6) => /opt/aldebaran/lib/vocon_ssl.so
libssl.so.1.0.0 (libc6) => /usr/lib/libssl.so.1.0.0
libssl.so (libc6) => /usr/lib/libssl.so
libgnutls-openssl.so.27 (libc6) => /usr/lib/libgnutls-openssl.so.27
libgnutls-openssl.so (libc6) => /usr/lib/libgnutls-openssl.so
libevent_openssl-2.0.so.5 (libc6) => /usr/lib/libevent_openssl-2.0.so.5

如果我运行另一个例子(speech_to_text_v1) 我从 watson 得到正确的结果,然后是:

Error received: SSL not available.

有人知道这里的问题是什么吗?

谢谢

如果我敢猜测,那是您的 Gentoo Linux 设备没有设置适当的 TLS / SSL 库。作为测试 运行,根据 API 文档 - https://cloud.ibm.com/apidocs/speech-to-text#list-models

,列表模型通过您设备上的 cURL 请求
curl -X GET -u "apikey:{apikey}" "https://stream.watsonplatform.net/speech-to-text/api/v1/models"

这是通过 TLS 进行的,所以,如果你能让它工作,你可能会更幸运地使用 python 应用程序。

我可以通过

消除 "SSL not available" 错误
pip install backports.ssl-match-hostname

我从 here 那里得到了这个提示。

还提到 here websocket_client 依赖于 backports.ssl-match-hostname for Python 2.x

安装包后我得到:

Error received: _ssl.c:334: No root certificates specified for verification of other-side certificates.

这可以通过在处理之前调用 SpeechToTextV1disable_SSL_verification() 来临时解决。

要长期修复它,一种方法是将 websocket-client 库降级到 0.47.0 link1 link2

另一种消除“No root certificates specified”错误的方法是设置由 websocket 库检查的环境变量 WEBSOCKET_CLIENT_CA_BUNDLE。 例如

os.environ['WEBSOCKET_CLIENT_CA_BUNDLE'] = '/etc/ssl/certs/ca-certificates.crt'