INFO:     Started server process [401194]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on https://0.0.0.0:8018 (Press CTRL+C to quit)
INFO:     127.0.0.1:43090 - "GET /health HTTP/1.1" 200 OK
/home/xsl/code/product/.venv/lib/python3.12/site-packages/torch/cuda/__init__.py:180: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12090). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:119.)
  return torch._C._cuda_getDeviceCount() > 0
INFO:httpx:HTTP Request: HEAD https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/config.json "HTTP/1.1 307 Temporary Redirect"
INFO:httpx:HTTP Request: HEAD https://huggingface.co/api/resolve-cache/models/hexgrad/Kokoro-82M/f3ff3571791e39611d31c381e3a41a3af07b4987/config.json "HTTP/1.1 200 OK"
/home/xsl/code/product/.venv/lib/python3.12/site-packages/torch/nn/modules/rnn.py:1013: UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.2 and num_layers=1
  super().__init__("LSTM", *args, **kwargs)
/home/xsl/code/product/.venv/lib/python3.12/site-packages/torch/nn/utils/weight_norm.py:144: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
  WeightNorm.apply(module, name, dim)
INFO:httpx:HTTP Request: HEAD https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/kokoro-v1_0.pth "HTTP/1.1 302 Found"
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
/home/xsl/code/product/.venv/lib/python3.12/site-packages/jieba/_compat.py:18: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
INFO:httpx:HTTP Request: HEAD https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/voices/zf_xiaoxiao.pt "HTTP/1.1 302 Found"
Building prefix dict from the default dictionary ...
DEBUG:jieba:Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
DEBUG:jieba:Loading model from cache /tmp/jieba.cache
Loading model cost 0.358 seconds.
DEBUG:jieba:Loading model cost 0.358 seconds.
Prefix dict has been built successfully.
DEBUG:jieba:Prefix dict has been built successfully.
WARNING: Defaulting repo_id to hexgrad/Kokoro-82M. Pass repo_id='hexgrad/Kokoro-82M' to suppress this warning.
INFO:     127.0.0.1:60258 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     127.0.0.1:40524 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:2190 - "GET / HTTP/1.1" 200 OK
INFO:     172.28.96.1:2190 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:2190 - "GET /web/app.js HTTP/1.1" 200 OK
INFO:     172.28.96.1:2190 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:2190 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:12419 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:9602 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:6375 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO:     172.28.96.1:6375 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:6375 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(0) Discovered peer reflexive candidate Candidate(5xwO9ewTsb 1 udp 1853759231 172.28.96.1 60702 typ prflx)
INFO:aioice.ice:Connection(0) Check CandidatePair(('172.28.107.97', 35860) -> ('172.28.96.1', 60702)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(0) Check CandidatePair(('172.28.107.97', 35860) -> ('172.28.96.1', 60702)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(0) ICE completed
INFO:     172.28.96.1:9899 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
INFO:aioice.ice:Connection(0) Consent to send expired
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-27' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:1631 - "GET / HTTP/1.1" 200 OK
INFO:     172.28.96.1:1631 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:1631 - "GET /web/app.js HTTP/1.1" 200 OK
INFO:     172.28.96.1:1631 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:1631 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:4914 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:6354 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:11967 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:2728 - "GET / HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
INFO:     172.28.96.1:2728 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:13395 - "GET /web/app.js HTTP/1.1" 200 OK
INFO:     172.28.96.1:4941 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:4941 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:4914 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO:     172.28.96.1:5793 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:3627 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:4914 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:4914 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(2) Discovered peer reflexive candidate Candidate(Ly5ELFkmha 1 udp 1853759231 172.28.96.1 50062 typ prflx)
INFO:aioice.ice:Connection(2) Check CandidatePair(('172.28.107.97', 48528) -> ('172.28.96.1', 50062)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(2) Check CandidatePair(('172.28.107.97', 48528) -> ('172.28.96.1', 50062)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(2) ICE completed
INFO:     connection closed
INFO:     connection closed
INFO:aioice.ice:Connection(2) Consent to send expired
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-941' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:1723 - "GET / HTTP/1.1" 200 OK
INFO:     172.28.96.1:1723 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:1723 - "GET /web/app.js HTTP/1.1" 200 OK
INFO:     172.28.96.1:1723 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:1723 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:14573 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:7534 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:4914 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:4914 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(3) Discovered peer reflexive candidate Candidate(sCNsxRJ8b8 1 udp 1853759231 172.28.96.1 64421 typ prflx)
INFO:aioice.ice:Connection(3) Check CandidatePair(('172.28.107.97', 48775) -> ('172.28.96.1', 64421)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(3) Check CandidatePair(('172.28.107.97', 48775) -> ('172.28.96.1', 64421)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(3) ICE completed
INFO:     172.28.96.1:7236 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     172.28.96.1:10460 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
INFO:aioice.ice:Connection(3) Consent to send expired
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-1283' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:14796 - "GET / HTTP/1.1" 200 OK
INFO:     172.28.96.1:14796 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:14796 - "GET /web/app.js?v=20260327b HTTP/1.1" 200 OK
INFO:     172.28.96.1:14796 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:14796 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:2032 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:14707 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:13486 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:13486 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(4) Discovered peer reflexive candidate Candidate(Qady0BDpmC 1 udp 1853759231 172.28.96.1 53980 typ prflx)
INFO:aioice.ice:Connection(4) Check CandidatePair(('172.28.107.97', 41950) -> ('172.28.96.1', 53980)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(4) Check CandidatePair(('172.28.107.97', 41950) -> ('172.28.96.1', 53980)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(4) ICE completed
INFO:     172.28.96.1:13486 - "GET / HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-2812' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:13486 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:13486 - "GET /web/app.js?v=20260327b HTTP/1.1" 200 OK
INFO:     172.28.96.1:13486 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:13486 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:10285 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO:     172.28.96.1:5486 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:13787 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:10285 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:10285 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(5) Discovered peer reflexive candidate Candidate(BLyMgNoiBf 1 udp 1853759231 172.28.96.1 55730 typ prflx)
INFO:aioice.ice:Connection(5) Check CandidatePair(('172.28.107.97', 41397) -> ('172.28.96.1', 55730)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(5) Check CandidatePair(('172.28.107.97', 41397) -> ('172.28.96.1', 55730)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(5) ICE completed
INFO:     172.28.96.1:8337 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
INFO:aioice.ice:Connection(5) Consent to send expired
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-2887' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:7750 - "GET / HTTP/1.1" 200 OK
INFO:     172.28.96.1:7750 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:7750 - "GET /web/app.js?v=20260327c HTTP/1.1" 200 OK
INFO:     172.28.96.1:7750 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:7750 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:1059 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:14463 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:14634 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:14634 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(6) Discovered peer reflexive candidate Candidate(dbehuF1olz 1 udp 1853759231 172.28.96.1 56094 typ prflx)
INFO:aioice.ice:Connection(6) Check CandidatePair(('172.28.107.97', 45460) -> ('172.28.96.1', 56094)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(6) Check CandidatePair(('172.28.107.97', 45460) -> ('172.28.96.1', 56094)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(6) ICE completed
INFO:     connection closed
INFO:     connection closed
INFO:     172.28.96.1:14493 - "GET / HTTP/1.1" 200 OK
INFO:     172.28.96.1:14493 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:14493 - "GET /web/app.js?v=20260327c HTTP/1.1" 200 OK
INFO:     172.28.96.1:14493 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:14493 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:10905 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:10117 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:6762 - "GET /meta HTTP/1.1" 200 OK
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-4222' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:6762 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(7) Discovered peer reflexive candidate Candidate(8K1dQt9yU0 1 udp 1853759231 172.28.96.1 49725 typ prflx)
INFO:aioice.ice:Connection(7) Check CandidatePair(('172.28.107.97', 39523) -> ('172.28.96.1', 49725)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(7) Check CandidatePair(('172.28.107.97', 39523) -> ('172.28.96.1', 49725)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(7) ICE completed
INFO:     172.28.96.1:14132 - "GET / HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-4834' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:14132 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:14132 - "GET /web/app.js?v=20260327c HTTP/1.1" 200 OK
INFO:     172.28.96.1:14132 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:14132 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:2807 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO:     172.28.96.1:6331 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:5113 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:2807 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:2807 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(8) Discovered peer reflexive candidate Candidate(ROwaVxsM9g 1 udp 1853759231 172.28.96.1 52410 typ prflx)
INFO:aioice.ice:Connection(8) Check CandidatePair(('172.28.107.97', 60159) -> ('172.28.96.1', 52410)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(8) Check CandidatePair(('172.28.107.97', 60159) -> ('172.28.96.1', 52410)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(8) ICE completed
INFO:     172.28.96.1:10113 - "GET / HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-6923' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     172.28.96.1:10113 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:4914 - "GET /web/app.js?v=20260327d HTTP/1.1" 200 OK
INFO:     172.28.96.1:4914 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:4914 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:10113 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO:     172.28.96.1:5903 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:3565 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:10113 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:10113 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(9) Discovered peer reflexive candidate Candidate(E8HKWSMFTW 1 udp 1853759231 172.28.96.1 50992 typ prflx)
INFO:aioice.ice:Connection(9) Check CandidatePair(('172.28.107.97', 43510) -> ('172.28.96.1', 50992)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(9) Check CandidatePair(('172.28.107.97', 43510) -> ('172.28.96.1', 50992)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(9) ICE completed
INFO:     172.28.96.1:13074 - "GET / HTTP/1.1" 200 OK
INFO:     connection closed
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-15396' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     connection closed
INFO:     172.28.96.1:13074 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:13074 - "GET /web/app.js?v=20260327d HTTP/1.1" 200 OK
INFO:     172.28.96.1:7285 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:7285 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:13646 - "GET /favicon.ico HTTP/1.1" 404 Not Found
INFO:     172.28.96.1:9569 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:2629 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:13646 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:13646 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(10) Discovered peer reflexive candidate Candidate(AbT1vCac8Y 1 udp 1853759231 172.28.96.1 62912 typ prflx)
INFO:aioice.ice:Connection(10) Check CandidatePair(('172.28.107.97', 43507) -> ('172.28.96.1', 62912)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(10) Check CandidatePair(('172.28.107.97', 43507) -> ('172.28.96.1', 62912)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(10) ICE completed
INFO:     172.28.96.1:6176 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
INFO:aioice.ice:Connection(10) Consent to send expired
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-16263' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     127.0.0.1:51958 - "GET /health HTTP/1.1" 200 OK
INFO:     Shutting down
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.
INFO:     Finished server process [401194]
INFO:     Started server process [404442]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on https://0.0.0.0:8018 (Press CTRL+C to quit)
INFO:     127.0.0.1:34264 - "GET /health HTTP/1.1" 200 OK
INFO:httpx:HTTP Request: POST https://api.deepseek.com/v1/chat/completions "HTTP/1.1 200 OK"
/home/xsl/code/product/.venv/lib/python3.12/site-packages/torch/cuda/__init__.py:180: UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 12090). Please update your GPU driver by downloading and installing a new version from the URL: http://www.nvidia.com/Download/index.aspx Alternatively, go to: https://pytorch.org to install a PyTorch version that has been compiled with your version of the CUDA driver. (Triggered internally at /pytorch/c10/cuda/CUDAFunctions.cpp:119.)
  return torch._C._cuda_getDeviceCount() > 0
INFO:httpx:HTTP Request: HEAD https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/config.json "HTTP/1.1 307 Temporary Redirect"
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
INFO:httpx:HTTP Request: HEAD https://huggingface.co/api/resolve-cache/models/hexgrad/Kokoro-82M/f3ff3571791e39611d31c381e3a41a3af07b4987/config.json "HTTP/1.1 200 OK"
/home/xsl/code/product/.venv/lib/python3.12/site-packages/torch/nn/modules/rnn.py:1013: UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.2 and num_layers=1
  super().__init__("LSTM", *args, **kwargs)
/home/xsl/code/product/.venv/lib/python3.12/site-packages/torch/nn/utils/weight_norm.py:144: FutureWarning: `torch.nn.utils.weight_norm` is deprecated in favor of `torch.nn.utils.parametrizations.weight_norm`.
  WeightNorm.apply(module, name, dim)
INFO:httpx:HTTP Request: HEAD https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/kokoro-v1_0.pth "HTTP/1.1 302 Found"
/home/xsl/code/product/.venv/lib/python3.12/site-packages/jieba/_compat.py:18: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.
  import pkg_resources
INFO:httpx:HTTP Request: HEAD https://huggingface.co/hexgrad/Kokoro-82M/resolve/main/voices/zf_xiaoxiao.pt "HTTP/1.1 302 Found"
Building prefix dict from the default dictionary ...
DEBUG:jieba:Building prefix dict from the default dictionary ...
Loading model from cache /tmp/jieba.cache
DEBUG:jieba:Loading model from cache /tmp/jieba.cache
Loading model cost 0.384 seconds.
DEBUG:jieba:Loading model cost 0.384 seconds.
Prefix dict has been built successfully.
DEBUG:jieba:Prefix dict has been built successfully.
WARNING: Defaulting repo_id to hexgrad/Kokoro-82M. Pass repo_id='hexgrad/Kokoro-82M' to suppress this warning.
INFO:     127.0.0.1:35522 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     172.28.96.1:6932 - "GET / HTTP/1.1" 200 OK
INFO:     172.28.96.1:6932 - "GET /web/style.css HTTP/1.1" 200 OK
INFO:     172.28.96.1:6932 - "GET /web/app.js?v=20260327d HTTP/1.1" 200 OK
INFO:     172.28.96.1:6932 - "GET /health HTTP/1.1" 200 OK
INFO:     172.28.96.1:6932 - "GET /events HTTP/1.1" 200 OK
INFO:     172.28.96.1:14179 - "WebSocket /ws/subtitles" [accepted]
INFO:     connection open
INFO:     172.28.96.1:12729 - "WebSocket /ws/animation" [accepted]
INFO:     connection open
INFO:     172.28.96.1:3368 - "GET /meta HTTP/1.1" 200 OK
INFO:     172.28.96.1:3368 - "POST /webrtc/offer HTTP/1.1" 200 OK
INFO:aioice.ice:Connection(0) Discovered peer reflexive candidate Candidate(jQ7HV4xKqV 1 udp 1853759231 172.28.96.1 52186 typ prflx)
INFO:aioice.ice:Connection(0) Check CandidatePair(('172.28.107.97', 45656) -> ('172.28.96.1', 52186)) State.WAITING -> State.IN_PROGRESS
INFO:aioice.ice:Connection(0) Check CandidatePair(('172.28.107.97', 45656) -> ('172.28.96.1', 52186)) State.IN_PROGRESS -> State.SUCCEEDED
INFO:aioice.ice:Connection(0) ICE completed
INFO:httpx:HTTP Request: POST https://api.deepseek.com/v1/chat/completions "HTTP/1.1 200 OK"
INFO:     172.28.96.1:8927 - "POST /chat/text HTTP/1.1" 200 OK
INFO:     connection closed
INFO:     connection closed
INFO:aioice.ice:Connection(0) Consent to send expired
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-26' coro=<_consume_user_audio() done, defined at /home/xsl/code/product/main.py:250> exception=MediaStreamError()>
Traceback (most recent call last):
  File "/home/xsl/code/product/main.py", line 253, in _consume_user_audio
    frame = await track.recv()
            ^^^^^^^^^^^^^^^^^^
  File "/home/xsl/code/product/.venv/lib/python3.12/site-packages/aiortc/rtcrtpreceiver.py", line 209, in recv
    raise MediaStreamError
aiortc.mediastreams.MediaStreamError
INFO:     Shutting down
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.
INFO:     Finished server process [404442]
