From d97aaa770d7d06f88e83967285c043caa82ad16d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E5=B2=A9?= Date: Thu, 4 Dec 2025 17:42:00 +0800 Subject: [PATCH] x --- FunASR/安装.txt | 2 +- .../__pycache__/__init__.cpython-310.pyc | Bin 149 -> 161 bytes .../__pycache__/main.cpython-310.pyc | Bin 2015 -> 2027 bytes .../__pycache__/ProtocolCodec.cpython-310.pyc | Bin 14517 -> 14529 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 155 -> 167 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 156 -> 168 bytes .../config/__pycache__/logger.cpython-310.pyc | Bin 782 -> 794 bytes .../__pycache__/settings.cpython-310.pyc | Bin 4430 -> 4442 bytes .../core/__pycache__/__init__.cpython-310.pyc | Bin 154 -> 166 bytes .../__pycache__/connection.cpython-310.pyc | Bin 13207 -> 13219 bytes .../websocket_handler.cpython-310.pyc | Bin 8572 -> 8584 bytes .../asr/__pycache__/__init__.cpython-310.pyc | Bin 158 -> 170 bytes .../__pycache__/asr_manager.cpython-310.pyc | Bin 1819 -> 1831 bytes .../core/asr/__pycache__/base.cpython-310.pyc | Bin 4802 -> 4814 bytes .../asr/__pycache__/factory.cpython-310.pyc | Bin 1066 -> 1078 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 204 -> 216 bytes .../__pycache__/fun_asr.cpython-310.pyc | Bin 9547 -> 9559 bytes .../llm/__pycache__/__init__.cpython-310.pyc | Bin 158 -> 170 bytes .../dify/__pycache__/__init__.cpython-310.pyc | Bin 163 -> 175 bytes .../llm/dify/__pycache__/dify.cpython-310.pyc | Bin 4844 -> 4856 bytes .../tts/__pycache__/__init__.cpython-310.pyc | Bin 158 -> 170 bytes .../__pycache__/tts_client.cpython-310.pyc | Bin 20113 -> 20166 bytes .../audio_ai_chat/core/tts/tts_client.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 155 -> 167 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 876 -> 888 bytes audio_ai_chat/logs/app.log | 282 ++++++++++++++++++ python/__pycache__/asr_client.cpython-310.pyc | Bin 7321 -> 7333 bytes .../__pycache__/frontend_ws.cpython-310.pyc | Bin 6668 -> 6680 bytes python/__pycache__/llm_client.cpython-310.pyc | Bin 4815 -> 4827 bytes .../session_manager.cpython-310.pyc | Bin 2426 -> 2438 bytes python/__pycache__/tts_client.cpython-310.pyc | Bin 20094 -> 20106 bytes .../ws_message_manager.cpython-310.pyc | Bin 4307 -> 4319 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 624 -> 636 bytes .../__pycache__/protocols.cpython-310.pyc | Bin 15113 -> 15125 bytes .../pages/index/StreamPlayer.js | 201 +++++++++++++ 测试流式传输uniapp/pages/index/index.vue | 154 +++++++--- .../sdx-StreamPlayer/sdx-StreamPlayer.vue | 9 - .../dist/cache/.vite/deps/_metadata.json | 10 +- .../dist/cache/.vite/deps/text-encoding.js | 12 +- .../cache/.vite/deps/text-encoding.js.map | 2 +- .../dist/dev/app-plus/app-renderjs.js | 51 +++- .../dist/dev/app-plus/app-service.js | 175 +++-------- 火山tts地址.txt | 1 + 43 files changed, 691 insertions(+), 210 deletions(-) create mode 100644 测试流式传输uniapp/pages/index/StreamPlayer.js create mode 100644 火山tts地址.txt diff --git a/FunASR/安装.txt b/FunASR/安装.txt index 7a50102..de097fb 100644 --- a/FunASR/安装.txt +++ b/FunASR/安装.txt @@ -3,7 +3,7 @@ git 地址:https://github.com/modelscope/FunASR/blob/main/runtime/docs/SDK_tutor docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.12 -docker exec -it 5808d9cf479122f0aaa59d5500148debfc80c4274159b96e2426a2b90b2976c8 bash +docker exec -it 367797c69268b2c68f1443aa0f8dcb5d5ac01355dbdd06fa6e18758415506c8f bash cd FunASR/runtime nohup bash run_server_2pass.sh \ diff --git a/audio_ai_chat/audio_ai_chat/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/__pycache__/__init__.cpython-310.pyc index 1f30bf623a387569cfc1d5711521deed1a2dcdbf..2d4294dc6dadc7d194a985cacf5a0745617affe9 100644 GIT binary patch delta 51 zcmbQrxR8-6pO=@50SKaIP2{qbb#b9ZaV$;A%%2!x F3jkiM59I&= delta 39 tcmZ3;IF*qrpO=@50SJoUOysf^v~aVENz5!RDN0Su)h$UaE}58O3joF`3#R}8 diff --git a/audio_ai_chat/audio_ai_chat/__pycache__/main.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/__pycache__/main.cpython-310.pyc index 8b020e1e22ec18b6722c16122ccab71702403365..f6be80c54ea50e3604800ef6ec8f0ee9710025f1 100644 GIT binary patch delta 54 zcmcc5|C*mGpO=@50SI1Q-pEzTEbHKG6%$&VT2vfk7~_&!oL!P%5L1#`T;f=ol9|7G I0<%900Mxz`C;$Ke delta 42 wcmaFOf1jT#pO=@50SG3=Y~(6s7Bq3Qib>2YE-6Y)%+)PPEiTzShuNP60Q;c~umAu6 diff --git a/audio_ai_chat/audio_ai_chat/codec/__pycache__/ProtocolCodec.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/codec/__pycache__/ProtocolCodec.cpython-310.pyc index 4aa2eca3cca309cb3a46f0607ec9b66692d24dee..28bbd1b3cdadaa92adf5b95b1309f389f47aaed4 100644 GIT binary patch delta 54 zcmdm5c(9NwpO=@50SI1Q-pF-`S=Qg#DkiizwWv78FvcadIJ+djAf_a>xWutEB{P5X IUFI7m0Q$cZ`Tzg` delta 42 wcmX?DxV4ZgpO=@50SIR2Zsa<|Ea>cJ6_c1*TvC*pn5$coT3oXECG!mv02=}hoB#j- diff --git a/audio_ai_chat/audio_ai_chat/codec/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/codec/__pycache__/__init__.cpython-310.pyc index 8784a48c34ac4e748ad14c8613ea4f5b1249dffd..2e10ddfd8b13ef193f89087f63dea1b366c9e4d2 100644 GIT binary patch delta 51 zcmbQuxSWwIpO=@50SKaIP2{qb^>Vg~2`x@7DvmLXaY-%CF3B&5DM>9ZaV$;A%%2$H F3;vW diff --git a/audio_ai_chat/audio_ai_chat/config/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/config/__pycache__/__init__.cpython-310.pyc index cafaf394044cd6c1c285b79226a63f5a094a9878..4a3dac390a92d452ca18a16f15165081ff455f85 100644 GIT binary patch delta 51 zcmbQkxPp-@pO=@50SKaIP2{qb^>((32`x@7DvmLXaY-%CF3B&5DM>9ZaV$;A%%2$H F0svx95CH%H delta 39 tcmZ3%IERrdpO=@50SJoUOysf^w0EeOzy`$Hyn; mHrhJY~8G45;KcSic%AEbxTr&NjB!aV&MwI>h$%@eE^#bP$;{vU Im_M5l0INz7nE(I) delta 42 wcmcbmbWVvYpO=@50SHd!Zsa<_FKF*(6_c1*TvC*pn5$coT3oXEJ%2VM01y`q-T(jq diff --git a/audio_ai_chat/audio_ai_chat/core/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/__pycache__/__init__.cpython-310.pyc index 7afa1943dddf5ac37af81bebff593b74355619da..f7ab12e5b12c63e3d9552af8051ac7c4434d34b8 100644 GIT binary patch delta 51 zcmbQmxQvl2pO=@50SKaIP2{qb^>nt12`x@7DvmLXaY-%CF3B&5DM>9ZaV$;A%%2$H F1OQ=05BUH9 delta 39 tcmZ3+IE#@hpO=@50SJoUOysf^v~{zJNz5!RDN0Su)h$UaE}59(1OUhm3%dXS diff --git a/audio_ai_chat/audio_ai_chat/core/__pycache__/connection.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/__pycache__/connection.cpython-310.pyc index 438fee4f0a0d589a56a523f41cc7a534c838cd1b..c0d827de8f6ada4bc4cc56f16c54865335bcfd15 100644 GIT binary patch delta 54 zcmbQ9zBrvLpO=@50SI1Q-pF;AN!HuhDkiizwWv78FvcadIJ+djAf_a>xWutEB{P5X I52pDB0PS%Tod5s; delta 42 wcmZ3SK0Tc)pO=@50SF>%Hger%60~=-ib>2YE-6Y)%+)PPEiT#2!aUyq00x;24FCWD diff --git a/audio_ai_chat/audio_ai_chat/core/__pycache__/websocket_handler.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/__pycache__/websocket_handler.cpython-310.pyc index 5b2ed82e7524a0ef2fdadb0489b0f90cc28a5892..4cf0241111cf21aa6cb9581e49fcccf7dc6c2004 100644 GIT binary patch delta 54 zcmez4)ZxsP&&$ij00gftZ{#}3EF0u(6%$&VT2vfk7~_&!oL!P%5L1#`T;f=ol9|8x I3G)nD0PHRkWdHyG delta 42 wcmeBh{^P`z&&$ij00bLrHgcV07Ibs7ib>2YE-6Y)%+)PPEiT#ofq8~3020v-EC2ui diff --git a/audio_ai_chat/audio_ai_chat/core/asr/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/asr/__pycache__/__init__.cpython-310.pyc index 49c06d9f09cd8e4cdbfedcb80eabc7ac0d201962..331d32e784cdef5bd92c240d78780ca821dda341 100644 GIT binary patch delta 51 zcmbQoxQdZ0pO=@50SKaIP2{qb^>wz22`x@7DvmLXaY-%CF3B&5DM>9ZaV$;A%%2$H F1^{DO5D5SP delta 39 tcmZ3*IFFGlpO=@50SJoUOysf^babxWutEB{P5X II_6wv0KZof2LJ#7 delta 42 wcmZ3^H=B896_c1*TvC*pn5$coT3oVu7jrH%0P^q**#H0l diff --git a/audio_ai_chat/audio_ai_chat/core/asr/__pycache__/base.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/asr/__pycache__/base.cpython-310.pyc index 17799713fa3fd7776895fdb322c86a65b010717f..ac54a70cf8b7a5584b623d23fa2be9659297286d 100644 GIT binary patch delta 54 zcmX@4dQO!qpO=@50SI1Q-pJL-B&NjB!aV&MwI>h$%@eE^#bP$;{te I!nBPM0FI;()Bpeg delta 42 wcmdnSv5JE$pO=@50SMIHH*!TX2|Bo0#Uy4HmlUNY=IWND7ME;pVA{qA0N9ud?f?J) diff --git a/audio_ai_chat/audio_ai_chat/core/asr/fun_asr/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/asr/fun_asr/__pycache__/__init__.cpython-310.pyc index b1b0ec23191ad872cf6a8509e4f822207c103916..063b1d2f065536a8c8b1d0cc287a404d59ad4453 100644 GIT binary patch delta 52 zcmX@Zc!QBUpO=@50SGjD^(S&C$%Z;x#e^2878S=B#<-*wXP4v`#FV5KmpGQDWadw- G^8)~USrD=S delta 40 ucmcb?c!rTXpO=@50SMIH4JL9Y33|F&#Uy4HmlUNY=IWND7MD!y@&f?NBn!g; diff --git a/audio_ai_chat/audio_ai_chat/core/asr/fun_asr/__pycache__/fun_asr.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/asr/fun_asr/__pycache__/fun_asr.cpython-310.pyc index 0fa72854f203acfdb06f92485ee19d8a5f0f518a..a68a452a57e38596a600d04312fe094ab46a0744 100644 GIT binary patch delta 54 zcmX@@b=`|ApO=@50SI1Q-pF-~SvJJkDkiizwWv78FvcadIJ+djAf_a>xWutEB{P5X IL*^_+0Q6!LWB>pF delta 42 wcmccab=r$7pO=@50SGv2YE-6Y)%+)PPEiT#omN`oi00i<4aR2}S diff --git a/audio_ai_chat/audio_ai_chat/core/llm/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/llm/__pycache__/__init__.cpython-310.pyc index b9d37857be2e7bf61d5147d78bc308da223d1e90..c2daf547ae3df503c708a744eab54fd254ed0c8c 100644 GIT binary patch delta 51 zcmbQoxQdZ0pO=@50SKaIP2{qb^>wz22`x@7DvmLXaY-%CF3B&5DM>9ZaV$;A%%2$H F1^{DO5D5SP delta 39 tcmZ3*IFFGlpO=@50SJoUOysf^babey17}!BxV+u6s0ES>XxJymrP9Y1^~073hn>^ diff --git a/audio_ai_chat/audio_ai_chat/core/llm/dify/__pycache__/dify.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/llm/dify/__pycache__/dify.cpython-310.pyc index df05a8ae8f757cb3694069975d24fb5bad46b9d1..cfa6dbd57edce78a4eee42dc765042c36704926b 100644 GIT binary patch delta 152 zcmaE(`a_i~pO=@50SNqgH*)1M%lbK6#e^2878S=B#<-*wXP4v`#FV5KmpGQDWae+~ zWH#btytR1`Pc0*(?_?{!Mm8Uy)*|1{2l?We7=0!y3MMlKPHq*nW(xp|Pd>;eKKZVo iGGowWMxh9KKae0Fh>!;nU^V_ARv?H70;}#9iUj}?vnZzk delta 140 zcmeyN`bL#2pO=@50SMIHH*)1M3p%-3#Uy4HmlUNY=IWND7ME8*O5+nNn diff --git a/audio_ai_chat/audio_ai_chat/core/tts/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/core/tts/__pycache__/__init__.cpython-310.pyc index 133c8d52a079b5c2149435bd273c8ec3e5f1a25b..57473b355189a35aff86bcc174d670eee9e1972b 100644 GIT binary patch delta 51 zcmbQoxQdZ0pO=@50SKaIP2{qb^>wz22`x@7DvmLXaY-%CF3B&5DM>9ZaV$;A%%2$H F1^{DO5D5SP delta 39 tcmZ3*IFFGlpO=@50SJoUOysf^bab+%09vZeWpBZbG?_Es!p-sFBnIH?~`5S{Cd=XNLj}HdQL6 zt!VL8+ZYI7Jc2eVooYpl)oKwn9#}MSO{#wxTN`82SVe90_hu6@jXT*--u!;wcm94e zJ_(DH5YrPAV~%3K@Rfo<=Uhw+Z@Z(u!nY+PDAPnRE&h>B*`<&;QUuD(+B;e_+ zS7Dzf-SQ;BbNE~KMYi#^%PCAUz3W(z|&1q%vO z@T=TZ%LuI1koP*A z)OP3Z0P!U4O6ag82rn`7bNsd7cbLMT3ya`;bQFD)rRR>sVEbWV`ye}Ug}P7%2;`;A zp}qKSNYwg^KLWU-xl8r~{DtQ>{=k}^Ev;jRq5V`^2I4e{tMqJ5%oNaF{w*w^ts(@U>hiakxr)nG z$1L--*iLwjE{fG02nN)E|G~gs*@jP4SHpYwX?1Eu*7>jOCS$0xPnCN5gAR_lzK@AD zV-Za^X}a_~ceW-GoVZfc1m`imHV5XhrPd+3$l*g&YMn5uov7s@UN51a`MC_rUF1HB zuhgYME`Cx+=}qpeNa(ppdUg_KGB-vt-{UU#o}wL%aGH=tXd_Uc$~nRZ1OtI52!usK z9wA7e67+*wC!AsCC0upq!x_!B$p-MIwz<9@lJskiqGJ00WcD5Vo0DKg>u+{a2a_#>U3v%lKvyWhTA_mC53;=aa3^T1 zfgvpJ^sAk$ntN$wny^-|sC+>ZLG_2aL&}%5N#%xlT2PktD$tt(NAYE^6T-Oct k>8*wFYU}WZI^&kqCZoxi#z8!16=ES4>|or_{mozd2hXCTivR!s delta 1559 zcmZvce@t6d6vua7Umrh8nQUVqqd+rSC@WIg1A6txz-t(HMA#2jlJH6+7 z&OPVc`#N_L-aHA~CapGl1^aX~Z}cWjXsh`+=N9WTE^j~*JuY9iKb3DfZdp?L!^T6L19z@6T&}PP`v`O;MDYF2b zcrGm;dhq+SCxvbnCBA~WdMoszPoEFJ%Oma$0df^b6ui`{@0lbDw*~OY3TIeIZjyV>6Ubt5JeV7nOpn;1!2*(NKgk6L;2&b{z zVuB-h!BPfYc-L|XM&)xk&jXBNY2}{UM$$m z{S9(jVIjaUZZAp(6*d=rCrnYWRoQW$RRa;&Z2bbJ&{1pv4elwPW45Iv8CGI-NuzLy z#FIE$V#%H+vx@LBVTMpcNc|USWPQYN4+Yy%%_RM7B#hH`G0|SXSMs`E^tO4{;Z>W> zc!l{)Trh?`e(8~yj$Qa|=G5)}vvnp;RATosM>uw6WMFSlayK3Hr*drV6Rffyfl2(< zz6sW2RB07l#rje+Tj?y-3mGJt!*@#!&@0cE@{prsJ4m~!#BG$cmk=Z@tDZy~1|2rI zf_8^7Qwh9Cy77mI$?;gYp2Lo!nhBD8K#&Q^gn9yvM4TmjN>CAaf|_uRU?KPkR6+P~ z)t8z1D_Y8O;Ih1x|(N;Snww_`k$k^4L}b^>(wm)u{BQ zjQSQO4!6LpkXm&4S#iqPPvC)?wU%KL{MUpaex>LnSKx(!_%%7{`h<8|5N{|&d{&bH z{rF>z0TxiGb*3x-9NU?yQSA@<_P2^>$<_p#f_}H#)9l^t5#K>ytpoaSytc%)Y~~wi f4>O^Qu!@jFP?}H%qg*bflLgGI>jpcH)g}D{NGYHL diff --git a/audio_ai_chat/audio_ai_chat/core/tts/tts_client.py b/audio_ai_chat/audio_ai_chat/core/tts/tts_client.py index af6a009..d98b4fa 100644 --- a/audio_ai_chat/audio_ai_chat/core/tts/tts_client.py +++ b/audio_ai_chat/audio_ai_chat/core/tts/tts_client.py @@ -231,6 +231,8 @@ class ByteDanceTTSSocketClient: "format": request.encoding, "sample_rate": DEFAULT_SAMPLE_RATE, "enable_timestamp": True, + "bit_rate":256000, + "speech_rate":20 }, "additions": json.dumps({"disable_markdown_filter": False}), "speed": request.speed, # 语速参数(需服务端支持) diff --git a/audio_ai_chat/audio_ai_chat/utils/__pycache__/__init__.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/utils/__pycache__/__init__.cpython-310.pyc index 714d647f7f651a182311db26fe1290be9c609805..ccec4880e72aa7746a533166dfdbc3f8cc8b9710 100644 GIT binary patch delta 51 zcmbQuxSWwIpO=@50SKaIP2{qb^>Vg~2`x@7DvmLXaY-%CF3B&5DM>9ZaV$;A%%2$H F3;vW diff --git a/audio_ai_chat/audio_ai_chat/utils/__pycache__/exceptions.cpython-310.pyc b/audio_ai_chat/audio_ai_chat/utils/__pycache__/exceptions.cpython-310.pyc index 5b58a890dd04922d1e51b056e6acc152c2ef7285..6a7230c01b50748a545d8374433abca91e78ee78 100644 GIT binary patch delta 54 zcmaFE_JfTppO=@50SL4fZ{*@&l=X48iU}=FEh>&NjB!aV&MwI>h$%@eE^#bP$;{uZ I%;?Dk0H6O5W&i*H delta 42 wcmeyt_J)lspO=@50SJoUY~2YE-6Y)%+)PPEiT!t&*;en0R5v3PXGV_ diff --git a/audio_ai_chat/logs/app.log b/audio_ai_chat/logs/app.log index a377e14..77dfd37 100644 --- a/audio_ai_chat/logs/app.log +++ b/audio_ai_chat/logs/app.log @@ -2839,3 +2839,285 @@ 2025-12-04 02:09:16.678 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 1537542304096 发送协程已退出 2025-12-04 02:09:16.679 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1537542304096 注销成功,当前活跃连接数:0 2025-12-04 02:09:16.680 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1537542304096 连接清理完成 +2025-12-04 08:31:06.041 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2202228893552 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 08:31:06.068 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2202228893552) +2025-12-04 08:31:06.069 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2202228893552 注册成功,当前活跃连接数:1 +2025-12-04 08:31:06.834 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2202228893552 连接就绪 +2025-12-04 08:31:06.835 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2202228893552 发送协程启动 +2025-12-04 08:32:24.727 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2202228893552 主动断开连接 +2025-12-04 08:32:24.727 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2202228893552 开始清理连接 +2025-12-04 08:32:24.728 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2202228893552 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 08:32:24.728 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2202228893552 发送协程已退出 +2025-12-04 08:32:24.728 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2202228893552 注销成功,当前活跃连接数:0 +2025-12-04 08:32:24.728 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2202228893552 连接清理完成 +2025-12-04 08:53:35.101 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2821746141184 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 08:53:35.118 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2821746141184) +2025-12-04 08:53:35.118 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2821746141184 注册成功,当前活跃连接数:1 +2025-12-04 08:53:35.291 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2821746437008 已接受,等待身份信息(5秒超时),当前连接数: 1 +2025-12-04 08:53:35.435 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2821746141184 连接就绪 +2025-12-04 08:53:35.436 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2821746141184 发送协程启动 +2025-12-04 08:53:35.436 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2821746141184 处理异常:CONTROL +2025-12-04 08:53:35.437 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2821746141184 开始清理连接 +2025-12-04 08:53:35.437 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2821746141184 发送协程已退出 +2025-12-04 08:53:35.438 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2821746141184 注销成功,当前活跃连接数:0 +2025-12-04 08:53:35.438 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2821746141184 连接清理完成 +2025-12-04 08:53:37.514 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2821746427984 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 08:53:38.099 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2821746887072 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 08:53:40.286 | WARNING | audio_ai_chat.core.websocket_handler:connect:143 - 连接 2821746437008 身份校验超时 +2025-12-04 08:53:40.287 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2821746437008 处理异常:连接 2821746437008 身份校验超时 +2025-12-04 08:53:40.287 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2821746437008 开始清理连接 +2025-12-04 08:53:40.287 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2821746437008 连接清理完成 +2025-12-04 08:53:42.510 | WARNING | audio_ai_chat.core.websocket_handler:connect:143 - 连接 2821746427984 身份校验超时 +2025-12-04 08:53:42.511 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2821746427984 处理异常:连接 2821746427984 身份校验超时 +2025-12-04 08:53:42.511 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2821746427984 开始清理连接 +2025-12-04 08:53:42.511 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2821746427984 连接清理完成 +2025-12-04 08:53:43.122 | WARNING | audio_ai_chat.core.websocket_handler:connect:143 - 连接 2821746887072 身份校验超时 +2025-12-04 08:53:43.122 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2821746887072 处理异常:连接 2821746887072 身份校验超时 +2025-12-04 08:53:43.123 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2821746887072 开始清理连接 +2025-12-04 08:53:43.123 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2821746887072 连接清理完成 +2025-12-04 08:53:46.628 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2821746428128 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 08:53:46.638 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2821746428128) +2025-12-04 08:53:46.638 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2821746428128 注册成功,当前活跃连接数:1 +2025-12-04 08:53:46.813 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2821746428128 连接就绪 +2025-12-04 08:53:46.813 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2821746428128 发送协程启动 +2025-12-04 08:54:40.876 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2821746428128 主动断开连接 +2025-12-04 08:54:40.876 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2821746428128 开始清理连接 +2025-12-04 08:54:40.877 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2821746428128 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 08:54:40.877 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2821746428128 发送协程已退出 +2025-12-04 08:54:40.877 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2821746428128 注销成功,当前活跃连接数:0 +2025-12-04 08:54:40.878 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2821746428128 连接清理完成 +2025-12-04 09:23:35.454 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 1566411270144 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:23:35.485 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 1566411270144) +2025-12-04 09:23:35.485 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 1566411270144 注册成功,当前活跃连接数:1 +2025-12-04 09:23:36.147 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 1566411270144 连接就绪 +2025-12-04 09:23:36.148 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 1566411270144 发送协程启动 +2025-12-04 09:24:20.095 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 1566411270144 主动断开连接 +2025-12-04 09:24:20.095 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 1566411270144 开始清理连接 +2025-12-04 09:24:20.096 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 1566411270144 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:24:20.096 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 1566411270144 发送协程已退出 +2025-12-04 09:24:20.096 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1566411270144 注销成功,当前活跃连接数:0 +2025-12-04 09:24:20.097 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1566411270144 连接清理完成 +2025-12-04 09:28:44.990 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 1566411568080 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:28:45.192 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 1566411568080) +2025-12-04 09:28:45.192 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 1566411568080 注册成功,当前活跃连接数:1 +2025-12-04 09:28:46.073 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 1566411568080 连接就绪 +2025-12-04 09:28:46.074 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 1566411568080 发送协程启动 +2025-12-04 09:28:58.518 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 1566411568080 主动断开连接 +2025-12-04 09:28:58.518 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 1566411568080 开始清理连接 +2025-12-04 09:28:58.519 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 1566411568080 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:28:58.519 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 1566411568080 发送协程已退出 +2025-12-04 09:28:58.520 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1566411568080 注销成功,当前活跃连接数:0 +2025-12-04 09:28:58.520 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1566411568080 连接清理完成 +2025-12-04 09:33:54.199 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 1566412083200 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:33:54.217 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 1566412083200) +2025-12-04 09:33:54.218 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 1566412083200 注册成功,当前活跃连接数:1 +2025-12-04 09:33:54.218 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 1566412083200 处理异常:获取ASR连接失败 +2025-12-04 09:33:54.218 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 1566412083200 开始清理连接 +2025-12-04 09:33:54.219 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1566412083200 注销成功,当前活跃连接数:0 +2025-12-04 09:33:54.219 | INFO | audio_ai_chat.core.connection:close:316 - 连接上下文已关闭:client_id=1566412083200,user_id=1001,对话历史条数=0 +2025-12-04 09:33:54.219 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1566412083200 连接清理完成 +2025-12-04 09:36:39.525 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 1566412083152 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:36:39.716 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 1566412083152) +2025-12-04 09:36:39.749 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 1566412083152 注册成功,当前活跃连接数:1 +2025-12-04 09:36:39.750 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 1566412083152 处理异常:获取ASR连接失败 +2025-12-04 09:36:39.752 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 1566412083152 开始清理连接 +2025-12-04 09:36:39.752 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1566412083152 注销成功,当前活跃连接数:0 +2025-12-04 09:36:39.752 | INFO | audio_ai_chat.core.connection:close:316 - 连接上下文已关闭:client_id=1566412083152,user_id=1001,对话历史条数=0 +2025-12-04 09:36:39.753 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1566412083152 连接清理完成 +2025-12-04 09:36:59.488 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2691856082944 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:36:59.691 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2691856082944) +2025-12-04 09:36:59.691 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2691856082944 注册成功,当前活跃连接数:1 +2025-12-04 09:37:00.010 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2691856378672 已接受,等待身份信息(5秒超时),当前连接数: 1 +2025-12-04 09:37:00.052 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2691856378672) +2025-12-04 09:37:00.052 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2691856378672 注册成功,当前活跃连接数:2 +2025-12-04 09:37:00.325 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2691856082944 连接就绪 +2025-12-04 09:37:00.326 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2691856082944 发送协程启动 +2025-12-04 09:37:00.381 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2691856378672 连接就绪 +2025-12-04 09:37:00.382 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2691856378672 发送协程启动 +2025-12-04 09:37:25.777 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2691856378672 主动断开连接 +2025-12-04 09:37:25.778 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2691856378672 开始清理连接 +2025-12-04 09:37:25.778 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2691856378672 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:37:25.778 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2691856378672 发送协程已退出 +2025-12-04 09:37:25.779 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2691856378672 注销成功,当前活跃连接数:1 +2025-12-04 09:37:25.779 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2691856378672 连接清理完成 +2025-12-04 09:41:34.538 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2691856082944 主动断开连接 +2025-12-04 09:41:34.538 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2691856082944 开始清理连接 +2025-12-04 09:41:34.539 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2691856082944 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:41:34.539 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2691856082944 发送协程已退出 +2025-12-04 09:41:34.540 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2691856082944 注销成功,当前活跃连接数:0 +2025-12-04 09:41:34.540 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2691856082944 连接清理完成 +2025-12-04 09:41:38.695 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2691856368256 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:41:38.713 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2691856368256) +2025-12-04 09:41:38.713 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2691856368256 注册成功,当前活跃连接数:1 +2025-12-04 09:41:38.713 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2691856368256 处理异常:获取ASR连接失败 +2025-12-04 09:41:38.714 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2691856368256 开始清理连接 +2025-12-04 09:41:38.714 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2691856368256 注销成功,当前活跃连接数:0 +2025-12-04 09:41:38.714 | INFO | audio_ai_chat.core.connection:close:316 - 连接上下文已关闭:client_id=2691856368256,user_id=1001,对话历史条数=0 +2025-12-04 09:41:38.715 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2691856368256 连接清理完成 +2025-12-04 09:42:03.719 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2674482096128 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:42:03.783 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2674482096128) +2025-12-04 09:42:03.783 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2674482096128 注册成功,当前活跃连接数:1 +2025-12-04 09:42:04.533 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2674482096128 连接就绪 +2025-12-04 09:42:04.534 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2674482096128 发送协程启动 +2025-12-04 09:42:21.083 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2674482096128 主动断开连接 +2025-12-04 09:42:21.083 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2674482096128 开始清理连接 +2025-12-04 09:42:21.084 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2674482096128 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:42:21.084 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2674482096128 发送协程已退出 +2025-12-04 09:42:21.084 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2674482096128 注销成功,当前活跃连接数:0 +2025-12-04 09:42:21.085 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2674482096128 连接清理完成 +2025-12-04 09:45:15.614 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2674482394928 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:45:15.791 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2674482394928) +2025-12-04 09:45:15.791 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2674482394928 注册成功,当前活跃连接数:1 +2025-12-04 09:45:16.339 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2674482394928 连接就绪 +2025-12-04 09:45:16.339 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2674482394928 发送协程启动 +2025-12-04 09:45:39.432 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2674482394928 主动断开连接 +2025-12-04 09:45:39.433 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2674482394928 开始清理连接 +2025-12-04 09:45:39.434 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2674482394928 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:45:39.434 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2674482394928 发送协程已退出 +2025-12-04 09:45:39.434 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2674482394928 注销成功,当前活跃连接数:0 +2025-12-04 09:45:39.435 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2674482394928 连接清理完成 +2025-12-04 09:47:59.794 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2674482941808 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:47:59.814 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2674482941808) +2025-12-04 09:47:59.814 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2674482941808 注册成功,当前活跃连接数:1 +2025-12-04 09:47:59.815 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2674482941808 处理异常:获取ASR连接失败 +2025-12-04 09:47:59.815 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2674482941808 开始清理连接 +2025-12-04 09:47:59.815 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2674482941808 注销成功,当前活跃连接数:0 +2025-12-04 09:47:59.815 | INFO | audio_ai_chat.core.connection:close:316 - 连接上下文已关闭:client_id=2674482941808,user_id=1001,对话历史条数=0 +2025-12-04 09:47:59.816 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2674482941808 连接清理完成 +2025-12-04 09:48:30.283 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2674482941904 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:48:30.387 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2674482941904) +2025-12-04 09:48:30.388 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2674482941904 注册成功,当前活跃连接数:1 +2025-12-04 09:48:30.388 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2674482941904 处理异常:获取ASR连接失败 +2025-12-04 09:48:30.389 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2674482941904 开始清理连接 +2025-12-04 09:48:30.389 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2674482941904 注销成功,当前活跃连接数:0 +2025-12-04 09:48:30.389 | INFO | audio_ai_chat.core.connection:close:316 - 连接上下文已关闭:client_id=2674482941904,user_id=1001,对话历史条数=0 +2025-12-04 09:48:30.390 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2674482941904 连接清理完成 +2025-12-04 09:48:52.611 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2143937895424 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:48:52.639 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2143937895424) +2025-12-04 09:48:52.639 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2143937895424 注册成功,当前活跃连接数:1 +2025-12-04 09:48:53.319 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2143937895424 连接就绪 +2025-12-04 09:48:53.319 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2143937895424 发送协程启动 +2025-12-04 09:49:19.366 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2143937895424 主动断开连接 +2025-12-04 09:49:19.367 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2143937895424 开始清理连接 +2025-12-04 09:49:19.367 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2143937895424 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:49:19.368 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2143937895424 发送协程已退出 +2025-12-04 09:49:19.368 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2143937895424 注销成功,当前活跃连接数:0 +2025-12-04 09:49:19.369 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2143937895424 连接清理完成 +2025-12-04 09:51:02.244 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2143938230400 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:51:02.353 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2143938230400) +2025-12-04 09:51:02.354 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2143938230400 注册成功,当前活跃连接数:1 +2025-12-04 09:51:02.855 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2143938230400 连接就绪 +2025-12-04 09:51:02.856 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2143938230400 发送协程启动 +2025-12-04 09:51:20.228 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2143938230400 主动断开连接 +2025-12-04 09:51:20.228 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2143938230400 开始清理连接 +2025-12-04 09:51:20.229 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2143938230400 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:51:20.229 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2143938230400 发送协程已退出 +2025-12-04 09:51:20.230 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2143938230400 注销成功,当前活跃连接数:0 +2025-12-04 09:51:20.230 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2143938230400 连接清理完成 +2025-12-04 09:51:59.892 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2143938793328 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:51:59.922 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2143938793328) +2025-12-04 09:51:59.922 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2143938793328 注册成功,当前活跃连接数:1 +2025-12-04 09:51:59.923 | ERROR | audio_ai_chat.core.websocket_handler:handle_connection:248 - 客户端 2143938793328 处理异常:获取ASR连接失败 +2025-12-04 09:51:59.923 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2143938793328 开始清理连接 +2025-12-04 09:51:59.923 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2143938793328 注销成功,当前活跃连接数:0 +2025-12-04 09:51:59.924 | INFO | audio_ai_chat.core.connection:close:316 - 连接上下文已关闭:client_id=2143938793328,user_id=1001,对话历史条数=0 +2025-12-04 09:51:59.924 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2143938793328 连接清理完成 +2025-12-04 09:55:49.386 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2463641888864 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:55:49.579 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2463641888864) +2025-12-04 09:55:49.579 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2463641888864 注册成功,当前活跃连接数:1 +2025-12-04 09:55:50.097 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2463641888864 连接就绪 +2025-12-04 09:55:50.098 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2463641888864 发送协程启动 +2025-12-04 09:56:08.586 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2463641888864 主动断开连接 +2025-12-04 09:56:08.586 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2463641888864 开始清理连接 +2025-12-04 09:56:08.587 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2463641888864 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:56:08.588 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2463641888864 发送协程已退出 +2025-12-04 09:56:08.588 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2463641888864 注销成功,当前活跃连接数:0 +2025-12-04 09:56:08.588 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2463641888864 连接清理完成 +2025-12-04 09:56:50.202 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2463642190992 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 09:56:50.264 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2463642190992) +2025-12-04 09:56:50.264 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2463642190992 注册成功,当前活跃连接数:1 +2025-12-04 09:56:50.835 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2463642190992 连接就绪 +2025-12-04 09:56:50.836 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2463642190992 发送协程启动 +2025-12-04 09:57:11.801 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2463642190992 主动断开连接 +2025-12-04 09:57:11.801 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2463642190992 开始清理连接 +2025-12-04 09:57:11.802 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2463642190992 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 09:57:11.802 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2463642190992 发送协程已退出 +2025-12-04 09:57:11.803 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2463642190992 注销成功,当前活跃连接数:0 +2025-12-04 09:57:11.803 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2463642190992 连接清理完成 +2025-12-04 10:04:03.057 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2076949754736 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 10:04:03.210 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2076949754736) +2025-12-04 10:04:03.210 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2076949754736 注册成功,当前活跃连接数:1 +2025-12-04 10:04:03.872 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2076949754736 连接就绪 +2025-12-04 10:04:03.872 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2076949754736 发送协程启动 +2025-12-04 10:04:20.520 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2076949754736 主动断开连接 +2025-12-04 10:04:20.520 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2076949754736 开始清理连接 +2025-12-04 10:04:20.521 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2076949754736 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 10:04:20.522 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2076949754736 发送协程已退出 +2025-12-04 10:04:20.522 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2076949754736 注销成功,当前活跃连接数:0 +2025-12-04 10:04:20.523 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2076949754736 连接清理完成 +2025-12-04 10:04:37.874 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 1970278115328 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 10:04:38.076 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 1970278115328) +2025-12-04 10:04:38.077 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 1970278115328 注册成功,当前活跃连接数:1 +2025-12-04 10:04:38.856 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 1970278115328 连接就绪 +2025-12-04 10:04:38.856 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 1970278115328 发送协程启动 +2025-12-04 10:06:12.127 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 1970278115328 主动断开连接 +2025-12-04 10:06:12.127 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 1970278115328 开始清理连接 +2025-12-04 10:06:12.127 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 1970278115328 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 10:06:12.128 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 1970278115328 发送协程已退出 +2025-12-04 10:06:12.128 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1970278115328 注销成功,当前活跃连接数:0 +2025-12-04 10:06:12.128 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1970278115328 连接清理完成 +2025-12-04 10:06:57.226 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2002946566096 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 10:06:57.250 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2002946566096) +2025-12-04 10:06:57.250 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2002946566096 注册成功,当前活跃连接数:1 +2025-12-04 10:06:57.953 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2002946566096 连接就绪 +2025-12-04 10:06:57.953 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2002946566096 发送协程启动 +2025-12-04 10:07:24.732 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2002946566096 主动断开连接 +2025-12-04 10:07:24.732 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2002946566096 开始清理连接 +2025-12-04 10:07:24.733 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2002946566096 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 10:07:24.733 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2002946566096 发送协程已退出 +2025-12-04 10:07:24.733 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2002946566096 注销成功,当前活跃连接数:0 +2025-12-04 10:07:24.733 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2002946566096 连接清理完成 +2025-12-04 10:08:37.900 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2634366068832 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 10:08:38.001 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2634366068832) +2025-12-04 10:08:38.001 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2634366068832 注册成功,当前活跃连接数:1 +2025-12-04 10:08:38.609 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2634366068832 连接就绪 +2025-12-04 10:08:38.609 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2634366068832 发送协程启动 +2025-12-04 10:10:33.549 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2634366068832 主动断开连接 +2025-12-04 10:10:33.549 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2634366068832 开始清理连接 +2025-12-04 10:10:33.550 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2634366068832 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 10:10:33.550 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2634366068832 发送协程已退出 +2025-12-04 10:10:33.550 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2634366068832 注销成功,当前活跃连接数:0 +2025-12-04 10:10:33.550 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2634366068832 连接清理完成 +2025-12-04 10:14:31.284 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 1918299616976 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 10:14:31.488 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 1918299616976) +2025-12-04 10:14:31.488 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 1918299616976 注册成功,当前活跃连接数:1 +2025-12-04 10:14:32.210 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 1918299616976 连接就绪 +2025-12-04 10:14:32.210 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 1918299616976 发送协程启动 +2025-12-04 10:14:56.399 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 1918299616976 主动断开连接 +2025-12-04 10:14:56.400 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 1918299616976 开始清理连接 +2025-12-04 10:14:56.401 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 1918299616976 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 10:14:56.401 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 1918299616976 发送协程已退出 +2025-12-04 10:14:56.401 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1918299616976 注销成功,当前活跃连接数:0 +2025-12-04 10:14:56.402 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1918299616976 连接清理完成 +2025-12-04 10:15:18.544 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 1682518255616 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 10:15:18.634 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 1682518255616) +2025-12-04 10:15:18.634 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 1682518255616 注册成功,当前活跃连接数:1 +2025-12-04 10:15:19.377 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 1682518255616 连接就绪 +2025-12-04 10:15:19.377 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 1682518255616 发送协程启动 +2025-12-04 10:15:29.340 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 1682518255616 主动断开连接 +2025-12-04 10:15:29.341 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 1682518255616 开始清理连接 +2025-12-04 10:15:29.342 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 1682518255616 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 10:15:29.342 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 1682518255616 发送协程已退出 +2025-12-04 10:15:29.342 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 1682518255616 注销成功,当前活跃连接数:0 +2025-12-04 10:15:29.343 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 1682518255616 连接清理完成 +2025-12-04 10:17:27.213 | INFO | audio_ai_chat.core.websocket_handler:connect:134 - 连接 2156400945104 已接受,等待身份信息(5秒超时),当前连接数: 0 +2025-12-04 10:17:27.400 | INFO | audio_ai_chat.core.websocket_handler:connect:188 - 用户 1001(测试用户)身份校验通过(client_id: 2156400945104) +2025-12-04 10:17:27.400 | INFO | audio_ai_chat.core.websocket_handler:_register_connection:58 - 客户端 2156400945104 注册成功,当前活跃连接数:1 +2025-12-04 10:17:27.995 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:224 - 客户端 2156400945104 连接就绪 +2025-12-04 10:17:27.995 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:79 - 客户端 2156400945104 发送协程启动 +2025-12-04 10:17:34.742 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:246 - 客户端 2156400945104 主动断开连接 +2025-12-04 10:17:34.742 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:252 - 客户端 2156400945104 开始清理连接 +2025-12-04 10:17:34.743 | ERROR | audio_ai_chat.core.websocket_handler:_send_worker:127 - 客户端 2156400945104 发送协程异常退出:type object 'WebSocket' has no attribute 'Disconnect' +2025-12-04 10:17:34.743 | INFO | audio_ai_chat.core.websocket_handler:_send_worker:129 - 客户端 2156400945104 发送协程已退出 +2025-12-04 10:17:34.743 | INFO | audio_ai_chat.core.websocket_handler:_unregister_connection:68 - 客户端 2156400945104 注销成功,当前活跃连接数:0 +2025-12-04 10:17:34.743 | INFO | audio_ai_chat.core.websocket_handler:handle_connection:279 - 客户端 2156400945104 连接清理完成 diff --git a/python/__pycache__/asr_client.cpython-310.pyc b/python/__pycache__/asr_client.cpython-310.pyc index 1063c08d949561584104d1ec7ffec06a072db118..81f2d0932fd62f298f16a8738b2c60205f554e26 100644 GIT binary patch delta 54 zcmbPfxzv&?pO=@50SMS%ZRGmQENkd&6%$&VT2vfk7~_&!oL!P%5L1#`T;f=ol9|7m IkEL4z0JhE%VgLXD delta 42 wcmZ2#In$CWpO=@50SM%)H*$Su7F2b!ib>2YE-6Y)%+)PPEiTzC#nLSS0P;NyVgLXD diff --git a/python/__pycache__/frontend_ws.cpython-310.pyc b/python/__pycache__/frontend_ws.cpython-310.pyc index d09aa2fc18f7850b613aad6d57628e58b8cae874..04d16c0ecfc14ad78f5e39b6bbe9ab801ab49fba 100644 GIT binary patch delta 304 zcmeA%nPI}6&&$ij00he(=x^jc!69qpY!wq)oLW>IV;JL-TAW>yUl3E0T3q5-nv$8n z`3Z+R6XUJTI^2DX+zvopMUEiCY4cH@{Y)G-K(;1xk=x`RehEg~%}e?BF)_MKP7!jD z@deA=;w(xmk58%u8h4AmxHLIAwYa#*X7d3dQ6@=0kU6FxWlTkiAU4#nkjd{vCNYLj zZWMja1~R3{Z*rd4G;VtkGYmvTPv#ewvd;iAZ?PAo=A~rjrQc#HNi5C=n^2?)l+ffX z3IQp#1rebj!VW~Zfd~x{;W{}({2OEOuuyd!6B&TW)+i|SzJ<-nwYCwl3HA{`2&YL6Jyk73+_Hf zZhN50A_oxRxcMT_ekMh0AX}5U$Q2|c2O?xZgeHj40ueTwH}daeVsxHdAmkw90~FC@ zj^ZpzERRpB1R8#ey|^?vIkmXB$a?b`AyFntUyvSCkTRwsMGzZme$eD!B9j79FQIjJi&A4Mh!qOljW%5i(HK5!9$p`=n>`h_- diff --git a/python/__pycache__/llm_client.cpython-310.pyc b/python/__pycache__/llm_client.cpython-310.pyc index 2e051af10f9dcbe2fb75a793281e1b32c0730617..06200a1c8a4d72e45d8ce2581d4c7c03d7ea6ee2 100644 GIT binary patch delta 55 zcmX@FdRvt{pO=@50SMgQ>TKlBWtKH`wu%WYPAw{qF^q9ZEzT~`v^ce>IL0u>CAB!aB)=f0B(=E2u{0$! Ke{&{_s22eJkrK23 delta 44 ycmeC0%lK~&BUe5zFBbz4EUVne<;NnZ>Sh&_m|0v>l$w~UTasE_vbmH+)C&M0x(#gr diff --git a/python/__pycache__/ws_message_manager.cpython-310.pyc b/python/__pycache__/ws_message_manager.cpython-310.pyc index a8a33e0c66f84595b2c44378bfa1b3de5c46a6ce..47faf8a7260722bf2c242e532efe399d13eb6eeb 100644 GIT binary patch delta 54 zcmcbtcwdn#pO=@50SJ~p*vNH&QP$GgDkiizwWv78FvcadIJ+djAf_a>xWutEB{P5X IZN?vb0NOMYIsgCw delta 42 wcmcbwcv+DvpO=@50SK&EHgX+c6x4OIib>2YE-6Y)%+)PPEiT#oobd-A0P@@oN&o-= diff --git a/python/protocols/__pycache__/__init__.cpython-310.pyc b/python/protocols/__pycache__/__init__.cpython-310.pyc index eab35ec128c391f4c0fca3e4aa3f0505f19a16f7..171fa20f4d4e45876042c65117cb6059875e981c 100644 GIT binary patch delta 56 zcmeys@`r^tpO=@50SI1RZpaYY$ScPrYw2ti6Iz^FR2*X%&NjB!aV&MwI>h$%@eE^#bP M$;{szz`WBO02m_^rvLx| delta 46 zcmbPQ)>+1v&&$ij00bxJ>Sh{yZsap$7SwaIib>2YE-6Y)%+)PPEiTy{!@ScR05?_+ AcK`qY diff --git a/测试流式传输uniapp/pages/index/StreamPlayer.js b/测试流式传输uniapp/pages/index/StreamPlayer.js new file mode 100644 index 0000000..f0340d6 --- /dev/null +++ b/测试流式传输uniapp/pages/index/StreamPlayer.js @@ -0,0 +1,201 @@ +/** + * 支持安卓、iOS、H5的pcm格式, + * 如果想支持mp3,需要增加mp3相关解码合并处理等,个人测试效果不太好,所以没有加 + */ +export class StreamPlayer { + constructor({ + inputSampleRate = 16000, + numChannels = 1, + bitDepth = 16, + littleEndian = true, + pcmType = 'int', + callback = ()=>{} + } = {}) { + // 参数校验 + if (![16, 32].includes(bitDepth)) throw new Error('bitDepth 必须是 16 或 32'); + if (inputSampleRate <= 0) throw new Error('采样率必须大于 0'); + if (!['int', 'float'].includes(pcmType)) throw new Error('pcmType 必须是 int 或 float'); + + this.audioContext = new(window.AudioContext || window.webkitAudioContext)(); + this.inputSampleRate = inputSampleRate; + this.numChannels = numChannels; + this.bitDepth = bitDepth; + this.littleEndian = littleEndian; + this.pcmType = pcmType; + this.audioQueue = []; + this.playbackEndTime = 0; + this.currentSource = null; + this.lastBlockTail = null; // 用于交叉淡入淡出 + this.callback = callback; + } + + appendChunk(audioData) { + console.log('this.audioQueue', this.audioQueue.length); + this.audioQueue.push(audioData); + this._processQueue(); + } + + destroy() { + this.audioQueue = []; + this.playbackEndTime = 0; + if (this.currentSource) { + this.currentSource.stop(); + this.currentSource = null; + } + if (this.audioContext) { + this.audioContext.close(); + this.audioContext = null; + } + } + + async _processQueue() { + if(this.audioQueue.length === 0) { + this.callback('ended') + return + } + if (!this.audioContext || this.currentSource) return; + const buffer = this._mergeArrayBuffers(this.audioQueue) + this.audioQueue = [] + try { + const audioBuffer = this._convertPCM(buffer); + await this._schedulePlay(audioBuffer); + this._processQueue(); + } catch (err) { + console.error('音频处理失败:', err.name, err.message, err.stack); + } + } + + _convertPCM(buffer) { + // 1. 数据对齐:确保长度是样本大小的整数倍 + const bytesPerSample = this.bitDepth / 8; + const requiredBytes = bytesPerSample * this.numChannels; + const validByteLength = Math.floor(buffer.byteLength / requiredBytes) * requiredBytes; + const validBuffer = buffer.slice(0, validByteLength); + const dataView = new DataView(validBuffer); + const numSamples = validByteLength / requiredBytes; + + // 2. 创建音频缓冲区 + const audioBuffer = this.audioContext.createBuffer( + this.numChannels, + numSamples, + this.inputSampleRate + ); + + // 3. 解析PCM数据 + for (let ch = 0; ch < this.numChannels; ch++) { + const channelData = audioBuffer.getChannelData(ch); + for (let i = 0; i < numSamples; i++) { + // 计算字节位置(修正后的多声道索引) + const pos = (i * this.numChannels * bytesPerSample) + (ch * bytesPerSample); + let value; + + // 根据位深和数据类型解析 + if (this.bitDepth === 16) { + value = dataView.getInt16(pos, this.littleEndian) / 32768; + } else { + if (this.pcmType === 'int') { + value = dataView.getInt32(pos, this.littleEndian) / 2147483648; + } else { + value = dataView.getFloat32(pos, this.littleEndian); + } + } + channelData[i] = value; + } + + // 4. 消除直流偏移 + let sum = 0; + for (let i = 0; i < channelData.length; i++) { + sum += channelData[i]; + } + const dcOffset = sum / channelData.length; + for (let i = 0; i < channelData.length; i++) { + channelData[i] -= dcOffset; + } + + // 5. 块内淡入淡出(减少边界突变) + const fadeLength = Math.min(100, channelData.length); + for (let i = 0; i < fadeLength; i++) { + channelData[i] *= (i / fadeLength); + } + const startFadeOut = Math.max(0, channelData.length - fadeLength); + for (let i = startFadeOut; i < channelData.length; i++) { + const factor = 1 - (i - startFadeOut) / fadeLength; + channelData[i] *= factor; + } + } + + // 6. 块间交叉淡入淡出(解决重音关键点) + const crossfadeLength = 50; + if (this.lastBlockTail && this.lastBlockTail.length === this.numChannels) { + for (let ch = 0; ch < this.numChannels; ch++) { + const channelData = audioBuffer.getChannelData(ch); + const prevTail = this.lastBlockTail[ch]; + + // 只处理有足够长度交叉的情况 + if (prevTail.length >= crossfadeLength && channelData.length >= crossfadeLength) { + for (let i = 0; i < crossfadeLength; i++) { + const prevWeight = (crossfadeLength - i) / crossfadeLength; + const currWeight = i / crossfadeLength; + channelData[i] = channelData[i] * currWeight + prevTail[i] * prevWeight; + } + } + } + } + + // 7. 保存当前块尾部用于下一次交叉 + this.lastBlockTail = []; + for (let ch = 0; ch < this.numChannels; ch++) { + const channelData = audioBuffer.getChannelData(ch); + const tailStart = Math.max(0, channelData.length - crossfadeLength); + this.lastBlockTail[ch] = channelData.slice(tailStart); + } + + return audioBuffer; + } + _schedulePlay(audioBuffer) { + return new Promise(resolve => { + const source = this.audioContext.createBufferSource(); + source.buffer = audioBuffer; + source.connect(this.audioContext.destination); + + const plannedStartTime = this.playbackEndTime; + const now = this.audioContext.currentTime; + let startTime = Math.max(plannedStartTime, now); + + // 动态速率调整(示例,需根据实际测试调整阈值) + const timeDrift = plannedStartTime - now; + if (timeDrift < -0.02) { + source.playbackRate.value = Math.min(1.04, 1 - (timeDrift / audioBuffer.duration)); + } else if (timeDrift > 0.02) { + source.playbackRate.value = Math.max(0.96, 1 - (timeDrift / audioBuffer.duration)); + } else { + source.playbackRate.value = 1.0; + } + + source.start(startTime); + this.playbackEndTime = startTime + (audioBuffer.duration / source.playbackRate.value); + + source.onended = () => { + this.currentSource = null; + resolve(); + }; + this.currentSource = source; + }); + } + + // 合并多个 ArrayBuffer 的辅助函数 + _mergeArrayBuffers(buffers) { + let totalLength = 0; + for (let buffer of buffers) { + totalLength += buffer.byteLength; + } + const result = new Uint8Array(totalLength); + let offset = 0; + for (let buffer of buffers) { + const view = new Uint8Array(buffer); + result.set(view, offset); + offset += view.length; + } + return result.buffer; + } +} \ No newline at end of file diff --git a/测试流式传输uniapp/pages/index/index.vue b/测试流式传输uniapp/pages/index/index.vue index 91c37e5..7da3ef7 100644 --- a/测试流式传输uniapp/pages/index/index.vue +++ b/测试流式传输uniapp/pages/index/index.vue @@ -4,11 +4,23 @@ {{ status }} 当前分贝:{{ currentDecibels }} - - - xx + + + @@ -19,12 +31,14 @@ SerializationType, CompressionType, ControlCommand, - ProtocolConst, - } from './ProtocolCodec'; + ProtocolConst + } from './ProtocolCodec'; export default { data() { return { - status: "未录音", + currentPCMChunk: null, + isStop: false, // 停止播放指令 + status: '未录音', currentDecibels: 0, isRecording: false, ws: null, // WebSocket 实例 @@ -32,9 +46,10 @@ scriptProcessor: null, // 音频处理节点 audioBufferSource: null, // 音频源节点 frameBufferList: [], // 缓存音频帧 - wsUrl: "ws://127.0.0.1:8000/ws/audio", // 替换为实际后端地址 - // wsUrl: "ws://172.16.89.58:8000/ws/audio", // 替换为实际后端地址 + // wsUrl: "ws://127.0.0.1:8000/ws/audio", // 替换为实际后端地址 + // wsUrl: 'ws://172.16.89.58:8000/ws/audio' // 替换为实际后端地址 // wsUrl: "ws://25.64.32.157:9603/trapractice/voiceCallSocket/voiceCall?summary=3D072C9D242C96EA3F0FD647CB14A6F4B4BEA4493BB2FAAB065935FB405071B8A903128E488B6D06BEB23FD4E3D15EE6", // 替换为实际后端地址 + wsUrl: "wss://aitstest.jlbank.com.cn:7001/trapractice/voiceCallSocket/voiceCall?summary=3D072C9D242C96EA3F0FD647CB14A6F44A8F9EF1C3D9726612B7339B566489139850DF3BE002DF99495FD60B34A5899D", // 替换为实际后端地址 }; }, onUnload() { @@ -53,7 +68,7 @@ }, fail: () => { console.log('fail'); - }, + } }); this.ws.onOpen((res) => { console.log('WebSocket连接已打开', res); @@ -66,39 +81,41 @@ }); }); this.ws.onMessage((res) => { - const { - msgType, - body - } = ProtocolCodec.unpack(res.data) - + const { msgType, body } = ProtocolCodec.unpack(res.data); + if (msgType === MessageType.IDENTITY) { console.log('身份校验成功', body); - this.onStartRecord() + this.onStartRecord(); } else if (msgType === MessageType.AUDIO_DATA) { - this.$refs.aaa.appendBuffer(body) - }else { + // this.$refs.aaa.appendBuffer(body) + // this.currentPCMChunk = body; + const buffer = body; + if (buffer.byteLength < 2) return; + // ArrayBuffer转数字数组 + const uint8 = new Uint8Array(buffer); + const numArray = Array.from(uint8); + this.currentPCMChunk = numArray; // 传递数组 + } else { console.log('其他消息', body); } - - }) - + }); }, // 申请录音权限 async applyRecordPermission() { try { const res = await uni.requestPermissions({ - scope: "scope.record" + scope: 'scope.record' }); const isGranted = res[0].grantStatus === 1; if (!isGranted) { uni.showToast({ - title: "请授予录音权限", - icon: "none" + title: '请授予录音权限', + icon: 'none' }); } return isGranted; } catch (e) { - console.error("申请权限失败:", e); + console.error('申请权限失败:', e); return false; } }, @@ -124,25 +141,22 @@ sampleRate: 16000, frameSize: 1024, gain: 1.0, - onFrameRecorded: ({ - isLastFrame, - frameBuffer - }) => { - try{ + onFrameRecorded: ({ isLastFrame, frameBuffer }) => { + try { this.ws.send({ data: ProtocolCodec.pack(MessageType.AUDIO_DATA, frameBuffer) }); - } catch(e){} + } catch (e) {} }, onDecibels: (decibels) => { this.currentDecibels = decibels; } }); this.isRecording = true; - this.status = "录音中..."; + this.status = '录音中...'; } catch (e) { - console.error("启动录音失败:", e); - this.status = "启动录音失败"; + console.error('启动录音失败:', e); + this.status = '启动录音失败'; this.isRecording = false; } }, @@ -158,7 +172,7 @@ // 停止录音组件 this.$refs.recordFrame.stop(); this.isRecording = false; - this.status = "已停止录音"; + this.status = '已停止录音'; } // 关闭 WebSocket @@ -180,10 +194,7 @@ }, // 接收音频帧并处理 - frameRecorded({ - isLastFrame, - frameBuffer - }) { + frameRecorded({ isLastFrame, frameBuffer }) { // console.log("收到音频帧:", isLastFrame, frameBuffer.length); // 2. 通过 WebSocket 发送给后端 @@ -193,11 +204,9 @@ data: frameBuffer }); } catch (e) { - console.error("发送音频帧失败:", e); + console.error('发送音频帧失败:', e); } } - - }, // 监听分贝值 @@ -209,9 +218,62 @@ // 录音停止回调 stopIt(base64) { this.stopRecordAndClean(); - console.log("录音停止,最终音频Base64:", base64?.substring(0, 50) + "..."); - }, - }, + console.log('录音停止,最终音频Base64:', base64?.substring(0, 50) + '...'); + } + } + }; + + + @@ -238,4 +300,4 @@ font-size: 28rpx; color: #333; } - \ No newline at end of file + diff --git a/测试流式传输uniapp/uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue b/测试流式传输uniapp/uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue index b42e3f1..e0a4946 100644 --- a/测试流式传输uniapp/uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue +++ b/测试流式传输uniapp/uni_modules/sdx-StreamPlayer/components/sdx-StreamPlayer/sdx-StreamPlayer.vue @@ -70,14 +70,6 @@ }