modelscope-funasr这是什么原因?(base) ubuntu@ubun:~/WFJ/FunASR/python$ python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav"
Namespace(host='127.0.0.1', port=10095, chunk_size=[5, 10, 5], chunk_interval=10, hotword='', audio_in='../audio/asr_example.wav', audio_fs=16000, send_without_sleep=True, thread_num=1, words_max_print=10000, output_dir=None, ssl=1, use_itn=1, mode='offline')
/home/ubuntu/WFJ/FunASR/python/funasr_wss_client.py:318: DeprecationWarning: ssl.SSLContext() without protocol argument is deprecated.
ssl_context = ssl.SSLContext()
/home/ubuntu/WFJ/FunASR/python/funasr_wss_client.py:318: DeprecationWarning: ssl.PROTOCOL_TLS is deprecated
ssl_context = ssl.SSLContext()
connect to wss://127.0.0.1:10095
Process Process-1:
Traceback (most recent call last):
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
self.run()
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/multiprocessing/process.py", line 108, in run
self._target(self._args, *self._kwargs)
File "/home/ubuntu/WFJ/FunASR/python/funasr_wss_client.py", line 337, in one_thread
asyncio.get_event_loop().run_until_complete(ws_client(id, chunk_begin, chunk_size))
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/home/ubuntu/WFJ/FunASR/python/funasr_wss_client.py", line 326, in ws_client
async with websockets.connect(uri, subprotocols=["binary"], ping_interval=None, ssl=ssl_context) as websocket:
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/site-packages/websockets/legacy/client.py", line 629, in aenter
return await self
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/site-packages/websockets/legacy/client.py", line 647, in await_impl_timeout
return await self.await_impl()
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/site-packages/websockets/legacy/client.py", line 651, in await_impl
_transport, _protocol = await self._create_connection()
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/asyncio/base_events.py", line 1103, in create_connection
transport, protocol = await self._create_connection_transport(
File "/home/ubuntu/.pyenv/versions/3.10.12/lib/python3.10/asyncio/base_events.py", line 1133, in _create_connection_transport
await waiter
ConnectionResetError
end
根据您提供的错误信息和知识库中的相关资料,以下是问题的详细分析和解决方案:
错误描述
您在运行 funasr_wss_client.py
脚本时遇到了以下问题:
ssl.SSLContext()
和 ssl.PROTOCOL_TLS
已被弃用。可能原因
根据错误日志和知识库内容,可以推测以下几点:
ssl.SSLContext()
),这可能导致与 WebSocket 服务器的连接失败。wss://127.0.0.1:10095
可能没有正确启动 WebSocket 服务,或者服务端未启用 SSL 支持。websockets
或其他依赖库的版本可能与当前代码不兼容。由于 ssl.SSLContext()
和 ssl.PROTOCOL_TLS
已被弃用,建议更新代码以使用最新的 SSL 配置方式。修改 funasr_wss_client.py
中的相关代码如下:
import ssl
# 使用推荐的 SSL 配置
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ssl_context.load_default_certs()
如果目标 WebSocket 服务不需要 SSL 加密,可以直接禁用 SSL:
ssl_context = None
确保目标地址 wss://127.0.0.1:10095
的 WebSocket 服务已正确启动,并支持 SSL 连接。可以通过以下步骤验证:
确认服务是否运行
在终端中运行以下命令,检查是否有进程监听 10095
端口:
netstat -tuln | grep 10095
如果没有输出,说明服务未启动。
手动测试 WebSocket 连接
使用 websocat
工具测试 WebSocket 连接:
websocat wss://127.0.0.1:10095
如果连接失败,请检查服务端日志以定位问题。
检查服务端 SSL 配置
如果服务端启用了 SSL,请确保其证书配置正确,并且客户端信任该证书。
确保所有依赖库为最新版本,特别是 websockets
和 asyncio
。运行以下命令更新依赖:
pip install --upgrade websockets asyncio
如果上述步骤仍无法解决问题,可以通过以下方式进一步调试:
增加日志输出
在 funasr_wss_client.py
中添加更多日志,记录连接过程中的详细信息。例如:
import logging
logging.basicConfig(level=logging.DEBUG)
捕获异常并打印详细信息
修改代码以捕获异常并打印堆栈信息:
try:
async with websockets.connect(uri, subprotocols=["binary"], ping_interval=None, ssl=ssl_context) as websocket:
# 处理 WebSocket 通信
pass
except Exception as e:
import traceback
traceback.print_exc()
ssl_context = None
)。通过以上步骤,您应该能够解决 funasr_wss_client.py
脚本运行时的错误。如果仍有问题,请提供更多上下文信息(如服务端配置或完整日志),以便进一步分析。您可以复制页面截图提供更多信息,我可以进一步帮您分析问题原因。