FunASR
FunASR copied to clipboard
报错 websocketpp.processor:4 (A message was too large)
🐛 Bug
To Reproduce
Steps to reproduce the behavior (always include the command you ran):
- Run cmd '....' 我通过websocket 上传文件大小为106mb,时长为57分钟,我已经使用vad模型。我收到了报错信息: [error] consume error: websocketpp.processor:4 (A message was too large)
- See error
Code sample
Expected behavior
Environment
docoker 部署包registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.4 1,调用方式为html5,在这个网站上把https://www.funasr.com/static/offline/index.html 中的asr服务器地址改成我本地部署的地址。 2,使用这个官网示例,也是同样的报错。https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/csharp/ws-client/FunASRWSClient_Offline/WebScoketClient.cs
测试文件为链接: https://pan.baidu.com/s/1QNNNyAR1aPDhfhZP_0pjTg?pwd=zj3q 提取码: zj3q
Additional context
与这里描述的差距好大,可直接对时长为数小时音频进行识别 Paraformer-large长音频模型集成VAD、ASR、标点与时间戳功能,可直接对时长为数小时音频进行识别,并输出带标点文字与时间戳: ASR模型:Parformer-large模型结构为非自回归语音识别模型,多个中文公开数据集上取得SOTA效果,可快速地基于ModelScope对模型进行微调定制和推理。
直接在这上传文件,网盘我打不开
https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/csharp/ws-client/FunASRWSClient_Offline/WebScoketClient.cs
这个也不行,这个不是官方的demo吗,还有h5 https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/csharp/ws-client/FunASRWSClient_Offline/WebScoketClient.cs
https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/csharp/ws-client/FunASRWSClient_Offline/WebScoketClient.cs
这个也不行,这个不是官方的demo吗,还有h5 https://github.com/alibaba-damo-academy/FunASR/blob/main/runtime/csharp/ws-client/FunASRWSClient_Offline/WebScoketClient.cs
只有c++ 和 python是官方维护的,其他都是社区用户贡献的
@lyblsgo 您好,我用的是官方的python client,发现处理长视频时,会报错(如下),我的视频长度是2小时57分
(base) [root@hw-hrzyxt-hd2jr ~]# python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "longv.mp4" --output_dir "./results" --use_itn 0 Namespace(audio_fs=16000, audio_in='longv.mp4', chunk_interval=10, chunk_size=[5, 10, 5], host='127.0.0.1', hotword='', mode='offline', output_dir='./results', port=10095, send_without_sleep=True, ssl=1, thread_num=1, use_itn=0, words_max_print=10000) connect to wss://127.0.0.1:10095 Exception: sent 1009 (message too big); no close frame received
机器配置是8核16G,不知怎么解决,谢谢
python funasr_wss_client.py --host 192.168.1.77 --port 10098 --mode offline --audio_in 320.16k.wav
Namespace(host='192.168.1.77', port=10098, chunk_size=[5, 10, 5], encoder_chunk_look_back=4, decoder_chunk_look_back=0, chunk_interval=10, hotword='', audio_in='320.16k.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')
...
connect to wss://192.168.1.77:10098
**Exception: sent 1009 (message too big); no close frame received**
same exception
@lyblsgo 您好,我用的是官方的python client,发现处理长视频时,会报错(如下),我的视频长度是2小时57分
(base) [root@hw-hrzyxt-hd2jr ~]# python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "longv.mp4" --output_dir "./results" --use_itn 0 Namespace(audio_fs=16000, audio_in='longv.mp4', chunk_interval=10, chunk_size=[5, 10, 5], host='127.0.0.1', hotword='', mode='offline', output_dir='./results', port=10095, send_without_sleep=True, ssl=1, thread_num=1, use_itn=0, words_max_print=10000) connect to wss://127.0.0.1:10095 Exception: sent 1009 (message too big); no close frame received机器配置是8核16G,不知怎么解决,谢谢
我也遇到了一样的问题,初步怀疑是websockets客户端的问题,在websockets开源仓库有相关讨论,正在研究,可能加些参数就行了
@lyblsgo 您好,我用的是官方的python client,发现处理长视频时,会报错(如下),我的视频长度是2小时57分
(base) [root@hw-hrzyxt-hd2jr ~]# python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "longv.mp4" --output_dir "./results" --use_itn 0 Namespace(audio_fs=16000, audio_in='longv.mp4', chunk_interval=10, chunk_size=[5, 10, 5], host='127.0.0.1', hotword='', mode='offline', output_dir='./results', port=10095, send_without_sleep=True, ssl=1, thread_num=1, use_itn=0, words_max_print=10000) connect to wss://127.0.0.1:10095 Exception: sent 1009 (message too big); no close frame received机器配置是8核16G,不知怎么解决,谢谢
我找到了一个解决方案,修改官方websocket client代码,在websockets.connect加上参数max_size = None
我推测的原因是,当服务端ASR结束后会将文本一次性通过websocket返回,当音频很长(文本很多)的时候(实测在1个半小时不停讲话的情况下,返回的结果文本有1.5MB),返回的内容会超过python的websockets库官方给出的单条消息默认限制大小2**20 ,将这个值改为None或者2**20*10就解决了。
这应该不是最佳方案,将websocket的服务端的返回也切分一下,多分几次返回给客户端也许更加适合。