语音识别代码运行失败,ConnectionResetError错误如何修复?
解决Speech Recognition的ConnectionResetError(WinError 10054)问题
问题复现
运行以下语音转文本代码时,在listener.recognize_google(voice)行抛出连接错误:
import speech_recognition as sr listener = sr.Recognizer() with sr.Microphone() as source: print('listening...') voice = listener.listen(source) print("working") command = listener.recognize_google(voice) #this is the line causing error print("working") print(command)
错误信息:ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
已知背景:代码在其他电脑可正常运行,已尝试关闭防火墙、修改服务器参数,耗时超6小时仍未解决。
排查与修复步骤
检查本地代理设置
残留或自动开启的代理配置常导致这类连接问题:- 打开Windows设置→网络和Internet→代理,确认所有代理选项处于关闭状态
- 命令行执行
netsh winhttp reset proxy重置WinHTTP代理 - 重启Python解释器或IDE后重新测试
验证DNS解析与切换
若DNS解析异常会导致无法正常连接Google服务:- 命令行执行
ping google.com,检查是否能正常解析并连通 - 若解析失败,切换公共DNS(如114.114.114.114或8.8.8.8):右键网络连接→属性→Internet协议版本4→手动指定DNS服务器地址,重启网络后测试
- 命令行执行
调整SSL/TLS配置
SSL握手失败可能触发远程服务器主动关闭连接,可在代码中指定SSL上下文:import ssl # 保留原有代码,修改recognize_google调用 ssl_context = ssl.create_default_context() command = listener.recognize_google(voice, ssl_context=ssl_context)或强制使用TLSv1.2:
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2) command = listener.recognize_google(voice, ssl_context=ssl_context)重置Windows网络栈
网络配置损坏可能引发此类问题,执行以下命令后重启电脑:netsh int ip reset netsh winsock reset排查第三方安全软件
除系统防火墙外,杀毒软件、安全卫士可能拦截Python的网络请求:暂时完全关闭这类软件,测试代码是否正常。若恢复正常,需在安全软件中添加Python程序或Speech Recognition库的网络访问白名单。
内容的提问来源于stack exchange,提问作者Sami gul
相关产品推荐
相关产品推荐

