1

您好,我尝试运行以下示例:

麦克风语音转文本

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

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

输入 CTRL+C 结束录制...
收到错误:SSL 不可用。
连接关闭

我在我的 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 得到正确的结果,然后是:

收到错误:SSL 不可用。

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

谢谢

4

2 回答 2

2

我可以通过以下方式摆脱“SSL 不可用”错误

pip install backports.ssl-match-hostname

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

这里还提到websocket_client取决于backports.ssl-match-hostnamePython 2.x

安装软件包后,我得到:

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

这可以通过在处理之前调用来临时disable_SSL_verification()修复SpeechToTextV1

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

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

os.environ['WEBSOCKET_CLIENT_CA_BUNDLE'] = '/etc/ssl/certs/ca-certificates.crt'
于 2019-03-28T09:02:08.257 回答
0

如果我冒险猜测,那是您的 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 应用程序有更好的运气。

于 2019-03-27T15:06:27.357 回答