FunASR icon indicating copy to clipboard operation
FunASR copied to clipboard

报错 websocketpp.processor:4 (A message was too large)

Open dfengpo opened this issue 1 year ago • 6 comments

🐛 Bug

To Reproduce

Steps to reproduce the behavior (always include the command you ran):

  1. Run cmd '....' 我通过websocket 上传文件大小为106mb,时长为57分钟,我已经使用vad模型。我收到了报错信息: [error] consume error: websocketpp.processor:4 (A message was too large)
  2. See error image

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对模型进行微调定制和推理。

dfengpo avatar May 25 '24 12:05 dfengpo

直接在这上传文件,网盘我打不开

lyblsgo avatar May 28 '24 05:05 lyblsgo

直接在这上传文件,网盘我打不开

不支持直接上传文件,用下面地址可以打开 http://110.41.57.176:5005/assets/wav/6.wav @lyblsgo

dfengpo avatar May 28 '24 05:05 dfengpo

image 我这边拿你的音频测试,服务端是可以的,建议使用c++ 或者 python的客户端测试一下,这是官方维护的客户端

lyblsgo avatar May 28 '24 06:05 lyblsgo

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

dfengpo avatar May 28 '24 06:05 dfengpo

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 avatar May 28 '24 06:05 lyblsgo

@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,不知怎么解决,谢谢

ericg108 avatar Aug 26 '24 08:08 ericg108

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

gree2 avatar Nov 04 '24 06:11 gree2

@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开源仓库有相关讨论,正在研究,可能加些参数就行了

Tony-xubiao avatar Nov 08 '24 09:11 Tony-xubiao

@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的服务端的返回也切分一下,多分几次返回给客户端也许更加适合。

Tony-xubiao avatar Nov 11 '24 02:11 Tony-xubiao