{
  "issues": [
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/310",
      "id": 3698701464,
      "node_id": "I_kwDONfvYSs7cdbSY",
      "number": 310,
      "title": "WLK uses large-v3 instead of large-v3-turbo",
      "user": {
        "login": "sunarowicz",
        "id": 55508515,
        "node_id": "MDQ6VXNlcjU1NTA4NTE1",
        "avatar_url": "https://avatars.githubusercontent.com/u/55508515?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sunarowicz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678237,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDXHQ",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/Awaiting%20Input",
          "name": "Awaiting Input",
          "color": "259CBD",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-05T12:00:00Z",
      "updated_at": "2025-12-05T15:28:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, first of all thank you for this excellent tool!\n\nThere seems to be one issue. If I run\n`wlk --host 0.0.0.0 --port 8800 --model-path /opt/AI/MODELS/whisper --model large-v3-turbo\n`\nit doesn't use `large-v3-turbo` model but `large-v3` instead if `large-v3` is present in the `/opt/AI/MODELS/whisper` directory too. I know it by the amount of occupied VRAM. If both models are in referenced directory, WLK takes approx. 10 GB of VRAM no matter which model from these two I set in command line. But if I set  `large-v3-turbo` to be used and remove `large-v3`  from the dir, WLK takes less han 6 GB of VRAM as it should for the turbo model.\n\n```\n> mamba list | grep whisper\n  faster-whisper            1.2.0        pypi_0              pypi       \n  whisperlivekit            0.2.16.dev0  pypi_0              pypi\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/310/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/307",
      "id": 3692898420,
      "node_id": "I_kwDONfvYSs7cHSh0",
      "number": 307,
      "title": "Docker build: how to install faster-whisper and nllw?",
      "user": {
        "login": "SlavikCA",
        "id": 6293679,
        "node_id": "MDQ6VXNlcjYyOTM2Nzk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6293679?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SlavikCA",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-04T04:51:20Z",
      "updated_at": "2025-12-04T05:59:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I tried this:\n\n```\nsudo docker build -t wlk216 . --build-arg EXTRAS=\"faster-whisper,nllw\"\n```\n\nBut it didn't install faster-whisper, neither  nllw\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/307/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/306",
      "id": 3692890699,
      "node_id": "I_kwDONfvYSs7cHQpL",
      "number": 306,
      "title": "Translation setting gets reset after each silence",
      "user": {
        "login": "SlavikCA",
        "id": 6293679,
        "node_id": "MDQ6VXNlcjYyOTM2Nzk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6293679?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SlavikCA",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7904269924,
          "node_id": "LA_kwDONfvYSs8AAAAB1yGWZA",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/bug",
          "name": "bug",
          "color": "d73a4a",
          "default": true,
          "description": "Something isn't working"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-04T04:47:45Z",
      "updated_at": "2025-12-05T15:30:09Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I built and started WLK on Ubuntu with Nvidia RTX 4090:\n\nsudo docker run  --rm -v /home/slavik/.cache:/root/.cache --gpus \"device=0\" --name wlk1 -p 8000:8000 wlk216 --model large-v3 --language ru --direct-english-translation\n\nI found, that when it starts working, - it works great.\nBut after first pause, after silence - it start outputting some numbers (timestamps?) and then sometimes switch to original language (RU):\n\n<img width=\"714\" height=\"410\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/210db4b6-0415-4c66-b84c-063f071569d9\" />\n\nIf I stop and start again - first seconds (until silence) it works great again.\n\nLogs:\n```\n=================================================\nFaster-Whisper not found. Consider installing faster-whisper for better performance: `pip install faster-whisper`\n==================================================\nINFO:     Started server process [1]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.\nINFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\nINFO:     192.168.0.241:52449 - \"WebSocket /asr\" [accepted]\nINFO:whisperlivekit.basic_server:WebSocket connection opened.\nINFO:     connection open\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=1.44s | + Silence of = 1.44s\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=1.34s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.15s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.15s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.17s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.16s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.16s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.16s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.15s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.17s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.18s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.19s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.19s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.07s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.07s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.10s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.10s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.10s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.01s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s | + Silence starting | last_end = 5.48 |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.54s | + Silence of = 0.54s | last_end = 6.14 |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.03s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.03s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.03s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.03s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.05s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.05s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.07s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.10s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.11s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.02s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.06s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.08s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.10s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.12s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.16s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.18s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.19s | + Silence starting | last_end = 9.2 |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=2.28s | + Silence of = 2.15s | last_end = 9.58 |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.14s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.16s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.17s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.17s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.20s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.21s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.21s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.23s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.23s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.25s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.15s |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.17s | + Silence starting | last_end = 13.32 |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.85s | + Silence of = 0.72s | last_end = 13.32 |\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.13s |\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/306/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/305",
      "id": 3687097927,
      "node_id": "I_kwDONfvYSs7bxKZH",
      "number": 305,
      "title": "Print Statements and Websocket issue",
      "user": {
        "login": "Tapestes",
        "id": 6743048,
        "node_id": "MDQ6VXNlcjY3NDMwNDg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6743048?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Tapestes",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-02T18:36:01Z",
      "updated_at": "2025-12-02T18:37:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Running into a problem and wondering if anyone can provide some insight.  I've copied the basic_server.py code and the index.html.  When I run uvicorn basic_server:app everything launches fine and I receive the following message:\n```\nINFO:     127.0.0.1:55017 - \"WebSocket /asr\" [accepted]\nINFO:     connection open\n```\n\nI receive no further messages until about 5 seconds later, at which time I get:\n`WARNING:whisperlivekit.ffmpeg_manager:FFmpeg read timeout.\n`\n\nI modified basic_server.py as follows:\n```\ndef main():\n    import uvicorn\n\n    uvicorn_kwargs = {\n        \"app\": \"whisperlivekit.basic_server:app\",\n        \"host\":args.host,\n        \"port\":args.port,\n        \"reload\": False,\n        \"log_level\": \"info\",\n        \"lifespan\": \"on\",\n    }\n    \n     uvicorn.run(**uvicorn_kwargs, log_config=None)\n\nif __name__ == \"__main__\":\n    main()\n```\n    \nWhen I do that, and run with `python3 basic_server.py` it connects and everything runs as expected.  However, it looks like the console output is captured by whisperkitlive and uvicorn.  So, I see a lot of messages like...\n\n```\nINFO:uvicorn.error:connection open\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=1.32s | + Silence of = 1.32s\n```\n\n... but none of my print statements make it through. I've tried many, many suggestions on the web and nothing seems to work to allow my print statements in the code to make it through.  For example, in the following, none of print statements show up in the console. Same if I use logger.info instead.  \n\n```\nasync def handle_websocket_results(websocket, results_generator):\n    # \"\"\"Consumes results from the audio processor and sends them via WebSocket.\"\"\"\n    try:\n        async for response in results_generator:\n            await websocket.send_json(response.to_dict())\n            print(\"Response\", response.to_dict(), flush=True)\n        # when the results_generator finishes it means all audio has been processed\n        print(\"Results generator finished. Sending 'ready_to_stop' to client.\", flush=True)\n        logger.debug(\"Results generator finished. Sending 'ready_to_stop' to client.\")\n        await websocket.send_json({\"type\": \"ready_to_stop\"})\n    except WebSocketDisconnect:\n        logger.info(\"WebSocket disconnected while handling results (client likely closed connection).\")\n    except Exception as e:\n        logger.exception(f\"Error in WebSocket results handler: {e}\")\n```\n\nFrom what I gather, part of the problem may be running with python3 basic_server.py instead of uvicorn basic_server:app.  But, even when I include the parameters set in main() above in the uvicorn command, I cannot get the websocket connection to hold on.\n\nIf folks have any insights, they'd be much appreciated. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/305/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/304",
      "id": 3683900577,
      "node_id": "I_kwDONfvYSs7bk9yh",
      "number": 304,
      "title": "Hello, do you support Ascend NPU",
      "user": {
        "login": "LHY0329",
        "id": 112064878,
        "node_id": "U_kgDOBq35bg",
        "avatar_url": "https://avatars.githubusercontent.com/u/112064878?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/LHY0329",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-12-02T03:53:22Z",
      "updated_at": "2025-12-02T03:53:22Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/304/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/302",
      "id": 3681121129,
      "node_id": "I_kwDONfvYSs7baXNp",
      "number": 302,
      "title": "Whisper Finetuning",
      "user": {
        "login": "paoloprandini",
        "id": 13137503,
        "node_id": "MDQ6VXNlcjEzMTM3NTAz",
        "avatar_url": "https://avatars.githubusercontent.com/u/13137503?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/paoloprandini",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7904269949,
          "node_id": "LA_kwDONfvYSs8AAAAB1yGWfQ",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/question",
          "name": "question",
          "color": "d876e3",
          "default": true,
          "description": "Further information is requested"
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-12-01T13:52:27Z",
      "updated_at": "2025-12-05T15:31:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Does anyone know if I can use this approach:\nhttps://github.com/farisalasmary/finetune-whisper-pl\nwith WhisperLiveKit?\nThanks\nPaolo",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/302/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/296",
      "id": 3673885611,
      "node_id": "I_kwDONfvYSs7a-wur",
      "number": 296,
      "title": "TypeError in tokens_alignment.add_translation: 'NoneType' + 'str' when translation is enabled",
      "user": {
        "login": "teenjjj",
        "id": 109968465,
        "node_id": "U_kgDOBo38UQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/109968465?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/teenjjj",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-28T07:19:41Z",
      "updated_at": "2025-11-28T07:59:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, thanks for the great project.\nI pulled the latest source code and encountered an exception when using translation(I ran by Docker):\n```\nWARNING:whisperlivekit.audio_processor:Exception in results_formatter. Traceback:\nTraceback (most recent call last):\n  File \"whisperlivekit/audio_processor.py\", line 405, in results_formatter\n    lines, buffer_diarization_text, buffer_translation_text = self.tokens_alignment.get_lines(\n  File \"whisperlivekit/tokens_alignment.py\", line 178, in get_lines\n    [self.add_translation(line) for line in lines if not type(line) == Silence]\n  File \"whisperlivekit/tokens_alignment.py\", line 46, in add_translation\n    line.translation += ts.text + (self.sep if ts.text else '')\nTypeError: unsupported operand type(s) for +: 'NoneType' and 'str'\n\n```\nIt seems that line.translation is sometimes initialized as None, which causes the concatenation to fail.\n\nI applied a temporary fix by explicitly initializing segment.translation when it is None:\n\n```\ndef add_translation(self, segment: Segment) -> None:\n    \"\"\"Append translated text segments that overlap with a segment.\"\"\"\n    for ts in self.all_translation_segments:\n        if ts.is_within(segment):\n            # Initialize translation if it's None\n            if segment.translation is None:\n                segment.translation = \"\"\n            segment.translation += ts.text + (self.sep if ts.text else '')\n        elif segment.translation:\n            break\n```\n\nAfter this modification, the error no longer appears and translation output works normally.\n\nIs this the correct expected behavior?\nOr should Segment.translation be initialized elsewhere in the pipeline?\n\nHappy to provide more details if needed. Thanks!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/296/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/293",
      "id": 3670126136,
      "node_id": "I_kwDONfvYSs7awa44",
      "number": 293,
      "title": "gpu",
      "user": {
        "login": "m08594589-source",
        "id": 231212156,
        "node_id": "U_kgDODcgEfA",
        "avatar_url": "https://avatars.githubusercontent.com/u/231212156?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/m08594589-source",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678237,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDXHQ",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/Awaiting%20Input",
          "name": "Awaiting Input",
          "color": "259CBD",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-27T07:04:06Z",
      "updated_at": "2025-11-28T16:33:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "能不能使用多张gpu？",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/293/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/292",
      "id": 3669617611,
      "node_id": "I_kwDONfvYSs7auevL",
      "number": 292,
      "title": "ERROR:whisperlivekit.simul_whisper.backend:SimulStreaming processing error",
      "user": {
        "login": "yanrbts",
        "id": 39860189,
        "node_id": "MDQ6VXNlcjM5ODYwMTg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/39860189?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanrbts",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678237,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDXHQ",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/Awaiting%20Input",
          "name": "Awaiting Input",
          "color": "259CBD",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-27T02:16:49Z",
      "updated_at": "2025-11-28T17:15:33Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "INFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nERROR:whisperlivekit.simul_whisper.backend:SimulStreaming processing error: The size of tensor a (56) must match the size of tensor b (4) at non-singleton dimension 1\nTraceback (most recent call last):\n  File \"/home/yanruibing/src/WhisperLiveKit/whisperlivekit/simul_whisper/backend.py\", line 114, in process_iter\n    timestamped_words = self.model.infer(is_last=is_last)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/yanruibing/src/WhisperLiveKit/venv/lib/python3.12/site-packages/torch/utils/_contextlib.py\", line 120, in decorate_context\n    return func(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/yanruibing/src/WhisperLiveKit/whisperlivekit/simul_whisper/simul_whisper.py\", line 496, in infer\n    result = self.logits(tokens_for_logits, encoder_feature, return_cross_attn=True)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/yanruibing/src/WhisperLiveKit/whisperlivekit/simul_whisper/simul_whisper.py\", line 261, in logits\n    return self.state.inference.logits(\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/yanruibing/src/WhisperLiveKit/whisperlivekit/simul_whisper/beam.py\", line 28, in logits\n    return self.model.decoder(\n           ^^^^^^^^^^^^^^^^^^^\n  File \"/home/yanruibing/src/WhisperLiveKit/venv/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1775, in _wrapped_call_impl\n    return self._call_impl(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/yanruibing/src/WhisperLiveKit/venv/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1786, in _call_impl\n    return forward_call(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/yanruibing/src/WhisperLiveKit/whisperlivekit/whisper/model.py\", line 314, in forward\n    self.token_embedding(x)\nRuntimeError: The size of tensor a (56) must match the size of tensor b (4) at non-singleton dimension 1",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/292/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/291",
      "id": 3668153977,
      "node_id": "I_kwDONfvYSs7ao5Z5",
      "number": 291,
      "title": "WARNING:whisperlivekit.simul_whisper.simul_whisper:[UTF-8 Fix] Holding 1616 incomplete tokens for next chunk:",
      "user": {
        "login": "yanrbts",
        "id": 39860189,
        "node_id": "MDQ6VXNlcjM5ODYwMTg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/39860189?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yanrbts",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678980,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDaBA",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/To%20Be%20Analyzed",
          "name": "To Be Analyzed",
          "color": "E5F250",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-11-26T16:08:26Z",
      "updated_at": "2025-11-28T16:32:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "WARNING:whisperlivekit.simul_whisper.simul_whisper:[UTF-8 Fix] Holding 1616 incomplete tokens for next chunk: [2166, 35102, 14852, 3581, 44297, 6852, 245, 5562, 8090, 11100, 10440, 8090, 11100, 25093, 12979, 9636, 224, 25040, 12026, 248, 5702, 109, 21381, 28531, 10178, 119, 5363, 254, 8897, 236, 12009, 6912, 8833, 7626, 8975, 109, 9497, 1960, 5648, 101, 8350, 4263, 228, 8861, 35023, 5157, 4511, 23095, 5157, 18464, 116, 31962, 1486, 246, 12467, 5916, 8661, 6336, 114, 49873, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 25040, 12026, 248, 5702, 109, 21381, 28531, 10178, 119, 5363, 254, 8897, 236, 12009, 6912, 8833, 7626, 8975, 109, 9497, 1960, 5648, 101, 8350, 4263, 228, 8861, 35023, 5157, 4511, 23095, 5157, 18464, 116, 31962, 1486, 246, 12467, 5916, 8661, 6336, 114, 49873, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 5702, 109, 21381, 28531, 10178, 119, 5363, 254, 8897, 236, 12009, 6912, 31364, 5233, 255, 1546, 8833, 7626, 8975, 109, 9497, 1960, 5648, 101, 8350, 4263, 228, 8861, 35023, 5157, 4511, 23095, 5157, 18464, 116, 31962, 1486, 246, 12467, 5916, 8661, 6336, 114, 49873, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 8975, 109, 9497, 1960, 5648, 101, 8350, 4263, 228, 8861, 35023, 5157, 4511, 23095, 5157, 18464, 116, 31962, 1486, 246, 12467, 5916, 8661, 6336, 114, 49873, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 8975, 109, 9497, 1960, 5648, 101, 8350, 4263, 228, 8861, 35023, 5157, 4511, 23095, 5157, 18464, 116, 31962, 1486, 246, 12467, 5916, 8661, 6336, 114, 49873, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 39861, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 18464, 116, 31962, 1486, 246, 12467, 5916, 8661, 6336, 114, 49873, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 18464, 116, 31962, 1486, 246, 12467, 5916, 8661, 6336, 114, 49873, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 39861, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 4184, 29111, 12026, 121, 5823, 2129, 234, 9249, 5935, 239, 6852, 242, 5702, 102, 44059, 8395, 23664, 9487, 19550, 21596, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 25093, 44332, 240, 29485, 19550, 10415, 123, 15759, 5676, 247, 1546, 19550, 11279, 1541, 44297, 16853, 99, 19550, 21596, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 39861, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 1546, 22942, 1541, 4184, 29111, 27905, 29993, 13992, 2289, 8897, 230, 2437, 97, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 22942, 1541, 24043, 30124, 12467, 12467, 14128, 9574, 13547, 14852, 1960, 40205, 38114, 106, 24726, 30276, 11279, 13557, 34961, 12467, 23197, 2930, 254, 17463, 16716, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 22942, 1541, 24043, 30124, 12467, 12467, 14128, 9574, 13547, 14852, 1960, 40205, 3416, 123, 7422, 97, 12107, 4275, 8090, 1541, 9175, 16086, 4035, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 1546, 22942, 1541, 24043, 30124, 12467, 1546, 12467, 14128, 9574, 13547, 14852, 1960, 40205, 3416, 123, 7422, 97, 12107, 4275, 8090, 1541, 9175, 16086, 4035, 32718, 20708, 5000, 12467, 1546, 5562, 2257, 8945, 2257, 13547, 1546, 2930, 254, 17463, 16716, 4184, 29111, 14852, 8225, 11957, 107, 20708, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 22942, 1541, 24043, 30124, 12467, 12467, 14128, 9574, 13547, 14852, 1960, 40205, 3416, 123, 7422, 97, 12107, 4275, 8090, 1541, 9175, 16086, 4035, 32718, 20708, 5000, 5562, 2257, 8945, 2257, 13547, 1546, 8713, 11706, 34783, 228, 7781, 2257, 5935, 107, 1960, 5322, 239, 1960, 19095, 244, 1960, 13557, 34961, 1960, 6852, 240, 10115, 251, 1546, 7360, 114, 5087, 123, 23359, 25040, 6240, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 22942, 1541, 24043, 30124, 12467, 12467, 14128, 9574, 13547, 14852, 1960, 40205, 3416, 123, 7422, 97, 12107, 4275, 8090, 1541, 9175, 16086, 4035, 32718, 20708, 5000, 5562, 2257, 8945, 2257, 13547, 1546, 8713, 11706, 23414, 39752, 39752, 10439, 2930, 254, 25040, 1546, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 22942, 1541, 24043, 30124, 12467, 12467, 14128, 9574, 13547, 14852, 1960, 40205, 3416, 123, 7422, 97, 12107, 4275, 8090, 1541, 9175, 16086, 4035, 32718, 20708, 5000, 5562, 2257, 8945, 2257, 13547, 1546, 8713, 11706, 23414, 39752, 39752, 10439, 2930, 254, 25040, 1546, 1787, 226, 47885, 23034, 11706, 18464, 116, 31962, 1486, 246, 4184, 12949, 22933, 14852, 4275, 12531, 108, 46531, 1546, 4184, 5348, 6939, 7911, 6890, 46514, 2129, 246, 2289, 1541, 2930, 254, 17463, 16716, 13557, 34961, 12467, 22942, 1541, 24043, 30124, 12467, 12467, 14128, 9574, 13547, 14852, 1960, 40205, 3416, 123, 7422, 97, 12107, 4275, 8090, 1541, 9175, 16086, 4035, 32718, 20708, 5000, 5562, 2257, 8945, 2257, 13547, 1546, 8713, 11706, 23414, 39752, 39752, 10439, 2930, 254, 25040, 1546, 1787, 226, 47885, 23034, 11706, 18464, 116, 31962, 1486, 246, 4184, 12949, 22933, 14852, 4275, 12531, 108, 46531, 1546, 4184, 29111, 1541, 13992, 2289, 28053, 10415, 236] ，\n\n\ni use command is \" wlk --model large-v3-turbo --language zh-CN -l INFO --warmup-file ./jfk.wav\"",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/291/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/286",
      "id": 3661993885,
      "node_id": "I_kwDONfvYSs7aRZed",
      "number": 286,
      "title": "Could not locate cudnn_ops64_9.dll. Please make sure it is in your library path!",
      "user": {
        "login": "kou1584423647",
        "id": 59196686,
        "node_id": "MDQ6VXNlcjU5MTk2Njg2",
        "avatar_url": "https://avatars.githubusercontent.com/u/59196686?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kou1584423647",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678237,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDXHQ",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/Awaiting%20Input",
          "name": "Awaiting Input",
          "color": "259CBD",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-25T08:27:12Z",
      "updated_at": "2025-11-28T17:16:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "(WhisperLiveKit) PS F:\\whisperlivekit\\WhisperLiveKit-main> wlk --model medium --language zh --backend faster-whisper --diarization\nE:\\conda\\envs\\WhisperLiveKit\\lib\\site-packages\\ctranslate2\\__init__.py:8: 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.\n  import pkg_resources\nINFO:     Started server process [19404]\nINFO:     Waiting for application startup.\nSimulstreaming will use Faster Whisper for the encoder.\nCould not locate cudnn_ops64_9.dll. Please make sure it is in your library path!\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/286/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/283",
      "id": 3659537486,
      "node_id": "I_kwDONfvYSs7aIBxO",
      "number": 283,
      "title": "WLK with SimulStreaming as Backend has strong performance issues after ~1:30mins",
      "user": {
        "login": "AeneasChristodoulou",
        "id": 81275325,
        "node_id": "MDQ6VXNlcjgxMjc1MzI1",
        "avatar_url": "https://avatars.githubusercontent.com/u/81275325?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AeneasChristodoulou",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678980,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDaBA",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/To%20Be%20Analyzed",
          "name": "To Be Analyzed",
          "color": "E5F250",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-11-24T16:01:55Z",
      "updated_at": "2025-12-02T07:53:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hey there,\nI am currently testing WLK to see if it would make sense for us to use it. We're looking for something that can assist hearing impaired peers participate better in (video)conferences.\n\nI have a workstation with 64GBs of RAM, an RTX 4000 Ada (Laptop) GPU with 12GBs of VRAM and a 14900HX as CPU. Unfortunately, we're forced to use WIndows in Production for Clients. We currently plan to run it on-client directly. \n\nI have observed that, no matter if it's large-v3-turbo oder tiny, the VRAM-Usage with simulstreaming goes from steady 4.5-5GBs up until around 1:20mins right up to 11-11.5GBs within 20 seconds. \n\nWhen I use localArrangment instead of simulstreaming with the default settings, VRAM Usage is stable, there is a bit more GPU Utilization, the total speed is lower though. \n\nWith simulstreaming the lag before the VRAM Spikes is 0.2-0.5s as indicated by the UI. When the VRAM is filled, it just get's worse and worse. \n\nFor localArrangement, lag is constant, but usually above 1s. \n\n\nAny Ideas on how to improve this? We're trying to get realtime transcritpion with the best possible accuracy. We want to run it on client.\n\nCurrently I am working with the following command:\n`wlk --model medium --language de --diarization --diarization-backend sortformer --backend-policy simulstreaming --beams 1 --frame-threshold 20 --audio-max-len 10 --preload-model-count 1 --disable-punctuation-split`\n\nHowever, the same issue occurs with the following command too:\n`wlk --model medium --language de  --backend-policy simulstreaming --beams 1 --frame-threshold 20 --audio-max-len 10 --preload-model-count 1 -l DEBUG`\n\n(Turning off diarization didn't help too much, and it's something that is important to my colleague)\n\n\n\nThanks in advance and thank all of you for the work you've invested in this!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/283/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/277",
      "id": 3637044915,
      "node_id": "I_kwDONfvYSs7YyOaz",
      "number": 277,
      "title": "Question : Is per-session language configuration possible? (multi-engine architecture)",
      "user": {
        "login": "YeonjunNotFR",
        "id": 44648608,
        "node_id": "MDQ6VXNlcjQ0NjQ4NjA4",
        "avatar_url": "https://avatars.githubusercontent.com/u/44648608?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/YeonjunNotFR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7904269934,
          "node_id": "LA_kwDONfvYSs8AAAAB1yGWbg",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/enhancement",
          "name": "enhancement",
          "color": "a2eeef",
          "default": true,
          "description": "New feature or request"
        },
        "1": {
          "id": 7935678237,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDXHQ",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/Awaiting%20Input",
          "name": "Awaiting Input",
          "color": "259CBD",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-11-18T09:24:58Z",
      "updated_at": "2025-11-28T17:24:35Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\nHi, first of all, thank you for building and open-sourcing WhisperLiveKit.  \nI’m using it as a core component of my  service, and it has been extremely helpful.\n\nI have a question regarding the current architecture and a possible enhancement.\n\n---\n\n## Need for per-session `language` / `target-language` configuration\n\nFrom what I’ve understood, WhisperLiveKit runs with:\n- **one transcription engine**, and  \n- **one translation engine**,  \n\nand all WebSocket sessions access this single pair of engines.\n\nThis leads to a limitation:\n\n- For global services, **each user session must be able to configure its own transcription language and target translation language**.\n- While transcription supports `auto`, its accuracy is clearly lower than explicitly providing a language.\n- Translation also varies per user session.\n\nBecause a single shared engine is used across all sessions, it seems **impossible to configure languages on a per-session basis** with the current architecture.\n\nCould you confirm if my understanding is correct?\n\n---\n\n## Proposal: Initialize multiple engines based on language lists at server startup\n\nWhat I’m considering is the following:\n\n1. When the server starts, it receives configuration such as:  \n   - `transcription-language-list`  \n   - `translation-language-list`\n2. For each language in these lists, the server initializes:  \n   - a separate Transcription Engine  \n   - a separate Translation Engine\n3. When a WebSocket client connects and sends  \n   - `language`  \n   - `target-language`,  \n   the session is mapped to the corresponding engine instance for that language.\n\n### My core questions:\n\n- Is this multi-engine approach **feasible within WhisperLiveKit’s current architecture**?\n- Would this direction conflict with any internal design assumptions?\n- How much implementation effort do you estimate for such a change?\n- If the design is reasonable and doesn’t introduce major architectural issues, I’m willing to **contribute the feature myself**.\n\n---\n\n## Why I’m asking\n\nWhisperLiveKit is a crucial part of my service.\nFor real-world global use cases, per-session language configuration becomes unavoidable, and I want to ensure I’m approaching this in a way that aligns with WhisperLiveKit’s design philosophy.\n\n**You are the person who understands this project better than anyone else, and I would really appreciate your insight and advice.  \nYour library is a core foundation of my service, and I have high expectations for it.  \nThank you for creating such an excellent project.**\n\n@QuentinFuxa ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/277/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/275",
      "id": 3631511631,
      "node_id": "I_kwDONfvYSs7YdHhP",
      "number": 275,
      "title": "After running for more than ten minutes, the GPU memory is full.",
      "user": {
        "login": "usefordev",
        "id": 170817841,
        "node_id": "U_kgDOCi55MQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/170817841?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/usefordev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-11-17T02:46:35Z",
      "updated_at": "2025-11-25T11:37:32Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I run the command below:\n**python whisperlivekit/basic_server.py --host 0.0.0.0 --port 8001 --model medium --model-path /root/.cache/whisper/medium.pt --backend whisper --backend-policy simulstreaming --language zh**\n\nAfter running for more than ten minutes, the GPU memory is full. Has anyone encountered the same problem and provided a solution?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/275/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/271",
      "id": 3593739201,
      "node_id": "I_kwDONfvYSs7WNBvB",
      "number": 271,
      "title": "Cannot load symbol cudnnCreateTensorDescriptor",
      "user": {
        "login": "JoeyOwens39",
        "id": 179666308,
        "node_id": "U_kgDOCrV9hA",
        "avatar_url": "https://avatars.githubusercontent.com/u/179666308?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/JoeyOwens39",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-11-06T03:23:02Z",
      "updated_at": "2025-11-09T22:26:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Im using CachyOS linux with GNOME 49, not sure if i missed a step or did something wrong, using a python virtual environment \n\n\ntranscribe ❯ whisperlivekit-server --host 0.0.0.0 --port 80 --model small.en\nINFO:     Started server process [114576]\nINFO:     Waiting for application startup.\nSimulstreaming will use Faster Whisper for the encoder.\nUnable to load any of {libcudnn_ops.so.9.1.0, libcudnn_ops.so.9.1, libcudnn_ops.so.9, libcudnn_ops.so}\nInvalid handle. Cannot load symbol cudnnCreateTensorDescriptor\nfish: Job 1, 'whisperlivekit-server --host 0.…' terminated by signal SIGABRT (Abort)\n\n<img width=\"1696\" height=\"542\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/66e3b3d3-0e23-4eea-82c9-a8cda5359500\" />\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/271/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/268",
      "id": 3554731583,
      "node_id": "I_kwDONfvYSs7T4OY_",
      "number": 268,
      "title": "Questions about the “New API (Under Development)",
      "user": {
        "login": "YeonjunNotFR",
        "id": 44648608,
        "node_id": "MDQ6VXNlcjQ0NjQ4NjA4",
        "avatar_url": "https://avatars.githubusercontent.com/u/44648608?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/YeonjunNotFR",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-27T01:45:25Z",
      "updated_at": "2025-11-12T13:10:34Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi @QuentinFuxa  — first off, thank you so much for maintaining this great open-source project.\nI’m an individual developer using your library, and I really appreciate the time and care you put into it. 🙏\n\nI’m integrating the new API and want to confirm a few details so I can implement the client/server logic correctly. Could you please clarify the points below?\n\n---\n\n## 1) Update & Merge Rules\n\n**Q1. `segment.text` update shape**\n\n* Does each update send **only newly confirmed additional text** to be appended to what I already have?\n* Or can an update sometimes resend the **entire current text** for that `segment.id` (i.e., full replace)?\n\n  * If full replace can occur, should clients treat the **latest value** as authoritative?\n\n**Q2. Multiple entries with the same `segment.id` within a single update**\n\n* Can the same `segment.id` appear **more than once** in the *same* `segments` array?\n\n  * If yes:\n\n    * Is the array order the intended processing order?\n    * Should clients **apply all items** for that id in order (accumulate), or **prefer only the last occurrence**?\n    * Can duplicate content be repeated for the same id (and should clients de-duplicate)?\n\n---\n\n## 2) Silence Segments\n\n**Q3. Delivery shape for silence (`speaker == -2`)**\n\n* Is silence always delivered as a **new segment with a new id** appended to the list?\n* Or can silence arrive as an **update to an existing id**?\n\n**Q4. Strength of “end of utterance” signal**\n\n* May I treat silence as a **strong end-of-utterance signal**, even if `buffer.transcription` is not empty yet?\n* If recommended, is there a **short gate (e.g., ~300 ms)** you suggest before committing, to allow late confirmations?\n\n---\n\n## 3) Completion / Finalization Signals\n\n**Q5. Explicit per-segment completion signal**\n\n* Is there any **explicit field/event** that means “this `segment.id` will not receive any more confirmed text”?\n\n  * If yes, which field/value?\n\n**Q6. Recommended criteria to decide “final” (can be combined)**\n\n* (a) `buffer.transcription == \"\"`\n* (b) **Silence** segment received (`speaker == -2`)\n* (c) **Idle timeout**: What value/range do you recommend (e.g., 600–1200 ms)?\n* (d) Any **other explicit field**?\n\n---\n\n## 4) Duplicates / Retransmissions\n\n**Q7. Duplicate updates**\n\n* Can identical content be resent for the same `segment.id`?\n\n  * If yes, do you recommend **id-level de-duplication** on the client?\n\n---\n\n## My Intended Handling (please confirm)\n\n1. I **keep a map keyed by `segment.id`** on both client and server.\n\n   * For `text`: on each update I **append newly confirmed text to the previously confirmed text**.\n\n     * If an update resends the **full current text**, I treat that latest value as authoritative.\n   * For `buffer.*`: I treat it as **temporary display data**, overwriting it on each update and expecting it to change in the next update.\n   * I **re-render/broadcast only segments that actually changed**.\n\n2. Each update may contain **multiple segments**.\n\n   * I **merge all segments in the batch into state** (and, if the same id appears multiple times, I process them in the given order unless advised otherwise).\n   * For real-time subtitle UX, I **broadcast only the last non-silence segment** in that batch to the UI.\n   * If the batch contains any **silence** item, I treat it as a **commit trigger** (combined with my buffer/idle policy).\n\n3. I mark a segment **final** (and persist to DB) when **any** of these holds:\n\n   * `buffer.transcription` becomes **empty**, or\n   * **Silence** arrives and a short gate (~300 ms) passes with no further change, or\n   * **Idle timeout** elapses (~800 ms) with no further change.\n     When finalizing, I **store only the finalized text** for that `segment.id` and **clear its in-memory state**.\n\nIf any of the above differs from the intended API semantics, please let me know what to adjust.\nThanks again for your work on the project!\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/268/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/265",
      "id": 3532285392,
      "node_id": "I_kwDONfvYSs7SimXQ",
      "number": 265,
      "title": "tensor eeror in localhost",
      "user": {
        "login": "Ssunbell",
        "id": 97590480,
        "node_id": "U_kgDOBdEc0A",
        "avatar_url": "https://avatars.githubusercontent.com/u/97590480?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Ssunbell",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-10-20T12:38:03Z",
      "updated_at": "2025-12-02T02:30:50Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "ERROR:whisperlivekit.simul_whisper.backend:SimulStreaming processing error: The size of tensor a (112) must match the size of tensor b (11) at non-singleton dimension 3\nTraceback (most recent call last):\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/backend.py\", line 110, in process_iter\n    timestamped_words = self.model.infer(is_last=is_last)\n                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/torch/utils/_contextlib.py\", line 120, in decorate_context\n    return func(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/simul_whisper.py\", line 474, in infer\n    logits = self.logits(tokens_for_logits, encoder_feature) # B, len(tokens), token dict size\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/simul_whisper.py\", line 249, in logits\n    logit = self.inference.logits(tokens, audio_features)\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/beam.py\", line 17, in logits\n    return self.model.decoder(tokens, audio_features, kv_cache=self.kv_cache)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1775, in _wrapped_call_impl\n    return self._call_impl(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1786, in _call_impl\n    return forward_call(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/whisper/model.py\", line 245, in forward\n    x = block(x, xa, mask=self.mask, kv_cache=kv_cache)\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1775, in _wrapped_call_impl\n    return self._call_impl(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1786, in _call_impl\n    return forward_call(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/whisper/model.py\", line 170, in forward\n    x = x + self.attn(self.attn_ln(x), mask=mask, kv_cache=kv_cache)[0]\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1775, in _wrapped_call_impl\n    return self._call_impl(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1786, in _call_impl\n    return forward_call(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/whisper/model.py\", line 114, in forward\n    wv, qk = self.qkv_attention(q, k, v, mask)\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/lucas/miniconda3/envs/lucas/lib/python3.11/site-packages/whisperlivekit/simul_whisper/whisper/model.py\", line 135, in qkv_attention\n    qk = qk + mask[:n_ctx, :n_ctx]\n         ~~~^~~~~~~~~~~~~~~~~~~~~~\nRuntimeError: The size of tensor a (112) must match the size of tensor b (11) at non-singleton dimension 3\n\n```\n$ whisperlivekit-server --model base --language ko\n```\n\nmacbook air m4 apple silicon\nrequrement.txt\n```\nPackage                      Version\n---------------------------- --------------\naiohappyeyeballs             2.6.1\naiohttp                      3.12.15\naiosignal                    1.4.0\nannotated-types              0.7.0\nanyio                        4.10.0\nappnope                      0.1.4\nargon2-cffi                  25.1.0\nargon2-cffi-bindings         25.1.0\narrow                        1.3.0\nasttokens                    3.0.0\nasync-lru                    2.0.5\nattrs                        25.3.0\naudioread                    3.0.1\nav                           16.0.1\nbabel                        2.17.0\nbeautifulsoup4               4.13.5\nbleach                       6.2.0\ncachetools                   6.2.0\ncertifi                      2025.8.3\ncffi                         2.0.0\ncharset-normalizer           3.4.3\nclick                        8.3.0\ncoloredlogs                  15.0.1\ncomm                         0.2.3\ncssselect                    1.3.0\nctranslate2                  4.6.0\ndataclasses-json             0.6.7\ndatasets                     4.2.0\ndebugpy                      1.8.16\ndecorator                    5.2.1\ndefusedxml                   0.7.1\nDeprecated                   1.2.18\ndill                         0.4.0\ndirtyjson                    1.0.8\ndistro                       1.9.0\ndotenv                       0.9.9\nemoji                        2.15.0\nexecuting                    2.2.1\nfastapi                      0.119.1\nfaster-whisper               1.2.0\nfastjsonschema               2.21.2\nfeedfinder2                  0.0.4\nfeedparser                   6.0.12\nffmpeg-python                0.2.0\nfilelock                     3.19.1\nfiletype                     1.2.0\nflatbuffers                  25.9.23\nfqdn                         1.5.1\nfrozenlist                   1.7.0\nfsspec                       2025.9.0\nfuture                       1.0.0\ngoogle-ai-generativelanguage 0.8.0\ngoogle-api-core              2.26.0\ngoogle-auth                  2.41.0\ngoogle-genai                 1.39.1\ngoogle-play-scraper          1.2.7\ngoogleapis-common-protos     1.70.0\ngreenlet                     3.2.4\ngrpcio                       1.75.1\ngrpcio-status                1.75.1\nh11                          0.16.0\nhf-xet                       1.1.10\nhttpcore                     1.0.9\nhttpx                        0.28.1\nhttpx-sse                    0.4.1\nhuggingface-hub              0.35.3\nhumanfriendly                10.0\nidna                         3.10\nimageio                      2.37.0\nimageio-ffmpeg               0.6.0\niniconfig                    2.1.0\nipykernel                    6.30.1\nipython                      8.37.0\nipython_pygments_lexers      1.1.1\nipywidgets                   8.1.7\nisoduration                  20.11.0\njedi                         0.19.2\njieba3k                      0.35.1\nJinja2                       3.1.6\njiter                        0.10.0\njoblib                       1.5.2\njson5                        0.12.1\njsonpatch                    1.33\njsonpointer                  3.0.0\njsonschema                   4.25.1\njsonschema-specifications    2025.9.1\njupyter                      1.1.1\njupyter_client               8.6.3\njupyter-console              6.6.3\njupyter_core                 5.8.1\njupyter-events               0.12.0\njupyter-lsp                  2.3.0\njupyter_server               2.17.0\njupyter_server_terminals     0.5.3\njupyterlab                   4.4.7\njupyterlab_pygments          0.3.0\njupyterlab_server            2.27.3\njupyterlab_widgets           3.0.15\nlangchain                    1.0.0\nlangchain-community          0.3.30\nlangchain-core               1.0.0\nlangchain-google-genai       3.0.0\nlangchain-openai             1.0.0\nlangchain-text-splitters     0.3.11\nlanggraph                    1.0.0\nlanggraph-checkpoint         2.1.1\nlanggraph-prebuilt           1.0.0\nlanggraph-sdk                0.2.9\nlangsmith                    0.4.31\nlark                         1.2.2\nlazy_loader                  0.4\nlibrosa                      0.11.0\nllama-index                  0.9.40\nllvmlite                     0.45.1\nlxml                         6.0.2\nlxml_html_clean              0.4.3\nMarkupSafe                   3.0.2\nmarshmallow                  3.26.1\nmatplotlib-inline            0.1.7\nmistune                      3.1.4\nmlx                          0.29.3\nmlx-metal                    0.29.3\nmlx-whisper                  0.4.3\nmore-itertools               10.8.0\nmoviepy                      2.2.1\nmpmath                       1.3.0\nmsgpack                      1.1.2\nmultidict                    6.6.4\nmultiprocess                 0.70.16\nmypy_extensions              1.1.0\nnbclient                     0.10.2\nnbconvert                    7.16.6\nnbformat                     5.10.4\nnest-asyncio                 1.6.0\nnetworkx                     3.5\nnewspaper3k                  0.2.8\nnltk                         3.9.2\nnotebook                     7.4.5\nnotebook_shim                0.2.4\nnotion-client                2.5.0\nnumba                        0.62.1\nnumpy                        2.3.3\nonnxruntime                  1.23.1\nopenai                       1.109.1\norjson                       3.11.3\normsgpack                    1.10.0\noverrides                    7.7.0\npackaging                    25.0\npandas                       2.3.2\npandocfilters                1.5.1\nparso                        0.8.5\npexpect                      4.9.0\npillow                       11.3.0\npip                          25.2\nplatformdirs                 4.4.0\nplaywright                   1.55.0\npluggy                       1.6.0\npooch                        1.8.2\nproglog                      0.1.12\nprometheus_client            0.22.1\nprompt_toolkit               3.0.52\npropcache                    0.3.2\nproto-plus                   1.26.1\nprotobuf                     6.33.0\npsutil                       7.0.0\nptyprocess                   0.7.0\npure_eval                    0.2.3\npyarrow                      21.0.0\npyasn1                       0.6.1\npyasn1_modules               0.4.2\npycparser                    2.23\npydantic                     2.11.7\npydantic_core                2.33.2\npydantic-settings            2.11.0\npyee                         13.0.0\nPygments                     2.19.2\npypdf                        4.3.1\npytest                       8.4.2\npytest-base-url              2.1.0\npytest-playwright            0.7.1\npython-dateutil              2.9.0.post0\npython-docx                  1.2.0\npython-dotenv                1.1.1\npython-json-logger           3.3.0\npython-slugify               8.0.4\npytz                         2025.2\nPyYAML                       6.0.2\npyzmq                        27.1.0\nreferencing                  0.36.2\nregex                        2025.9.18\nrequests                     2.32.5\nrequests-file                3.0.0\nrequests-toolbelt            1.0.0\nrfc3339-validator            0.1.4\nrfc3986-validator            0.1.1\nrfc3987-syntax               1.1.0\nrpds-py                      0.27.1\nrsa                          4.9.1\nsafetensors                  0.6.2\nscikit-learn                 1.7.2\nscipy                        1.16.2\nSend2Trash                   1.8.3\nsetuptools                   78.1.1\nsgmllib3k                    1.0.0\nsix                          1.17.0\nslack_sdk                    3.36.0\nsniffio                      1.3.1\nsoundfile                    0.13.1\nsoupsieve                    2.8\nsoxr                         1.0.0\nSQLAlchemy                   2.0.43\nstack-data                   0.6.3\nstarlette                    0.48.0\nsympy                        1.14.0\ntabulate                     0.9.0\ntenacity                     8.5.0\nterminado                    0.18.1\ntext-unidecode               1.3\nthreadpoolctl                3.6.0\ntiktoken                     0.12.0\ntinycss2                     1.4.0\ntinysegmenter                0.3\ntldextract                   5.3.0\ntokenizers                   0.22.1\ntorch                        2.9.0\ntorchaudio                   2.9.0\ntornado                      6.5.2\ntqdm                         4.67.1\ntraitlets                    5.14.3\ntransformers                 4.57.1\ntypes-python-dateutil        2.9.0.20250822\ntyping_extensions            4.15.0\ntyping-inspect               0.9.0\ntyping-inspection            0.4.1\ntzdata                       2025.2\nuri-template                 1.3.0\nurllib3                      2.5.0\nuvicorn                      0.38.0\nwcwidth                      0.2.13\nwebcolors                    24.11.1\nwebencodings                 0.5.1\nwebsocket-client             1.8.0\nwebsockets                   15.0.1\nwheel                        0.45.1\nwhisperlivekit               0.2.12\nwidgetsnbextension           4.0.14\nwrapt                        1.17.3\nxxhash                       3.5.0\nyarl                         1.20.1\nzstandard                    0.25.0\n\n```\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/265/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/264",
      "id": 3531661592,
      "node_id": "I_kwDONfvYSs7SgOEY",
      "number": 264,
      "title": "Translating once the transcription of the segment is complete.",
      "user": {
        "login": "cevvalkoala",
        "id": 13062981,
        "node_id": "MDQ6VXNlcjEzMDYyOTgx",
        "avatar_url": "https://avatars.githubusercontent.com/u/13062981?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/cevvalkoala",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-10-20T09:10:21Z",
      "updated_at": "2025-11-25T16:39:21Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm looking for an option to translate only once the transcription of the sentence is complete. Changing the translation multiple times makes it a bit difficult to follow.\nOn the same lines, an option to display transcription only once the sentence (segment) is complete would be awesome. Am I missing something?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/264/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/263",
      "id": 3530340015,
      "node_id": "I_kwDONfvYSs7SbLav",
      "number": 263,
      "title": "insert silence always True",
      "user": {
        "login": "sh1man999",
        "id": 20192431,
        "node_id": "MDQ6VXNlcjIwMTkyNDMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/20192431?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sh1man999",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-19T18:52:11Z",
      "updated_at": "2025-10-19T18:52:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Why is it always True here?\n\nhttps://github.com/QuentinFuxa/WhisperLiveKit/blob/main/whisperlivekit/whisper_streaming_custom/online_asr.py#L154\n\n```\ndef insert_silence(self, silence_duration, offset):\n        \"\"\"\n        If silences are > 5s, we do a complete context clear. Otherwise, we just insert a small silence and shift the last_attend_frame\n        \"\"\"\n        # if self.transcript_buffer.buffer:\n        #     self.committed.extend(self.transcript_buffer.buffer)\n        #     self.transcript_buffer.buffer = []\n            \n        if True: #silence_duration < 3: #we want the last audio to be treated to not have a gap. could also be handled in the future in ends_with_silence.\n            gap_silence = np.zeros(int(16000 * silence_duration), dtype=np.int16)\n            self.insert_audio_chunk(gap_silence)\n        else:\n            self.init(offset=silence_duration + offset)\n        self.global_time_offset += silence_duration\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/263/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/256",
      "id": 3504987355,
      "node_id": "I_kwDONfvYSs7Q6dzb",
      "number": 256,
      "title": "whisperlivekit.ffmpeg_manager:Error",
      "user": {
        "login": "usefordev",
        "id": 170817841,
        "node_id": "U_kgDOCi55MQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/170817841?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/usefordev",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-11T02:03:07Z",
      "updated_at": "2025-10-11T02:03:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "when I start app，the flowing errors happen：\nERROR:whisperlivekit.ffmpeg_manager:Error writing to FFmpeg: Connection lost\nERROR:whisperlivekit.audio_processor:FFmpeg error: write_error\nWARNING:whisperlivekit.audio_processor:Failed to write audio data to FFmpeg\nWARNING:asyncio:pipe closed by peer or os.write(pipe, data) raised exception.\n\nthe env as flow:\ndocker on windows, ubuntu 24.04",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/256/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/255",
      "id": 3497915829,
      "node_id": "I_kwDONfvYSs7QffW1",
      "number": 255,
      "title": "SortFormer dependency issue",
      "user": {
        "login": "bratislav",
        "id": 4982653,
        "node_id": "MDQ6VXNlcjQ5ODI2NTM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/4982653?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/bratislav",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-09T07:11:17Z",
      "updated_at": "2025-10-09T07:49:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi all,\n\nI've tried to search an existing issue, but looks like I'm the only one experiencing this :(\n\nI'm trying to setup WLK on Google Colab, but when I try to install SortFormer diarization it fails with the follwong error:\n\n```\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\nopencv-python-headless 4.12.0.88 requires numpy<2.3.0,>=2; python_version >= \"3.9\", but you have numpy 1.26.4 which is incompatible.\nthinc 8.3.6 requires numpy<3.0.0,>=2.0.0, but you have numpy 1.26.4 which is incompatible.\nopencv-python 4.12.0.88 requires numpy<2.3.0,>=2; python_version >= \"3.9\", but you have numpy 1.26.4 which is incompatible.\ngcsfs 2025.3.0 requires fsspec==2025.3.0, but you have fsspec 2024.12.0 which is incompatible.\nopencv-contrib-python 4.12.0.88 requires numpy<2.3.0,>=2; python_version >= \"3.9\", but you have numpy 1.26.4 which is incompatible.\nSuccessfully installed StrEnum-0.4.15 bitsandbytes-0.46.0 braceexpand-0.1.7 colorlog-6.9.0 cytoolz-1.0.1 docopt-0.6.2 fiddle-0.3.0 fsspec-2024.12.0 hydra-core-1.3.2 indic-numtowords-1.1.0 intervaltree-3.1.0 jedi-0.19.2 jiwer-3.1.0 kaldi-python-io-1.2.2 kaldialign-0.9.1 lhotse-1.31.1 libcst-1.8.5 lightning-2.4.0 lightning-utilities-0.15.2 lilcom-1.8.1 marshmallow-4.0.1 mediapy-1.1.6 nemo_toolkit-2.6.0rc0 num2words-0.5.14 numpy-1.26.4 nv_one_logger_core-2.1.0 nv_one_logger_pytorch_lightning_integration-2.1.0 nv_one_logger_training_telemetry-2.1.0 onnx-1.19.0 optuna-4.5.0 packaging-24.2 pyannote.core-5.0.0 pyannote.database-5.1.3 pyannote.metrics-3.2.1 pyloudnorm-0.1.1 pytorch-lightning-2.5.5 rapidfuzz-3.14.1 resampy-0.4.3 ruamel.yaml-0.18.15 ruamel.yaml.clib-0.2.14 sacremoses-0.1.1 setuptools-80.9.0 sox-1.5.0 tokenizers-0.21.4 torchmetrics-1.8.2 transformers-4.53.3 webdataset-1.0.2 wget-3.2 whisper_normalizer-0.1.12\n```\n\nIt looks like NeMo wants to use numpy 1.26.4, but WLK (or some other dependencies, opencv, thinc?) use numpy 2.0.2, hence the dependency conflict.\nAm I missing something? How can I use SortFormer diarization with the latest version?\n\nHere's the Google Colab [link](https://colab.research.google.com/drive/1f60Py7g1UNCD2FyaITQ5rGYwIJbiC99Y?usp=sharing)\n\nP.S. Tried both python 3.12 and 3.11 runtimes\n\nThanks!\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/255/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/254",
      "id": 3494103016,
      "node_id": "I_kwDONfvYSs7QQ8fo",
      "number": 254,
      "title": "Language identification fails when transcribing different languages spoken consecutively, leading to 100% VRAM usage and transcription failure",
      "user": {
        "login": "Valarity",
        "id": 56232303,
        "node_id": "MDQ6VXNlcjU2MjMyMzAz",
        "avatar_url": "https://avatars.githubusercontent.com/u/56232303?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Valarity",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-10-08T06:48:23Z",
      "updated_at": "2025-10-10T19:21:23Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi everyone,\n\nI am having an issue with speaker and language identification lag leading to extreme VRAM usage and  freezing. I can reliably reproduce the issue with both the base model and large-v3-turbo. Language is set to \"auto\", and I do not have diarization enabled. I am using stereo mix as my microphone to transcribe PC audio output.\n\nThis issue occurs when I use WLK to transcribe consecutive interpretation scenarios (English/Spanish) where the speech is jumping back and forth between two people speaking two languages without a long pause in between.  The quick switching between speakers and languages seems to confuse the model about who is speaking and what language is being spoken.  \n\n For example, I normally don't see these issues when transcribing [video 1](https://www.youtube.com/watch?v=2FiO2jiOpMI) as there are long pauses in between the change of speaker and language. As you can see, the model correctly identifies a new speaker, and the language being spoken:\n\n<img width=\"1866\" height=\"1072\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e3f14572-aa0c-49b4-bbb0-f1a6173958df\" />\n\nHowever, I can reliably reproduce this issue when I transcribe [video 2](https://www.youtube.com/watch?v=xkYLugU7SGM&t=322s) which has back-to-back consecutive speech of both English and Spanish, with virtually no pause between the change of speaker and of language. As you can see, the model thinks it is all the same speaker, and is transcribing both languages as \"en\". VRAM usage also begins to rise rapidly and eventually maxes out the 12 GB of my 3060, although GPU usage doesn't seem to rise significantly:\n\n<img width=\"1920\" height=\"1026\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/20f2ebd7-bc63-45ba-b94c-6373672bb010\" />\n\nWhen this happens, the accuracy of the transcription is severely reduced, and it eventually ends up with the model hanging and refusing to transcribe anymore. Pressing the stop button on the web app, cutting the audio, or refreshing the page does not correct this doom-loop. I have to completely stop and restart the server in order to continue transcribing.  Sometimes it will also cause the last recognized word to be transcribed repeatedly, rather than stopping altogether: \n\nLike this:\n\n<img width=\"1477\" height=\"877\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/e6e75276-adec-4548-b41f-6f16f5f84b02\" />\n\nInterestingly I do sometimes have the issue of incorrect language identification even in videos with long pauses.  It will transcribe with the tag \"en\" even though it is clearly Spanish that is being spoken, or vice versa. It says \"en\", but it still transcribes the Spanish speech.  What is also very strange, is that sometimes it will also erroneously translate the speech even though I don't have translation enabled.\n\nFor example, this is from video 1 (with long pauses between):\n\n<img width=\"923\" height=\"654\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/7d4db0c1-8b02-43fe-afe4-f7f86d52e823\" />\n\n It would seem there is a general issue with language identification, even when there is plenty of time for the model to reset and get ready to identify another language, and also some issue causing it to translate when it should not be translating.\n\nI'm not a professional coder or anything, so I apologize for my inability to speak more technically about what could be going wrong.  This is a great little tool which I find very useful and I have wanted to create something like this myself for some time now. I really appreciate all the effort you all have put into this project and I hope that my bug report can still be insightful and of some use.\n\nIf you guys have any ideas about some parameter that I can change, or some other fix I can implement to stop this from happening, I would super appreciate it.  Thank you!\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/254/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/253",
      "id": 3492125705,
      "node_id": "I_kwDONfvYSs7QJZwJ",
      "number": 253,
      "title": "WSL2 Incompatibility - Bus Error Issue",
      "user": {
        "login": "VibrateEntire",
        "id": 67062454,
        "node_id": "MDQ6VXNlcjY3MDYyNDU0",
        "avatar_url": "https://avatars.githubusercontent.com/u/67062454?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/VibrateEntire",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-07T16:12:39Z",
      "updated_at": "2025-10-07T16:12:39Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\nSystem Specifications\n\nOperating System\n- Host OS: Windows (WSL2)\n- WSL Distribution: Ubuntu 24.04.1 LTS (Noble)\n- Kernel: Linux 6.6.87.2-microsoft-standard-WSL2\n\nHardware\n- CPU: 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz (x86_64)\n- RAM: 7.8 GB (7975128 kB)\n- GPU: NVIDIA GeForce RTX 3060 Laptop\n  - Driver Version: 560.81\n  - CUDA Version: 12.6\n\nPython Environment\n- Python Version: 3.12.3\n- Virtual Environment: Yes (venv)\n\nPackage Versions\nwhisperlivekit==0.2.12\nfaster-whisper==1.2.0\nctranslate2==4.6.0\ntorch==2.8.0\ntorchaudio==2.8.0\nnumpy==1.26.4\n\nProblem Description\n\nSymptoms\n\n1. Server starts successfully - Model loads without issues\n2. WebSocket connection establishes - Client connects properly\n3. Audio data is received - FFmpeg processes incoming audio\n4. Immediate crash - Bus error occurs when Whisper model attempts to process audio\n5. Exit code 135 - SIGBUS (Bus error)\n\nError Logs\n```\nINFO:     Started server process [95676]\nINFO:     Waiting for application startup.\nINFO:whisperlivekit.warmup:Skipping warmup.\nINFO:     Application startup complete.\nINFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\nINFO:     127.0.0.1:56846 - \"WebSocket /asr\" [accepted]\nINFO:whisperlivekit.simul_whisper.simul_whisper:Model dimensions: ModelDimensions(n_mels=80, n_audio_ctx=1500, n_audio_state=768, n_audio_head=12, n_audio_layer=12, n_vocab=51865, n_text_ctx=448, n_text_state=768, n_text_head=12, n_text_layer=12)\nINFO:     connection open\nINFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.26s |\n/bin/bash: line 1: 95676 Bus error               (core dumped) python main.py < /dev/null\n```\n\nWhen the Crash Occurs\nThe crash happens at the **first audio processing attempt**:\n- Model loading: ✅ **Works**\n- WebSocket connection: ✅ **Works**\n- Audio capture: ✅ **Works**\n- Audio encoding (faster-whisper): ❌ **CRASHES**\n\nCreate minimal server:\n```\nfrom whisperlivekit import TranscriptionEngine, AudioProcessor\n   from fastapi import FastAPI, WebSocket\n   import asyncio\n\n   app = FastAPI()\n   engine = TranscriptionEngine(\n       model_size=\"tiny\",\n       backend=\"faster-whisper\",\n       device=\"cuda\",\n       compute_type=\"float16\",\n       warmup_file=\"\"\n   )\n\n   @app.websocket(\"/asr\")\n   async def websocket_endpoint(websocket: WebSocket):\n       await websocket.accept()\n       audio_processor = AudioProcessor(transcription_engine=engine)\n       results_generator = await audio_processor.create_tasks()\n\n       while True:\n           message = await websocket.receive_bytes()\n           await audio_processor.process_audio(message)  # CRASHES HERE\n```\n\nRoot Cause\n\nThe issue is caused by **CTranslate2** library incompatibility with WSL2:\n\n1. **CTranslate2** is used by `faster-whisper` for optimized inference\n2. CTranslate2 uses **low-level CPU instructions** (AVX2, AVX512) for optimization\n3. **WSL2's virtualization layer** doesn't properly handle these CPU instructions\n4. This causes a **SIGBUS (Bus Error)** when accessing misaligned memory\n- `faster-whisper` backend: Uses CTranslate2 directly\n- `simulstreaming` backend: Also uses faster-whisper for encoding, hence same issue\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/253/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/252",
      "id": 3489127604,
      "node_id": "I_kwDONfvYSs7P99y0",
      "number": 252,
      "title": "use_vad params unused",
      "user": {
        "login": "sh1man999",
        "id": 20192431,
        "node_id": "MDQ6VXNlcjIwMTkyNDMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/20192431?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sh1man999",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-10-06T21:13:25Z",
      "updated_at": "2025-10-06T21:13:25Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/QuentinFuxa/WhisperLiveKit/blob/12a69205edfd55e407053d42cfb37d741cf9a592/whisperlivekit/whisper_streaming_custom/backends.py#L139C9-L139C16",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/252/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/247",
      "id": 3479131386,
      "node_id": "I_kwDONfvYSs7PX1T6",
      "number": 247,
      "title": "module lack attribute, when I want to start the server, the error occured",
      "user": {
        "login": "xuhao121",
        "id": 58242891,
        "node_id": "MDQ6VXNlcjU4MjQyODkx",
        "avatar_url": "https://avatars.githubusercontent.com/u/58242891?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/xuhao121",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-02T22:19:39Z",
      "updated_at": "2025-10-08T16:04:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "INFO:     Started server process [18056]\nINFO:     Waiting for application startup.\nUsing cache found in C:\\Users\\34747/.cache\\torch\\hub\\snakers4_silero-vad_master\nERROR:    Traceback (most recent call last):\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\starlette\\routing.py\", line 694, in lifespan\n    async with self.lifespan_context(app) as maybe_state:\n  File \"C:\\ProgramData\\anaconda3\\lib\\contextlib.py\", line 199, in __aenter__\n    return await anext(self.gen)\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\whisperlivekit\\basic_server.py\", line 20, in lifespan\n    transcription_engine = TranscriptionEngine(\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\whisperlivekit\\core.py\", line 106, in __init__\n    from whisperlivekit.simul_whisper import SimulStreamingASR\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\whisperlivekit\\simul_whisper\\__init__.py\", line 1, in <module>\n    from .backend import SimulStreamingASR, SimulStreamingOnlineProcessor\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\whisperlivekit\\simul_whisper\\backend.py\", line 17, in <module>\n    from whisperlivekit.simul_whisper.simul_whisper import PaddedAlignAttWhisper\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\whisperlivekit\\simul_whisper\\simul_whisper.py\", line 39, in <module>\n    from faster_whisper.audio import pad_or_trim as fw_pad_or_trim\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\faster_whisper\\__init__.py\", line 2, in <module>\n    from faster_whisper.transcribe import WhisperModel\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\faster_whisper\\transcribe.py\", line 84, in <module>\n    class WhisperModel:\n  File \"C:\\ProgramData\\anaconda3\\lib\\site-packages\\faster_whisper\\transcribe.py\", line 426, in WhisperModel\n    encoder_output: Optional[ctranslate2.StorageView] = None,\nAttributeError: module 'ctranslate2' has no attribute 'StorageView'",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/247/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/246",
      "id": 3477616667,
      "node_id": "I_kwDONfvYSs7PSDgb",
      "number": 246,
      "title": "SimulStreaming processing error: string index out of range",
      "user": {
        "login": "Damrod",
        "id": 2774420,
        "node_id": "MDQ6VXNlcjI3NzQ0MjA=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2774420?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Damrod",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-10-02T13:50:29Z",
      "updated_at": "2025-11-25T08:28:45Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\nwlk  | INFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s | + Silence of = 0.60s | last_end = 52.88399999999999 |\nwlk  | INFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nwlk  | Detected language: ko with p=0.4471\nwlk  | INFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nwlk  | ERROR:whisperlivekit.simul_whisper.backend:SimulStreaming processing error: string index out of range\nwlk  | Traceback (most recent call last):\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/backend.py\", line 113, in process_iter\nwlk  |     timestamped_words = self.model.infer(is_last=is_last)\nwlk  |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/torch/utils/_contextlib.py\", line 120, in decorate_context\nwlk  |     return func(*args, **kwargs)\nwlk  |            ^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/simul_whisper.py\", line 572, in infer\nwlk  |     split_words, split_tokens = self.tokenizer.split_to_word_tokens(new_hypothesis)\nwlk  |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/whisper/tokenizer.py\", line 284, in split_to_word_tokens\nwlk  |     return self.split_tokens_on_spaces(tokens)\nwlk  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/whisper/tokenizer.py\", line 312, in split_tokens_on_spaces\nwlk  |     subwords, subword_tokens_list = self.split_tokens_on_unicode(tokens)\nwlk  |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/whisper/tokenizer.py\", line 301, in split_tokens_on_unicode\nwlk  |     or decoded_full[unicode_offset + decoded.index(replacement_char)]\nwlk  |        ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  | IndexError: string index out of range\nwlk  | INFO:whisperlivekit.audio_processor:internal_buffer=0.00s | lag=0.00s |\nwlk  | ERROR:whisperlivekit.simul_whisper.backend:SimulStreaming processing error: The size of tensor a (23) must match the size of tensor b (10) at non-singleton dimension 3\nwlk  | Traceback (most recent call last):\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/backend.py\", line 113, in process_iter\nwlk  |     timestamped_words = self.model.infer(is_last=is_last)\nwlk  |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/torch/utils/_contextlib.py\", line 120, in decorate_context\nwlk  |     return func(*args, **kwargs)\nwlk  |            ^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/simul_whisper.py\", line 474, in infer\nwlk  |     logits = self.logits(tokens_for_logits, encoder_feature) # B, len(tokens), token dict size\nwlk  |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/simul_whisper.py\", line 249, in logits\nwlk  |     logit = self.inference.logits(tokens, audio_features)\nwlk  |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/simul_whisper/beam.py\", line 17, in logits\nwlk  |     return self.model.decoder(tokens, audio_features, kv_cache=self.kv_cache)\nwlk  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1773, in _wrapped_call_impl\nwlk  |     return self._call_impl(*args, **kwargs)\nwlk  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nwlk  |   File \"/opt/venv/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1784, in _call_impl\n```\nI was speaking spanish with a falsetto voice, and it decided that I was speaking korean. As soon as it did, it crashed with the above stack trace.\n\nThis is the closest issue I've found to this one https://github.com/QuentinFuxa/WhisperLiveKit/issues/152 , but I think it's unrelated.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/246/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/242",
      "id": 3463765820,
      "node_id": "I_kwDONfvYSs7OdN88",
      "number": 242,
      "title": "Missing requirements for diarization: megatron-core",
      "user": {
        "login": "CorentinvdBdO",
        "id": 53038558,
        "node_id": "MDQ6VXNlcjUzMDM4NTU4",
        "avatar_url": "https://avatars.githubusercontent.com/u/53038558?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CorentinvdBdO",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-09-29T08:11:41Z",
      "updated_at": "2025-10-23T07:10:54Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Missing requirements for diarization: `megatron-core`. Not installed with `git+https://github.com/NVIDIA/NeMo.git@main#egg=nemo_toolkit[asr]`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/242/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/236",
      "id": 3458196823,
      "node_id": "I_kwDONfvYSs7OH-VX",
      "number": 236,
      "title": "French > English translation ['] > [fr ']",
      "user": {
        "login": "CorentinvdBdO",
        "id": 53038558,
        "node_id": "MDQ6VXNlcjUzMDM4NTU4",
        "avatar_url": "https://avatars.githubusercontent.com/u/53038558?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CorentinvdBdO",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-26T15:56:32Z",
      "updated_at": "2025-10-27T23:19:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "There is a common issue in French transcription into English translation:\n\n{\"speaker\":3,\"text\":\" J'ai tenté un truc.\",\"start\":\"0:00:18\",\"end\":\"0:00:19\",\"translation\":\"Jfr 'ai tent is a trick. \",\"detected_language\":\"fr\"}\n\nSame happens with `C'est` > `Cfr 'est`\n\nBasically an issue with `'` in French text, parsed as `fr '` that then breaks the translation. This might be a Non-breaking space issue, as ` Cool !` becomes ` Coolfr!`.\n\nParameters: `whisperlivekit-server --host 0.0.0.0 --model large-v3 --language fr --port 1243 --pcm-input --diarization --target-language en`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/236/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/234",
      "id": 3453290983,
      "node_id": "I_kwDONfvYSs7N1Qnn",
      "number": 234,
      "title": "Transcription output stops although it seems that the voice is still being detected",
      "user": {
        "login": "dvgenusa",
        "id": 159436479,
        "node_id": "U_kgDOCYDOvw",
        "avatar_url": "https://avatars.githubusercontent.com/u/159436479?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/dvgenusa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-09-25T11:57:11Z",
      "updated_at": "2025-09-26T12:38:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm testing this voice transcriptor and first transcriptions seems ok and appears during or just after I said the words, but after some silence, the transcriptor doesn't generate more transcriptions.\n\nOn the web interface it's showed as the silence continue. But, although the transcription output is freeze, it seems that the voice and silences are correctly detected because, when I speak the terminal shows processing activity and detects the silences.\n\nE.g.: In this case I tested following text:\n\"Test 1, test 2, test 3, test 4, test 5, test 6\"\n(silence)\n\"Test 7, test 8\"\n(silence)\n\"Test 9, test 10\".\n\nHere you can see that, on the web interface, only appears the first part transcription (with some words at the beginning that seems some hallucinations).\nAnd after that, it just consider and counts silence duration.\n\n<img width=\"600\" height=\"240\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/3f9437aa-feb0-4f50-aeec-ffc0ee3cf48e\" />\n\nBut here in the console output, you can see the moments of voices and the moments of silence properly detected:\n\n<img width=\"600\" height=\"415\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/bbf2749a-2ed0-4307-93c3-06452eab6870\" />\n\n\nI'm using Windows 10 and Python 13.4 and WhisperLiveKit version 0.2.11\n\nAny suggestions?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/234/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/228",
      "id": 3430931526,
      "node_id": "I_kwDONfvYSs7Mf9xG",
      "number": 228,
      "title": "Add Healthcheck to Dockerfiles",
      "user": {
        "login": "PheysX",
        "id": 28557712,
        "node_id": "MDQ6VXNlcjI4NTU3NzEy",
        "avatar_url": "https://avatars.githubusercontent.com/u/28557712?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/PheysX",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-18T15:36:44Z",
      "updated_at": "2025-09-18T15:36:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Is it possible to add a healthcheck to the Dockerfiles? Maybe call the websocket or something?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/228/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/226",
      "id": 3427338189,
      "node_id": "I_kwDONfvYSs7MSQfN",
      "number": 226,
      "title": "large-v3-turbo with NLLB performance",
      "user": {
        "login": "S4more",
        "id": 47904134,
        "node_id": "MDQ6VXNlcjQ3OTA0MTM0",
        "avatar_url": "https://avatars.githubusercontent.com/u/47904134?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/S4more",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-17T18:23:07Z",
      "updated_at": "2025-09-17T18:23:07Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I think it would be useful to add information about the performance of v3-turbo with NLLB for any -> english translation in the [available models page](https://github.com/QuentinFuxa/WhisperLiveKit/blob/main/available_models.md).\n\nIt's not clear to me what's the trade-off between using for example large-v3 vs using the NLLB with large-v3-turbo.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/226/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/218",
      "id": 3412947386,
      "node_id": "I_kwDONfvYSs7LbXG6",
      "number": 218,
      "title": "Chrome extension recording consistency",
      "user": {
        "login": "timurguseynov",
        "id": 57952964,
        "node_id": "MDQ6VXNlcjU3OTUyOTY0",
        "avatar_url": "https://avatars.githubusercontent.com/u/57952964?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/timurguseynov",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-13T09:03:11Z",
      "updated_at": "2025-09-26T14:02:27Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi :)\n\nWhen I start the recording for the first time, it works correctly. However, sometimes, after I stop the recording and then try to start it again, it fails to initialize. The recording functionality appears to enter a broken state and will not work again until the extension is reloaded.\n\nAdditionally, there is an issue with the silence detection feature. The word 'silence' appears correctly when there is no audio, but it remains on the page even after speech resumes.\n\nThank you for your work!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/218/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/209",
      "id": 3394877427,
      "node_id": "I_kwDONfvYSs7KWbfz",
      "number": 209,
      "title": "Model files .bin or .pt",
      "user": {
        "login": "mercurial-moon",
        "id": 117296073,
        "node_id": "U_kgDOBv3LyQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/117296073?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mercurial-moon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-08T16:26:46Z",
      "updated_at": "2025-09-08T16:26:46Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi,\nIs model file of .bin extension acceptable for `WhisperLiveKit` I see that you have mentioned `.pt` model file. Most of hugging face repos provide the whisper models in `.bin` extension.\n\nAlso is it possible to point to a folder where the downloaded models already exists. I am trying to run it on a offline pc but the program fails to start since it tries to download models from the internet.\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/209/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/208",
      "id": 3393619601,
      "node_id": "I_kwDONfvYSs7KRoaR",
      "number": 208,
      "title": "Does WLK auto save the audio stream at local file system?",
      "user": {
        "login": "gaoysz",
        "id": 79002663,
        "node_id": "MDQ6VXNlcjc5MDAyNjYz",
        "avatar_url": "https://avatars.githubusercontent.com/u/79002663?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/gaoysz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-08T10:33:45Z",
      "updated_at": "2025-09-08T10:34:01Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It is a common scenario to save the audio stream while transcribing it. I would like to ask if WLK automatically saves the audio stream now?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/208/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/207",
      "id": 3392924819,
      "node_id": "I_kwDONfvYSs7KO-yT",
      "number": 207,
      "title": "Docker startup failed",
      "user": {
        "login": "HZJprince",
        "id": 8064272,
        "node_id": "MDQ6VXNlcjgwNjQyNzI=",
        "avatar_url": "https://avatars.githubusercontent.com/u/8064272?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/HZJprince",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-08T07:13:06Z",
      "updated_at": "2025-09-08T07:13:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "docker run -d -p 8000:8000 --name wlk wlk:latest --model tiny --language zh -v /home/.cache/huggingface/hub:/root/.cache/huggingface/hub\n405eb66692d1954aa0933269cd742060c6c4d9517ba2bf82564eb46874ea87fd\n(base) [root@openEuler2203 hub]# docker run -d -v /home/.cache/huggingface/hub:/root/.cache/huggingface/hub -p 8000:8000 --name wlk wlk:latest --model tiny --language zh\nbcf5797154638079354a950248e36e1eb121ce9832bfc0bcb8dc359495fb1218\n(base) [root@openEuler2203 hub]# du -sh\n581M    .\n(base) [root@openEuler2203 hub]# docker run -v /home/.cache/huggingface/hub:/root/.cache/huggingface/hub -p 8000:8000 --name wlk wlk:latest --model tiny --language zh\nINFO:     Started server process [1]\nINFO:     Waiting for application startup.\nWARNING:whisperlivekit.basic_server:\n==================================================\nWhisperLiveKit 0.2.8 has introduced a new fast encoder feature using MLX Whisper or Faster Whisper for improved speed. Use --disable-fast-encoder to disable if you encounter issues.\n==================================================\n\n/usr/local/lib/python3.13/site-packages/torch/hub.py:330: UserWarning: You are about to download and run code from an untrusted repository. In a future release, this won't be allowed. To add the repository to your trusted list, change the command to {calling_fn}(..., trust_repo=False) and a command prompt will appear asking for an explicit confirmation of trust, or load(..., trust_repo=True), which will assume that the prompt is to be answered with 'yes'. You can also use load(..., trust_repo='check') which will only prompt for confirmation if the repo is not already trusted. This will eventually be the default behaviour\n  warnings.warn(\nERROR:    Traceback (most recent call last):\n  File \"/usr/local/lib/python3.13/urllib/request.py\", line 1319, in do_open\n    h.request(req.get_method(), req.selector, req.data, headers,\n    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n              encode_chunked=req.has_header('Transfer-encoding'))\n              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/http/client.py\", line 1338, in request\n    self._send_request(method, url, body, headers, encode_chunked)\n    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/http/client.py\", line 1384, in _send_request\n    self.endheaders(body, encode_chunked=encode_chunked)\n    ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/http/client.py\", line 1333, in endheaders\n    self._send_output(message_body, encode_chunked=encode_chunked)\n    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/http/client.py\", line 1093, in _send_output\n    self.send(msg)\n    ~~~~~~~~~^^^^^\n  File \"/usr/local/lib/python3.13/http/client.py\", line 1037, in send\n    self.connect()\n    ~~~~~~~~~~~~^^\n  File \"/usr/local/lib/python3.13/http/client.py\", line 1472, in connect\n    super().connect()\n    ~~~~~~~~~~~~~~~^^\n  File \"/usr/local/lib/python3.13/http/client.py\", line 1003, in connect\n    self.sock = self._create_connection(\n                ~~~~~~~~~~~~~~~~~~~~~~~^\n        (self.host,self.port), self.timeout, self.source_address)\n        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/socket.py\", line 840, in create_connection\n    for res in getaddrinfo(host, port, 0, SOCK_STREAM):\n               ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/socket.py\", line 977, in getaddrinfo\n    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):\n               ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nsocket.gaierror: [Errno -2] Name or service not known\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/usr/local/lib/python3.13/site-packages/starlette/routing.py\", line 694, in lifespan\n    async with self.lifespan_context(app) as maybe_state:\n               ~~~~~~~~~~~~~~~~~~~~~^^^^^\n  File \"/usr/local/lib/python3.13/contextlib.py\", line 214, in __aenter__\n    return await anext(self.gen)\n           ^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/site-packages/whisperlivekit/basic_server.py\", line 32, in lifespan\n    transcription_engine = TranscriptionEngine(\n        **vars(args),\n    )\n  File \"/usr/local/lib/python3.13/site-packages/whisperlivekit/core.py\", line 93, in __init__\n    self.vac_model, _ = torch.hub.load(repo_or_dir=\"snakers4/silero-vad\", model=\"silero_vad\")\n                        ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/site-packages/torch/hub.py\", line 638, in load\n    repo_or_dir = _get_cache_or_reload(\n        repo_or_dir,\n    ...<4 lines>...\n        skip_validation=skip_validation,\n    )\n  File \"/usr/local/lib/python3.13/site-packages/torch/hub.py\", line 258, in _get_cache_or_reload\n    _validate_not_a_forked_repo(repo_owner, repo_name, ref)\n    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/site-packages/torch/hub.py\", line 203, in _validate_not_a_forked_repo\n    response = json.loads(_read_url(Request(url, headers=headers)))\n                          ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/site-packages/torch/hub.py\", line 185, in _read_url\n    with urlopen(url) as r:\n         ~~~~~~~^^^^^\n  File \"/usr/local/lib/python3.13/urllib/request.py\", line 189, in urlopen\n    return opener.open(url, data, timeout)\n           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/urllib/request.py\", line 489, in open\n    response = self._open(req, data)\n  File \"/usr/local/lib/python3.13/urllib/request.py\", line 506, in _open\n    result = self._call_chain(self.handle_open, protocol, protocol +\n                              '_open', req)\n  File \"/usr/local/lib/python3.13/urllib/request.py\", line 466, in _call_chain\n    result = func(*args)\n  File \"/usr/local/lib/python3.13/urllib/request.py\", line 1367, in https_open\n    return self.do_open(http.client.HTTPSConnection, req,\n           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n                        context=self._context)\n                        ^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/local/lib/python3.13/urllib/request.py\", line 1322, in do_open\n    raise URLError(err)\nurllib.error.URLError: <urlopen error [Errno -2] Name or service not known>\n\nERROR:    Application startup failed. Exiting.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/207/reactions",
        "total_count": 1,
        "+1": 0,
        "-1": 1,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/206",
      "id": 3392810485,
      "node_id": "I_kwDONfvYSs7KOi31",
      "number": 206,
      "title": "RuntimeError",
      "user": {
        "login": "wangxiaodong857",
        "id": 120533973,
        "node_id": "U_kgDOBy8z1Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/120533973?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/wangxiaodong857",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 7,
      "created_at": "2025-09-08T06:31:12Z",
      "updated_at": "2025-09-08T10:00:44Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The error still occurs after the update.\n\n> https://github.com/QuentinFuxa/WhisperLiveKit/issues/197\n\nERROR:whisperlivekit.diarization.sortformer_backend:Error in diarize: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!\nWARNING:whisperlivekit.audio_processor:Exception in diarization_processor: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and [cpu!]\nWARNING:whisperlivekit.audio_processor:Traceback: Traceback (most recent call last):\n  File \"/home/lenovo-ar/dome/WhisperLiveKit/whisperlivekit/audio_processor.py\", line 373, in diarization_processor\n    await diarization_obj.diarize(pcm_array)\n  File \"/home/lenovo-ar/dome/WhisperLiveKit/whisperlivekit/diarization/sortformer_backend.py\", line 211, in diarize\n    self.streaming_state, self.total_preds = self.diar_model.forward_streaming_step(\n                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/nemo/collections/asr/models/sortformer_diar_models.py\", line 744, in forward_streaming_step\n    chunk_pre_encode_embs, chunk_pre_encode_lengths = self.encoder.pre_encode(\n                                                      ^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1773, in _wrapped_call_impl\n    return self._call_impl(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1784, in _call_impl\n    return forward_call(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/nemo/collections/asr/parts/submodules/subsampling.py\", line 424, in forward\n    x, lengths = self.conv(x, lengths)\n                 ^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1773, in _wrapped_call_impl\n    return self._call_impl(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/torch/nn/modules/module.py\", line 1784, in _call_impl\n    return forward_call(*args, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/nemo/collections/asr/parts/submodules/subsampling.py\", line 730, in forward\n    mask = self._create_mask(x, current_lengths.long())\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/lenovo-ar/miniconda3/envs/WhisperLiveKit/lib/python3.12/site-packages/nemo/collections/asr/parts/submodules/subsampling.py\", line 758, in _create_mask\n    time_mask = torch.arange(time, device=tensor.device).expand(batch_size, time) < lengths.unsqueeze(1)\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nRuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!\n\n\n\n\npython 3.12.11",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/206/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/205",
      "id": 3392719921,
      "node_id": "I_kwDONfvYSs7KOMwx",
      "number": 205,
      "title": "Mobile support",
      "user": {
        "login": "ZenaMel",
        "id": 47085752,
        "node_id": "MDQ6VXNlcjQ3MDg1NzUy",
        "avatar_url": "https://avatars.githubusercontent.com/u/47085752?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ZenaMel",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-09-08T05:54:34Z",
      "updated_at": "2025-09-08T07:42:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Would it be possible to get WhisperLiveKit working within eg Flutter/React Native/Kotlin/iOS ?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/205/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/204",
      "id": 3391929734,
      "node_id": "I_kwDONfvYSs7KLL2G",
      "number": 204,
      "title": "PLS Update VADIterator",
      "user": {
        "login": "sh1man",
        "id": 49469606,
        "node_id": "MDQ6VXNlcjQ5NDY5NjA2",
        "avatar_url": "https://avatars.githubusercontent.com/u/49469606?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sh1man",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-07T19:29:17Z",
      "updated_at": "2025-09-07T19:29:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/ufal/whisper_streaming/commit/72d51274224fea77a2bac10bb7ec76cd0410dbce",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/204/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/202",
      "id": 3390190127,
      "node_id": "I_kwDONfvYSs7KEjIv",
      "number": 202,
      "title": "Some data type problem",
      "user": {
        "login": "Perevinkl",
        "id": 213079568,
        "node_id": "U_kgDODLNWEA",
        "avatar_url": "https://avatars.githubusercontent.com/u/213079568?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Perevinkl",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-09-06T13:33:08Z",
      "updated_at": "2025-09-09T08:28:31Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello. I used Chrome on Windows to launch a WhisperLiveKit server. In my environment I use Python 3.10. I get this error:\n\nERROR:whisperlivekit.simul_whisper.backend:SimulStreaming processing error: can't convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, int32, int16, int8, uint64, uint32, uint16, uint8, and bool.\nTraceback (most recent call last):\n  File \"C:\\Anaconda\\envs\\whisper_notes_env\\lib\\site-packages\\whisperlivekit\\simul_whisper\\backend.py\", line 157, in process_iter\n    tokens, generation_progress = self.model.infer(is_last=is_last)\n  File \"C:\\Anaconda\\envs\\whisper_notes_env\\lib\\site-packages\\torch\\utils\\_contextlib.py\", line 120, in decorate_context  \n    return func(*args, **kwargs)\n  File \"C:\\Anaconda\\envs\\whisper_notes_env\\lib\\site-packages\\whisperlivekit\\simul_whisper\\simul_whisper.py\", line 411, in infer\n    encoder_feature = torch.Tensor(np.array(encoder_feature_ctranslate))\n\nAbout an hour ago it somehow worked. Now it just doesn't. I didn't change anything.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/202/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/182",
      "id": 3370887576,
      "node_id": "I_kwDONfvYSs7I66mY",
      "number": 182,
      "title": "How much disk space is required to install pip install whisperlivekit?",
      "user": {
        "login": "skyroot",
        "id": 5525426,
        "node_id": "MDQ6VXNlcjU1MjU0MjY=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5525426?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/skyroot",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-09-01T01:05:28Z",
      "updated_at": "2025-09-01T01:05:28Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "when i run pip install whisperlivekit in my ubuntu 22.04 server，\ndf -h\n文件系统                           大小  已用  可用 已用% 挂载点\ntmpfs                               11G  2.9M   11G    1% /run\n/dev/mapper/ubuntu--vg-ubuntu--lv  114G   90G   19G   83% /\ntmpfs                               55G     0   55G    0% /dev/shm\ntmpfs                              5.0M   12K  5.0M    1% /run/lock\nefivarfs                           256K  103K  149K   41% /sys/firmware/efi/efivars\n/dev/sda2                          2.0G  204M  1.6G   12% /boot\n/dev/sda1                          1.1G  6.2M  1.1G    1% /boot/efi\n\nERROR: Could not install packages due to an OSError: [Errno 28] 设备上没有空间",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/182/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/181",
      "id": 3370433313,
      "node_id": "I_kwDONfvYSs7I5Lsh",
      "number": 181,
      "title": "bug: audio detection and file upload limitations",
      "user": {
        "login": "venturero",
        "id": 63498905,
        "node_id": "MDQ6VXNlcjYzNDk4OTA1",
        "avatar_url": "https://avatars.githubusercontent.com/u/63498905?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/venturero",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-31T15:52:38Z",
      "updated_at": "2025-10-10T12:30:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "WhisperLiveKit is experiencing two key limitations:\n\n1. Computer Audio Detection Failure\n   - When attempting to record audio playing from the computer, the application fails to detect system audio\n   - Voice recognition works correctly when speaking directly into the microphone\n\n2. File Upload Restriction\n   - Unable to upload voice recordings to localhost\n\nSteps to Reproduce\n1. Play audio from computer\n2. Attempt to record using WhisperLiveKit\n3. Observe lack of audio detection from system sound\n\nExpected Behavior\n- Detect and transcribe audio from computer sources\n- Allow uploading of voice recordings to localhost\n\nActual Behavior\n- System audio not recognized during recording\n- File upload functionality unavailable\n\nAdditional Context\n- Microphone direct input works correctly\n- Requires investigation into system audio capture mechanisms\n- Needs implementation of file upload feature\n\nPotential Solutions\n- Investigate system audio capture libraries\n- Implement file upload endpoint for localhost",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/181/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/174",
      "id": 3368001330,
      "node_id": "I_kwDONfvYSs7Iv58y",
      "number": 174,
      "title": "Voice module",
      "user": {
        "login": "einxoxo",
        "id": 116984054,
        "node_id": "U_kgDOBvkI9g",
        "avatar_url": "https://avatars.githubusercontent.com/u/116984054?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/einxoxo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-29T20:08:03Z",
      "updated_at": "2025-09-01T12:30:06Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "no voice recognition feature",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/174/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/171",
      "id": 3366949082,
      "node_id": "I_kwDONfvYSs7Ir5Da",
      "number": 171,
      "title": "PIP timeout for download.pytorch.org during container image build",
      "user": {
        "login": "the-dipsy",
        "id": 155256047,
        "node_id": "U_kgDOCUEE7w",
        "avatar_url": "https://avatars.githubusercontent.com/u/155256047?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/the-dipsy",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 9,
      "created_at": "2025-08-29T13:51:01Z",
      "updated_at": "2025-08-31T17:15:51Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Building the container image has during several attempts thrown this error at me:\n\n```\npip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='download.pytorch.org', port=443): Read timed out.\nError: building at STEP \"RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu129\": while running runtime: exit status 2\n```\n\nIt might make sense to add something like `--timeout=120` (instead of the default 15) to the according pip install command to avoid timeouts during the download of these gigantic cuda packages ☺️",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/171/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/163",
      "id": 3350993826,
      "node_id": "I_kwDONfvYSs7HvBui",
      "number": 163,
      "title": "No init_prompt for faster whisper",
      "user": {
        "login": "Etnarion",
        "id": 17885582,
        "node_id": "MDQ6VXNlcjE3ODg1NTgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17885582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Etnarion",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-08-25T08:50:52Z",
      "updated_at": "2025-08-27T19:16:32Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello,\nI'm wondering if there is a reason why the init_prompt parameter is not available for faster whisper backend.\nThank you and cheers",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/163/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/162",
      "id": 3341674975,
      "node_id": "I_kwDONfvYSs7HLenf",
      "number": 162,
      "title": "Docker fails to launch",
      "user": {
        "login": "Etnarion",
        "id": 17885582,
        "node_id": "MDQ6VXNlcjE3ODg1NTgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17885582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Etnarion",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-08-21T13:03:06Z",
      "updated_at": "2025-08-22T13:39:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello,\nWhen I follow the docker instructions I get the following error:\n`Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: \"whisperlivekit-server\": executable file not found in $PATH: unknown`\nAny idea why?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/162/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/160",
      "id": 3339973120,
      "node_id": "I_kwDONfvYSs7HE_IA",
      "number": 160,
      "title": "Feature Request: Add language parameter to AudioProcessor pipeline for transcription",
      "user": {
        "login": "sh1man999",
        "id": 20192431,
        "node_id": "MDQ6VXNlcjIwMTkyNDMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/20192431?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sh1man999",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-08-21T01:38:44Z",
      "updated_at": "2025-09-05T07:13:11Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently, the AudioProcessor pipeline seems to use a hardcoded or default language for audio transcription. This makes it impossible to process audio files in different languages without modifying the core code. I need the ability to specify the desired transcription language dynamically.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/160/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/156",
      "id": 3327793183,
      "node_id": "I_kwDONfvYSs7GWhgf",
      "number": 156,
      "title": "how can I replace diar with Wespeaker voxblink2_samresnet100",
      "user": {
        "login": "sh1man999",
        "id": 20192431,
        "node_id": "MDQ6VXNlcjIwMTkyNDMx",
        "avatar_url": "https://avatars.githubusercontent.com/u/20192431?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sh1man999",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-08-17T00:46:48Z",
      "updated_at": "2025-08-17T12:51:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "pyannote It's been a long time since SOTA. Wespeaker is now SOTA",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/156/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/152",
      "id": 3245215516,
      "node_id": "I_kwDONfvYSs7Bbg8c",
      "number": 152,
      "title": "Trying SimulStreaming results in 2 errors: not able to use the warmup file and tensor mismatch",
      "user": {
        "login": "Drasek",
        "id": 19518683,
        "node_id": "MDQ6VXNlcjE5NTE4Njgz",
        "avatar_url": "https://avatars.githubusercontent.com/u/19518683?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Drasek",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-07-19T10:55:28Z",
      "updated_at": "2025-08-15T21:05:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, after upgrading from 0.17 to 0.22 i wanted to try out SimulStreaming and solved my first problem (see other issue) by adding a hardcoded path to the loading of the licence file. Now i get these two errors:\n\n> whisperlivekit-server --backend simulstreaming --model large-v3 --language de --warmup-file /root/data/test_weidel.wav --host 0.0.0.0 --port 8000\n> INFO:     Started server process [14436]\n> INFO:     Waiting for application startup.\n> ********************************************************************************📄 SimulStreaming (https://github.com/ufal/SimulStreaming) Licence\n> \n> SimulStreaming is dual-licensed:\n> \n> 🔹 Non-Commercial Use\n> \n> You may use SimulStreaming under the **PolyForm Noncommercial License 1.0.0** if you\n> obtain the code through the GitHub repository.  This license is **free of charge**\n> and comes with **no obligations** for non-commercial users.\n> \n> 🔸 Commercial Use\n> \n> Understanding who uses SimulStreaming commercially helps us improve and\n> prioritize development. Therefore, we want to **require registration** of those who acquire a commercial licence.\n> \n> We plan to make the commercial licenceses **affordable** to SMEs and individuals. We\n> are considering to provide commercial licenses either for free or for symbolic\n> one-time fee, and maybe also provide additional support. You can share your preference via the [questionnaire](https://forms.cloud.microsoft/e/7tCxb4gJfB).\n> \n> You can also leave your contact [there](https://forms.cloud.microsoft/e/7tCxb4gJfB) to be notified when the commercial licenses become\n> available.\n> \n> ✉️ Contact\n> \n> [Dominik Macháček](https://ufal.mff.cuni.cz/dominik-machacek/), machacek@ufal.mff.cuni.cz********************************************************************************\n> 100%|█████████████████████████████████████| 2.88G/2.88G [07:42<00:00, 6.67MiB/s]\n> Warming up SimulStreaming with /root/data/test_weidel.wav\n> WARNING:whisperlivekit.whisper_streaming_custom.backends:SimulStreaming warmup failed: Cannot set attribute 'src' directly. Use '_unsafe_update_src()' and manually clear `.hash` of all callersinstead.\n> INFO:     Application startup complete.\n> INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\n> INFO:     192.168.10.10:49528 - \"GET / HTTP/1.1\" 200 OK\n> INFO:     192.168.10.10:49528 - \"GET /favicon.ico HTTP/1.1\" 404 Not Found\n> INFO:     ('192.168.10.10', 49543) - \"WebSocket /asr\" [accepted]\n> INFO:whisperlivekit.basic_server:WebSocket connection opened.\n> INFO:     connection open\n> INFO:whisperlivekit.audio_processor:ASR processing: internal_buffer=0.00s, lag=1.49s.\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:SimulStreaming processing error: The size of tensor a (8) must match the size of tensor b (4) at non-singleton dimension 3\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:Error details: RuntimeError: The size of tensor a (8) must match the size of tensor b (4) at non-singleton dimension 3\n> INFO:whisperlivekit.audio_processor:ASR processing: internal_buffer=0.00s, lag=1.97s.\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:SimulStreaming processing error: The size of tensor a (12) must match the size of tensor b (4) at non-singleton dimension 3\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:Error details: RuntimeError: The size of tensor a (12) must match the size of tensor b (4) at non-singleton dimension 3\n> INFO:whisperlivekit.audio_processor:ASR processing: internal_buffer=0.00s, lag=1.44s.\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:SimulStreaming processing error: The size of tensor a (16) must match the size of tensor b (4) at non-singleton dimension 3\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:Error details: RuntimeError: The size of tensor a (16) must match the size of tensor b (4) at non-singleton dimension 3\n> INFO:whisperlivekit.audio_processor:ASR processing: internal_buffer=0.00s, lag=1.94s.\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:SimulStreaming processing error: The size of tensor a (20) must match the size of tensor b (4) at non-singleton dimension 3\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:Error details: RuntimeError: The size of tensor a (20) must match the size of tensor b (4) at non-singleton dimension 3\n> INFO:whisperlivekit.audio_processor:ASR processing: internal_buffer=0.00s, lag=1.44s.\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:SimulStreaming processing error: The size of tensor a (24) must match the size of tensor b (4) at non-singleton dimension 3\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:Error details: RuntimeError: The size of tensor a (24) must match the size of tensor b (4) at non-singleton dimension 3\n> INFO:whisperlivekit.audio_processor:ASR processing: internal_buffer=0.00s, lag=1.95s.\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:SimulStreaming processing error: The size of tensor a (28) must match the size of tensor b (4) at non-singleton dimension 3\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:Error details: RuntimeError: The size of tensor a (28) must match the size of tensor b (4) at non-singleton dimension 3\n> INFO:whisperlivekit.audio_processor:ASR processing: internal_buffer=0.00s, lag=1.45s.\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:SimulStreaming processing error: The size of tensor a (32) must match the size of tensor b (4) at non-singleton dimension 3\n> ERROR:whisperlivekit.whisper_streaming_custom.online_asr:Error details: RuntimeError: The size of tensor a (32) must match the size of tensor b (4) at non-singleton dimension 3\n> INFO:whisperlivekit.audio_processor:Empty audio message received, initiating stop sequence.\n> INFO:whisperlivekit.audio_processor:FFmpeg is stopped\n> INFO:whisperlivekit.audio_processor:FFmpeg stdout processing finished. Signaling downstream processors.\n> DEBUG:whisperlivekit.audio_processor:Sentinel put into transcription_queue.\n> DEBUG:whisperlivekit.audio_processor:Transcription processor received sentinel. Finishing.\n> INFO:whisperlivekit.audio_processor:Transcription processor task finished.\n> WARNING:whisperlivekit.audio_processor:AudioProcessor is stopping. Ignoring incoming audio.\n> INFO:whisperlivekit.audio_processor:Results formatter: All upstream processors are done and in stopping state. Terminating.\n> INFO:whisperlivekit.basic_server:Results generator finished. Sending 'ready_to_stop' to client.\n> INFO:whisperlivekit.basic_server:WebSocket disconnected by client during message receiving loop.\n> INFO:whisperlivekit.basic_server:Cleaning up WebSocket endpoint...\n> INFO:whisperlivekit.audio_processor:Starting cleanup of AudioProcessor resources.\n> INFO:     connection closed\n> INFO:whisperlivekit.audio_processor:Watchdog task cancelled.\n> INFO:whisperlivekit.audio_processor:All processing tasks cancelled or finished.\n> INFO:whisperlivekit.audio_processor:FFmpeg manager stopped.\n> INFO:whisperlivekit.audio_processor:AudioProcessor cleanup complete.\n> INFO:whisperlivekit.basic_server:WebSocket endpoint cleaned up successfully.\n\nThe model is loaded (its using the proper amount of vram showing by nvtop).",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/152/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/150",
      "id": 3245155026,
      "node_id": "I_kwDONfvYSs7BbSLS",
      "number": 150,
      "title": "Echoed transcriptions",
      "user": {
        "login": "mohammed-bahumaish",
        "id": 38791859,
        "node_id": "MDQ6VXNlcjM4NzkxODU5",
        "avatar_url": "https://avatars.githubusercontent.com/u/38791859?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mohammed-bahumaish",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-07-19T09:37:37Z",
      "updated_at": "2025-10-01T22:12:14Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "<img width=\"634\" height=\"556\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/0eff5561-bc24-4398-8d12-4798688d91fe\" />\n\nI'm using tiny model on M4 cpu. i get this issue where transcriptions are repeated many times. \n\nDo you know what could possibly caused this? ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/150/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/146",
      "id": 3209791190,
      "node_id": "I_kwDONfvYSs6_UYbW",
      "number": 146,
      "title": "Can I get current VAD status real time back on FE?",
      "user": {
        "login": "AndrewKirkovski",
        "id": 16134699,
        "node_id": "MDQ6VXNlcjE2MTM0Njk5",
        "avatar_url": "https://avatars.githubusercontent.com/u/16134699?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/AndrewKirkovski",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-07-07T17:36:46Z",
      "updated_at": "2025-08-11T15:59:12Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I'm writing a conversation agent and need to have VAD status online to understand if user is trying to interrupt current TTS answer or not\n\nI've tried using https://github.com/ricky0123/vad for this to detect VAD in browser and to send packets to whisper only when user is talking, i.e. like this\n\n```\nrecorder = new MediaRecorder(stream, { mimeType: \"audio/webm\" });\nrecorder.ondataavailable = (e) => {\n    if (websocket && websocket.readyState === WebSocket.OPEN && isSpeaking) {\n        console.log(e.data, e.data.length)\n        websocket.send(e.data);\n    } else {\n        console.log('Skipped', e.data);\n    }\n};\n```\n\nwhere isSpeaking is VAD status from https://github.com/ricky0123/vad\n\nHowever like this I'm facing FFMpeg issues, seems whisperlivekit relies on stream being non-interrupted?\n\n<img width=\"1109\" height=\"308\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/956c3758-50a1-4822-84b6-561653e92826\" />\n\nSo it would be nice to have VAD status reported by API back in real time\nAlso I was wondering if it's possible to split transcription on silence?\n\nI.e. if I say \"Hello, how are you? <not speaking 5 seconds> How's the weather today?\" currently it produces one line\n\"Hello, how are you? How's the weather today?\"\n\nCould it be improved by some flag to be separated in 2 lines? \"Hello, how are you?\" \"How's the weather today?\" with different start times?\n\nMaybe you could advice where to look into code for that\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/146/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/143",
      "id": 3186616609,
      "node_id": "I_kwDONfvYSs697-kh",
      "number": 143,
      "title": "[UI Feature] split UI for streaming audio and for streaming text",
      "user": {
        "login": "SlavikCA",
        "id": 6293679,
        "node_id": "MDQ6VXNlcjYyOTM2Nzk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/6293679?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SlavikCA",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-06-29T22:08:35Z",
      "updated_at": "2025-06-29T22:08:35Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Currently the UI made to work one-to-one:\n- user sends 1 audio stream\n- user receives 1 transcribed (or translated) text stream\n\nI want to have UI for one-to-many:\n- one user sends 1 audio stream\n- many users can receive transcribed (or translated) text stream\n\n**Use case:**\n- I want to use the system in the church o translate church service to English\n- Audio operator streams audio to WhisperLiveKit server\n- Many users (including audio operator) who need translation connect to another URL where they receive translation text stream\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/143/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/139",
      "id": 3182815511,
      "node_id": "I_kwDONfvYSs69tekX",
      "number": 139,
      "title": "Diarization quality",
      "user": {
        "login": "jwillmer",
        "id": 1503577,
        "node_id": "MDQ6VXNlcjE1MDM1Nzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1503577?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jwillmer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-27T13:19:16Z",
      "updated_at": "2025-06-30T13:04:53Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I tested the service now and I noticed the the diarization is pretty bad. It only works when I use the `--backend whisper_timestamped` and it often splits up one speaker into multiple. Is this the current state of the art / expected by the model or am I doing something wrong?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/139/reactions",
        "total_count": 5,
        "+1": 5,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/138",
      "id": 3181669395,
      "node_id": "I_kwDONfvYSs69pGwT",
      "number": 138,
      "title": "Setup instructions",
      "user": {
        "login": "jwillmer",
        "id": 1503577,
        "node_id": "MDQ6VXNlcjE1MDM1Nzc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/1503577?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jwillmer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-06-27T07:18:40Z",
      "updated_at": "2025-06-27T07:18:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, I managed to get the service to run via docker when excluding the gpu flah:\n\n```\ndocker build -t whisperlivekit-defaults .\ndocker create --name whisperlivekit-base -p 8000:8000 whisperlivekit-defaults --model base\ndocker start -i whisperlivekit-base\n```\n\nHowever if I use my Linux subsystem for Windows and follow the installation instructions with `pip` I run into multiple issues. I installed `ffmpeg` and also started to install all optional dependencies but I still get:\n\n```\n $ whisperlivekit-server --host 0.0.0.0 --port 8000 --model medium --diarization --language auto\nINFO:     Started server process [1776]\nINFO:     Waiting for application startup.\nmodel.bin:   0%|                                                                                       | 1.49M/1.53G [00:19<31:31, 807kB/s]\nmodel.bin: 100%|██████████████████████████████████████████████████████████████████████████████████████| 1.53G/1.53G [02:18<00:00, 11.0MB/s]\nWarming up Whisper with /tmp/whisper_warmup_jfk.wav\nUnable to load any of {libcudnn_ops.so.9.1.0, libcudnn_ops.so.9.1, libcudnn_ops.so.9, libcudnn_ops.so}\nInvalid handle. Cannot load symbol cudnnCreateTensorDescriptor\nAborted (core dumped)\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/138/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/135",
      "id": 3171591856,
      "node_id": "I_kwDONfvYSs69Cqaw",
      "number": 135,
      "title": "I am new to python, I hope you can officially add the Chinese punctuation recovery function in the next version.",
      "user": {
        "login": "qibinlin",
        "id": 13215650,
        "node_id": "MDQ6VXNlcjEzMjE1NjUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/13215650?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/qibinlin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-06-24T11:19:04Z",
      "updated_at": "2025-06-24T11:19:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, author.\n\nThank you very much for providing such a good project.\n\nI plan to use your project in my project.\n\nThis project has room for improvement in Chinese punctuation recovery.\n\nI added the Chinese punctuation recovery function in the file basic_server.py, and the effect is good.\n\nBecause  I am new to python, I hope you can officially add the Chinese punctuation recovery function in the next version.\n\nThank you again!\n\nModifications are as follows:\n\n（0）、Importing Dependencies：\n\nos.environ[\"MODELSCOPE_CACHE\"] = \"./hub\"\nfrom funasr import AutoModel\npunctuation_model  = None\n\n（1）、Loading punctuation recovery model in lifespan：\n\n@asynccontextmanager\nasync def lifespan(app: FastAPI):\n    global transcription_engine\n    global punctuation_model\n    transcription_engine = TranscriptionEngine(\n        **vars(args),\n    )\n    if args.lan == \"zh\":\n\n        punctuation_model = AutoModel(disable_update=True,\n                                      model=\"ct-punc\", \n                                      model_revision=\"v2.0.4\",\n                                      device='cuda')\n    \n    yield\n\n（2）、Process each line of text in handle_websocket_results:\n```\nasync def handle_websocket_results(websocket, results_generator):\n    \"\"\"Consumes results from the audio processor and sends them via WebSocket.\"\"\"\n    global punctuation_model\n    try:\n        logger.info(f\"args.lan: {args.lan}\")\n        async for response in results_generator:\n            # Check whether punctuation recovery is needed for the text in lines\n            if (\n                args.lan == \"zh\"\n                and punctuation_model is not None\n                and \"lines\" in response\n            ):\n                for line in response[\"lines\"]:\n                    if \"text\" in line and line[\"text\"].strip():\n                        try:\n                            result = punctuation_model.generate(input=line[\"text\"])\n                            if isinstance(result, list):\n                                line[\"text_with_punc\"] = result[0].get(\"text\", line[\"text\"])\n                            else:\n                                line[\"text_with_punc\"] = str(result)\n                            logger.debug(f\"Punctuated: {line['text_with_punc']}\")\n                        except Exception as e:\n                            logger.warning(f\"Punctuation recovery failed: {e}\")\n\n            await websocket.send_json(response)\n        # when the results_generator finishes it means all audio has been processed\n        logger.info(\"Results generator finished. Sending 'ready_to_stop' to client.\")\n        await websocket.send_json({\"type\": \"ready_to_stop\"})\n    except WebSocketDisconnect:\n        logger.info(\"WebSocket disconnected while handling results (client likely closed connection).\")\n    except Exception as e:\n        logger.warning(f\"Error in WebSocket results handler: {e}\")\n\n\n```\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/135/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/134",
      "id": 3168223665,
      "node_id": "I_kwDONfvYSs6810Gx",
      "number": 134,
      "title": "SimulStreaming: a new generation of Whisper-Streaming",
      "user": {
        "login": "Gldkslfmsd",
        "id": 5314653,
        "node_id": "MDQ6VXNlcjUzMTQ2NTM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/5314653?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Gldkslfmsd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-06-23T13:31:02Z",
      "updated_at": "2025-07-08T09:56:59Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, \n\nI just want to let you know that I created and published SimulStreaming, a new faster generation of Whisper-Streaming: https://github.com/ufal/SimulStreaming\n\nIt's described here: https://arxiv.org/abs/2506.17077 , soon to be published at IWSLT 2025.\n\nYou can consider merging it into this code. Or [let me know](https://forms.cloud.microsoft/e/7tCxb4gJfB) if you see missing features or have licensing issues -- I'm working on it.\n\nThanks! Enjoy!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/134/reactions",
        "total_count": 3,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 3,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/133",
      "id": 3155016147,
      "node_id": "I_kwDONfvYSs68DbnT",
      "number": 133,
      "title": "pyannote.audio 0.0.1",
      "user": {
        "login": "qibinlin",
        "id": 13215650,
        "node_id": "MDQ6VXNlcjEzMjE1NjUw",
        "avatar_url": "https://avatars.githubusercontent.com/u/13215650?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/qibinlin",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-17T23:46:47Z",
      "updated_at": "2025-06-18T08:04:00Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "RUN whisperlivekit-server --host 0.0.0.0 --port 11507 --model medium --diarization --language auto --model_cache_dir ./model  ,  \n\nError:\n\n Model was trained with pyannote.audio 0.0.1, yours is 3.3.2. Bad things might happen unless you revert pyannote.audio to 0.x.\nModel was trained with torch 1.10.0+cu102, yours is 2.2.2+cu121. Bad things might happen unless you revert torch to 1.x.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/133/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/132",
      "id": 3149543642,
      "node_id": "I_kwDONfvYSs67ujja",
      "number": 132,
      "title": "how to use local pyannote models(segmentation,segmentation-3.0,embedding)？",
      "user": {
        "login": "CQQ-biu",
        "id": 59273809,
        "node_id": "MDQ6VXNlcjU5MjczODA5",
        "avatar_url": "https://avatars.githubusercontent.com/u/59273809?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/CQQ-biu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-06-16T10:53:47Z",
      "updated_at": "2025-06-18T14:27:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "because of the offline environment, could anybody please tell me how to use local pyannote models for diarization.\n\nthx!!!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/132/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/131",
      "id": 3135755177,
      "node_id": "I_kwDONfvYSs6659Op",
      "number": 131,
      "title": "Lots of hallucinations even with VAC",
      "user": {
        "login": "Etnarion",
        "id": 17885582,
        "node_id": "MDQ6VXNlcjE3ODg1NTgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17885582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Etnarion",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 6,
      "created_at": "2025-06-11T07:15:46Z",
      "updated_at": "2025-06-19T13:44:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When I transcribe with a slightly noisy background I get a lot of hallucinations even when I activate VAC. Isn't it supposed to mitigate this? I'm wondering if I do something wrong.\n\nAnyone else experiencing this?\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/131/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/130",
      "id": 3116081260,
      "node_id": "I_kwDONfvYSs65u6Bs",
      "number": 130,
      "title": "How to clear the cache",
      "user": {
        "login": "whaqzhzd",
        "id": 16913061,
        "node_id": "MDQ6VXNlcjE2OTEzMDYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/16913061?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/whaqzhzd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-06-04T02:33:44Z",
      "updated_at": "2025-06-04T02:37:55Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "May I ask, if I want to clear the cache and call the reset function after a 2-second mute(there was no human voice at all.But there might be other noises), how should I do it?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/130/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/127",
      "id": 3092055406,
      "node_id": "I_kwDONfvYSs64TQVu",
      "number": 127,
      "title": "'VACOnlineASRProcessor' object has no attribute 'asr",
      "user": {
        "login": "Etnarion",
        "id": 17885582,
        "node_id": "MDQ6VXNlcjE3ODg1NTgy",
        "avatar_url": "https://avatars.githubusercontent.com/u/17885582?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Etnarion",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-05-26T21:04:20Z",
      "updated_at": "2025-05-28T09:54:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello,\nWhen I add the flag --vac I get the following error:\nTask-7 unexpectedly completed with exception: 'VACOnlineASRProcessor' object has no attribute 'asr\nAny idea why?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/127/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/125",
      "id": 3037680892,
      "node_id": "I_kwDONfvYSs61D1T8",
      "number": 125,
      "title": "Feature Request: Pre-built Docker image",
      "user": {
        "login": "nwithan8",
        "id": 17054780,
        "node_id": "MDQ6VXNlcjE3MDU0Nzgw",
        "avatar_url": "https://avatars.githubusercontent.com/u/17054780?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nwithan8",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-05-04T00:07:10Z",
      "updated_at": "2025-05-05T07:32:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Please consider releasing a pre-built Docker image on Docker Hub or GitHub Container Registry to make it easier to install this via a Compose file or on platforms with Docker app stores that rely on pre-built images (e.g. Unraid, TrueNAS)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/125/reactions",
        "total_count": 4,
        "+1": 4,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/121",
      "id": 3010578039,
      "node_id": "I_kwDONfvYSs6zccZ3",
      "number": 121,
      "title": "Huge Diarization Lag",
      "user": {
        "login": "rrodriguezlo",
        "id": 159421623,
        "node_id": "U_kgDOCYCUtw",
        "avatar_url": "https://avatars.githubusercontent.com/u/159421623?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rrodriguezlo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-04-22T09:57:47Z",
      "updated_at": "2025-08-13T07:29:05Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "At the start of the diarization, there is no noticeable lag. However, as the speech continues, the lag becomes increasingly significant. How can this issue be resolved?\n\nAdditionally, the system is identifying a single speaker as multiple different speakers. Do you have any suggestions to improve speaker consistency?\n\nThanks\n\n![Image](https://github.com/user-attachments/assets/de3be3aa-8046-4221-91b6-d801482d9191)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/121/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/120",
      "id": 3010490658,
      "node_id": "I_kwDONfvYSs6zcHEi",
      "number": 120,
      "title": "How do I use my own Whisper model?",
      "user": {
        "login": "tjdalsry",
        "id": 23258166,
        "node_id": "MDQ6VXNlcjIzMjU4MTY2",
        "avatar_url": "https://avatars.githubusercontent.com/u/23258166?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/tjdalsry",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-04-22T09:23:16Z",
      "updated_at": "2025-04-22T09:29:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I have a custom Whisper model that I modified, how do I set it up to use it?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/120/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/110",
      "id": 2973619829,
      "node_id": "I_kwDONfvYSs6xPdZ1",
      "number": 110,
      "title": "App crash after 15min of transcription.....",
      "user": {
        "login": "minhanh1234",
        "id": 42838979,
        "node_id": "MDQ6VXNlcjQyODM4OTc5",
        "avatar_url": "https://avatars.githubusercontent.com/u/42838979?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/minhanh1234",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-04-05T00:34:56Z",
      "updated_at": "2025-04-17T09:54:15Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "now use why the app completely hang after 15mins of recording.\neverything seem to working until the 15min mark hit",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/110/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/102",
      "id": 2945592059,
      "node_id": "I_kwDONfvYSs6vkir7",
      "number": 102,
      "title": "System sound + mic real time transcription",
      "user": {
        "login": "rrodriguezlo",
        "id": 159421623,
        "node_id": "U_kgDOCYCUtw",
        "avatar_url": "https://avatars.githubusercontent.com/u/159421623?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rrodriguezlo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 10,
      "created_at": "2025-03-25T07:36:59Z",
      "updated_at": "2025-10-15T08:38:03Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Would be really interesting if you can add system sound + mic real time transcription. This library is recording system sound: https://github.com/s0d3s/PyAudioWPatch",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/102/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/98",
      "id": 2936495321,
      "node_id": "I_kwDONfvYSs6vB1zZ",
      "number": 98,
      "title": "More than 2 concurrent websocket-connections cause problems for FFmpeg",
      "user": {
        "login": "Trollgeir",
        "id": 7591857,
        "node_id": "MDQ6VXNlcjc1OTE4NTc=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7591857?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Trollgeir",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-20T19:48:54Z",
      "updated_at": "2025-03-25T06:30:29Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Whenever I try to open more than 2 browsers to stream the websocket connections they seem to not work. After not too long I get a broken pipe warning from FFmpeg. I added an extra print in the `AudioProcessor()` at the `BrokenPipeError`  for debugging with `print(self.ffmpeg_process.stderr.read())`: \n\n```ffmpeg version 6.1.1-3ubuntu5 Copyright (c) 2000-2023 the FFmpeg developers\\n  built with gcc 13 (Ubuntu 13.2.0-23ubuntu3)\\n  configuration: --prefix=/usr --extra-version=3ubuntu5 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --disable-omx --enable-gnutls --enable-libaom --enable-libass --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libglslang --enable-libgme --enable-libgsm --enable-libharfbuzz --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg --enable-openal --enable-opencl --enable-opengl --disable-sndio --enable-libvpl --disable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-ladspa --enable-libbluray --enable-libjack --enable-libpulse --enable-librabbitmq --enable-librist --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libx264 --enable-libzmq --enable-libzvbi --enable-lv2 --enable-sdl2 --enable-libplacebo --enable-librav1e --enable-pocketsphinx --enable-librsvg --enable-libjxl --enable-shared\\n  libavutil      58. 29.100 / 58. 29.100\\n  libavcodec     60. 31.102 / 60. 31.102\\n  libavformat    60. 16.100 / 60. 16.100\\n  libavdevice    60.  3.100 / 60.  3.100\\n  libavfilter     9. 12.100 /  9. 12.100\\n  libswscale      7.  5.100 /  7.  5.100\\n  libswresample   4. 12.100 /  4. 12.100\\n  libpostproc    57.  3.100 / 57.  3.100\\n[matroska,webm @ 0x604acab80840] EBML header parsing failed\\n[in#0 @ 0x604acab80740] Error opening input: Invalid data found when processing input\\nError opening input file pipe:0.\\nError opening input files: Invalid data found when processing input\\n'```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/98/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/94",
      "id": 2934252443,
      "node_id": "I_kwDONfvYSs6u5SOb",
      "number": 94,
      "title": "The frontend and backend WebSocket connection is unstable  after ws 16min",
      "user": {
        "login": "caofei88",
        "id": 64238311,
        "node_id": "MDQ6VXNlcjY0MjM4MzEx",
        "avatar_url": "https://avatars.githubusercontent.com/u/64238311?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/caofei88",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-03-20T06:29:36Z",
      "updated_at": "2025-04-02T14:51:59Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "![Image](https://github.com/user-attachments/assets/eae24b85-9434-4869-8977-99eec1e12d34) @QuentinFuxa ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/94/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/90",
      "id": 2930099320,
      "node_id": "I_kwDONfvYSs6upcR4",
      "number": 90,
      "title": "WebSocket freezes. Worker Timeout",
      "user": {
        "login": "simondpalmer",
        "id": 50067089,
        "node_id": "MDQ6VXNlcjUwMDY3MDg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/50067089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/simondpalmer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-03-19T00:09:47Z",
      "updated_at": "2025-03-19T00:09:47Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Websocket frequently freezes at around 12 mins. I have turned on all debug messages. Here they are below:\n```\n2025-03-18T22:30:46.528526907Z:\nINFO:faster_whisper:Processing audio with duration 00:16.466\n2025-03-18T22:30:46.536108606Z:\nDEBUG:faster_whisper:Processing segment at 00:00.000\n2025-03-18T22:30:47.288219927Z:\nDEBUG:src.whisper_streaming.online_asr:>>>> COMPLETE NOW:  okay. Like there's people in the\n2025-03-18T22:30:47.288254846Z:\nDEBUG:src.whisper_streaming.online_asr:INCOMPLETE:  tutorials, but nobody seems to care.\n2025-03-18T22:30:47.288269072Z:\nDEBUG:src.whisper_streaming.online_asr:--- Not enough segments to chunk\nDEBUG:src.whisper_streaming.online_asr:Chunking segment\nDEBUG:src.whisper_streaming.online_asr:Length of audio buffer now: 16.47 seconds\n2025-03-18T22:36:34.317874507Z:\n[2025-03-18 22:36:34 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:44)\n2025-03-18T22:36:34.485571314Z:\n[2025-03-18 22:36:34 +0000] [1] [WARNING] Worker with pid 44 was terminated due to signal 6\n2025-03-18T22:36:34.488758095Z:\n[2025-03-18 22:36:34 +0000] [1186] [INFO] Booting worker with pid: 1186\n``` \nAny ideas @SilasK or @QuentinFuxa ?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/90/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/86",
      "id": 2917605754,
      "node_id": "I_kwDONfvYSs6t5yF6",
      "number": 86,
      "title": "Words keep repeating from the mistake",
      "user": {
        "login": "Quanult",
        "id": 72118830,
        "node_id": "MDQ6VXNlcjcyMTE4ODMw",
        "avatar_url": "https://avatars.githubusercontent.com/u/72118830?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Quanult",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 8,
      "created_at": "2025-03-13T15:39:57Z",
      "updated_at": "2025-03-15T15:51:40Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi, I'm working with whisper streaming for transcript audio. Most of the time, the transcriptor is working fine, but in some cases, part of the translation is incorrect, and it gets worse from there, words keep repeating, I think it's because the context and promp were updated before, causing the output to get worse. Has anyone encountered this, please help me. \n\n![Image](https://github.com/user-attachments/assets/dd06c470-094c-4f47-bf40-ee6349edf6c0)\n\n\nI had record it from the web above and tried it with  [whisper streaming](https://github.com/ufal/whisper_streaming) and the output is the same.\n\n> INFO    Audio duration is: 28.00 seconds\nINFO    Loading Whisper large-v3-turbo model for ja...\nINFO    done. It took 8.57 seconds.\nDEBUG   PROMPT: \nDEBUG   CONTEXT: \nDEBUG   transcribing 3.00 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (0.68, 2.94, '貨 物 船 と パ ン カ ー が 所')\nDEBUG   len of buffer now: 3.00\nDEBUG   ## last processed 3.00 s, now is 3.28, the latency is 0.28\nDEBUG   PROMPT: \nDEBUG   CONTEXT: \nDEBUG   transcribing 6.01 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (0.68, 1.78, '貨 物 船 と')\nDEBUG   INCOMPLETE: (1.78, 29.98, 'タ ン カ ー が 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船')\nDEBUG   len of buffer now: 6.01\nDEBUG   ## last processed 6.01 s, now is 7.75, the latency is 1.74\nDEBUG   PROMPT: \nDEBUG   CONTEXT: 貨 物 船 と\nDEBUG   transcribing 9.01 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (1.78, 29.98, 'タ ン カ ー が 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   len of buffer now: 9.01\nDEBUG   ## last processed 9.01 s, now is 10.69, the latency is 1.68\nDEBUG   PROMPT: \nDEBUG   CONTEXT: 貨 物 船 と タ ン カ ー が 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船\nDEBUG   transcribing 12.01 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   len of buffer now: 12.01\nDEBUG   ## last processed 12.01 s, now is 13.67, the latency is 1.67\nDEBUG   PROMPT: \nDEBUG   CONTEXT: 貨 物 船 と タ ン カ ー が 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船\nDEBUG   transcribing 15.01 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   --- not enough segments to chunk\nDEBUG   chunking segment\nDEBUG   len of buffer now: 15.01\nDEBUG   ## last processed 15.01 s, now is 16.72, the latency is 1.72\nDEBUG   PROMPT: \nDEBUG   CONTEXT: 貨 物 船 と タ ン カ ー が 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船\nDEBUG   transcribing 18.01 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   --- not enough segments to chunk\nDEBUG   chunking segment\nDEBUG   len of buffer now: 18.01\nDEBUG   ## last processed 18.01 s, now is 19.71, the latency is 1.70\nDEBUG   PROMPT: \nDEBUG   CONTEXT: 貨 物 船 と タ ン カ ー が 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船\nDEBUG   transcribing 21.01 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   --- not enough segments to chunk\nDEBUG   chunking segment\nDEBUG   len of buffer now: 21.01\nDEBUG   ## last processed 21.01 s, now is 22.62, the latency is 1.61\nDEBUG   PROMPT: \nDEBUG   CONTEXT: 貨 物 船 と タ ン カ ー が 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船\nDEBUG   transcribing 24.01 seconds from 0.00\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   --- segment chunked at 8.30\nDEBUG   chunking segment\nDEBUG   len of buffer now: 15.71\nDEBUG   ## last processed 24.01 s, now is 25.10, the latency is 1.09\nDEBUG   PROMPT: 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船\nDEBUG   CONTEXT: 船 船 船 船 船 船 船\nDEBUG   transcribing 18.72 seconds from 8.30\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   --- not enough segments to chunk\nDEBUG   chunking segment\nDEBUG   len of buffer now: 18.72\nDEBUG   ## last processed 27.02 s, now is 28.70, the latency is 1.68\nDEBUG   PROMPT: 衝 突 し、 炎 上 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船 船\nDEBUG   CONTEXT: 船 船 船 船 船 船 船\nDEBUG   transcribing 19.70 seconds from 8.30\nDEBUG   >>>>COMPLETE NOW: (None, None, '')\nDEBUG   INCOMPLETE: (None, None, '')\nDEBUG   --- not enough segments to chunk\nDEBUG   chunking segment\nDEBUG   len of buffer now: 19.70\nDEBUG   ## last processed 30.02 s, now is 31.73, the latency is 1.72\nDEBUG   last, noncommited: (None, None, '')",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/86/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/82",
      "id": 2913106638,
      "node_id": "I_kwDONfvYSs6tonrO",
      "number": 82,
      "title": "Transcription blocks main thread",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-03-12T08:11:28Z",
      "updated_at": "2025-03-12T08:12:19Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I know the user interface suggest to use a smaller model. But Is there not a way to run transcription in a different thread!?\n\nI tried with `from concurrent.futures import ThreadPoolExecutor` but this reinit the online-asr multiple times...",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/82/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/81",
      "id": 2912865288,
      "node_id": "I_kwDONfvYSs6tnswI",
      "number": 81,
      "title": "Max length of recording session",
      "user": {
        "login": "simondpalmer",
        "id": 50067089,
        "node_id": "MDQ6VXNlcjUwMDY3MDg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/50067089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/simondpalmer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-03-12T06:39:01Z",
      "updated_at": "2025-09-23T16:48:18Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Is there a max length on any session? With the latest commits I get to about 2 mins and it freezes without any error messages",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/81/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/78",
      "id": 2905676952,
      "node_id": "I_kwDONfvYSs6tMRyY",
      "number": 78,
      "title": "Ideas: Stop and continue.",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-03-09T21:09:54Z",
      "updated_at": "2025-03-10T15:01:24Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Le'ts see if I have time. \n\n- [ ] Finish transcribing after stop signal. \n- [ ] Record again will append to transcript\n- [ ] Reset transcript button\n    - only apears when stoped and transcript is written\n    - Reset stops all transcribing which might still be running\n- [ ] Download of transcript?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/78/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/77",
      "id": 2905657282,
      "node_id": "I_kwDONfvYSs6tMM_C",
      "number": 77,
      "title": "Diarization warning: Mismatch between frames and weights numbers.",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-03-09T20:28:58Z",
      "updated_at": "2025-03-09T20:28:58Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "2025-03-09 21:26:28,504 - DEBUG - Length of audio buffer now: 13.23 seconds\n/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/pyannote/audio/models/blocks/pooling.py:118: UserWarning: Mismatch between frames (279) and weights (293) numbers.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/77/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/74",
      "id": 2902746848,
      "node_id": "I_kwDONfvYSs6tBGbg",
      "number": 74,
      "title": "Sentence is formed from words from different speakers",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-03-07T11:26:06Z",
      "updated_at": "2025-03-07T11:26:06Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Thanks to the new classe #71 I spotted an error where a sentence is formed from words from different speakers.\n\nI used diarization and sentence splitting.\n\nWhat shoule be done in this case?\n\nSpeaker change should always be considered a different sentence, isn't it?\n\nWhy is it necessary to concatenate the sentence at the end of sentence splitting?\n\n\n\n```\n2025-03-07 11:48:58,243 - INFO - 25.5440625 seconds of audio will be processed by the model.\n2025-03-07 11:48:59,626 - WARNING - Exception in transcription_processor: sequence item 0: expected str instance, ASRToken found\n2025-03-07 11:48:59,627 - WARNING - Traceback: Traceback (most recent call last):\n  File \"/Users/silas/GitHub/whisper_streaming_web/whisper_fastapi_online_server.py\", line 216, in transcription_processor\n    new_tokens = online.process_iter()\n                 ^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/silas/GitHub/whisper_streaming_web/whisper_streaming_custom/online_asr.py\", line 200, in process_iter\n    self.chunk_completed_sentence()\n  File \"/Users/silas/GitHub/whisper_streaming_web/whisper_streaming_custom/online_asr.py\", line 221, in chunk_completed_sentence\n    sentences = self.committed.split_to_sentences(self.tokenize)\n                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/silas/GitHub/whisper_streaming_web/timed_objects.py\", line 285, in split_to_sentences\n    sentences.append(sent_tokens.concatenate())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/silas/GitHub/whisper_streaming_web/timed_objects.py\", line 95, in concatenate\n    logger.warning(f\"Not all words in the sequence are not from the same speaker: {self}\")\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/74/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/73",
      "id": 2902611402,
      "node_id": "I_kwDONfvYSs6tAlXK",
      "number": 73,
      "title": "Simple stoping recording raises error",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-03-07T10:26:20Z",
      "updated_at": "2025-03-07T10:26:20Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "```\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/uvicorn/protocols/websockets/websockets_impl.py\", line 331, in asgi_send\n    await self.send(data)  # type: ignore[arg-type]\n    ^^^^^^^^^^^^^^^^^^^^^\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/websockets/legacy/protocol.py\", line 620, in send\n    await self.ensure_open()\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/websockets/legacy/protocol.py\", line 930, in ensure_open\n    raise self.connection_closed_exc()\nwebsockets.exceptions.ConnectionClosedOK: received 1005 (no status received [internal]); then sent 1005 (no status received [internal])\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/starlette/websockets.py\", line 85, in send\n    await self._send(message)\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/starlette/_exception_handler.py\", line 39, in sender\n    await send(message)\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/uvicorn/protocols/websockets/websockets_impl.py\", line 344, in asgi_send\n    raise ClientDisconnected from exc\nuvicorn.protocols.utils.ClientDisconnected\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/Users/silas/GitHub/whisper_streaming_web/whisper_fastapi_online_server.py\", line 352, in results_formatter\n    await websocket.send_json(response)\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/starlette/websockets.py\", line 175, in send_json\n    await self.send({\"type\": \"websocket.send\", \"text\": text})\n  File \"/Users/silas/GitHub/whisper_streaming_web/.pixi/envs/default/lib/python3.11/site-packages/starlette/websockets.py\", line 88, in send\n    raise WebSocketDisconnect(code=1006)\nstarlette.websockets.WebSocketDisconnect\n\n2025-03-07 11:23:48,047 - WARNING - WebSocket disconnected.\nINFO:     connection closed\n2025-03-07 11:23:48,051 - INFO - WebSocket endpoint cleaned up.\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/73/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/72",
      "id": 2901934574,
      "node_id": "I_kwDONfvYSs6s-AHu",
      "number": 72,
      "title": "Couldn't get --vac, --vac-chunk-size working",
      "user": {
        "login": "nathanmfrench",
        "id": 29637626,
        "node_id": "MDQ6VXNlcjI5NjM3NjI2",
        "avatar_url": "https://avatars.githubusercontent.com/u/29637626?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nathanmfrench",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-07T03:47:28Z",
      "updated_at": "2025-03-07T09:34:34Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Those flags were giving me some trouble, the vad works fine, but vac silently breaks (looks like bug happens before insert_audio_chunk occurs)",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/72/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/69",
      "id": 2900258656,
      "node_id": "I_kwDONfvYSs6s3m9g",
      "number": 69,
      "title": "Dockerfile",
      "user": {
        "login": "NEOherozzz",
        "id": 11733641,
        "node_id": "MDQ6VXNlcjExNzMzNjQx",
        "avatar_url": "https://avatars.githubusercontent.com/u/11733641?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/NEOherozzz",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-06T12:21:19Z",
      "updated_at": "2025-04-08T10:14:04Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "We need a Dockerfile to enable faster deployments and ensure consistent environments.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/69/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/66",
      "id": 2895859993,
      "node_id": "I_kwDONfvYSs6sm1EZ",
      "number": 66,
      "title": "Program runs fine but no output, FFmpeg is in system path",
      "user": {
        "login": "yhmickey",
        "id": 34559558,
        "node_id": "MDQ6VXNlcjM0NTU5NTU4",
        "avatar_url": "https://avatars.githubusercontent.com/u/34559558?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yhmickey",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-03-05T01:36:32Z",
      "updated_at": "2025-03-14T21:18:20Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Description: I’m encountering an issue where the program runs without any errors, but there is no output produced. FFmpeg is correctly installed and added to the system path. I’ve verified that FFmpeg works fine by running it directly from the command line. I have check the Chrome can detect the voice.\n\nOS: windows 11\nFFmpeg: ffmpeg version 2025-03-03\nOutput:\n\npython whisper_fastapi_online_server.py --host 0.0.0.0 --port 8000 --model small --task translate\nINFO:     Will watch for changes in these directories: ['D:\\\\projects\\\\whisper_streaming_web']\nINFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\nINFO:     Started reloader process [2496] using StatReload\nINFO:     Started server process [23548]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.\nINFO:     127.0.0.1:2609 - \"GET / HTTP/1.1\" 200 OK\nINFO:     ('127.0.0.1', 2614) - \"WebSocket /asr\" [accepted]\n2025-03-04 18:30:31,260 - INFO - WebSocket connection opened.\n2025-03-04 18:30:31,273 - INFO - FFmpeg process started.\nINFO:     connection open\n2025-03-04 18:30:33,678 - INFO - 0.0 seconds of audio will be processed by the model.\n\n\n<img width=\"744\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/26480552-17c7-4c2f-b3f4-ea33a185309c\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/66/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/65",
      "id": 2895360072,
      "node_id": "I_kwDONfvYSs6sk7BI",
      "number": 65,
      "title": "Critical issues with VAC",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 4,
      "created_at": "2025-03-04T20:38:29Z",
      "updated_at": "2025-05-29T11:05:12Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "\n1. Once an end is detected the buffer up to the end of speack frame is added to the online audio buffer, but never transcribed. \n\n\nhttps://github.com/QuentinFuxa/whisper_streaming_web/blob/e3550ef07dc819e93773068de963d5c02316aa89/whisper_streaming_custom/online_asr.py#L316\n\n\n2. If a start is detected the online ASR is re-initialized. but the previous audio buffer might not be finished!\n\nhttps://github.com/QuentinFuxa/whisper_streaming_web/blob/e3550ef07dc819e93773068de963d5c02316aa89/whisper_streaming_custom/online_asr.py#L396C29-L396C33\n\nI found a solution to this by creating new entities of online-asr for each speak segment and finish one after the other. https://github.com/SilasK/realtime-translation/blob/0f2e7f368548eea3370d3acf5d44d8f236be23df/src/whisper_streaming/online_asr.py#L554\n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/65/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/64",
      "id": 2895345198,
      "node_id": "I_kwDONfvYSs6sk3Yu",
      "number": 64,
      "title": "I don't get VAc to work",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-03-04T20:29:31Z",
      "updated_at": "2025-03-04T20:29:31Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "with --vac I don't get any transcription only the message that siler vad is loaded.\n\nI don't know how to use pdb as the latest version has discontinued the debug flag. ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/64/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/63",
      "id": 2893458390,
      "node_id": "I_kwDONfvYSs6sdqvW",
      "number": 63,
      "title": "Ask about the Enhanced Sentence Segmentation feature",
      "user": {
        "login": "danghieuan",
        "id": 52211396,
        "node_id": "MDQ6VXNlcjUyMjExMzk2",
        "avatar_url": "https://avatars.githubusercontent.com/u/52211396?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/danghieuan",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 3,
      "created_at": "2025-03-04T08:56:29Z",
      "updated_at": "2025-03-10T05:35:02Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hello, this is really amazing work on enhancing [Whisper streaming](https://github.com/ufal/whisper_streaming/tree/main)! Thank you, @QuentinFuxa.\n\nI saw your **README.md** mentioning: **Enhanced Sentence Segmentation** – Improved buffer trimming for better accuracy across languages.\n\nCould you help me understand what _Improved buffer trimming_ means compared to the original [Whisper streaming](https://github.com/ufal/whisper_streaming/tree/main) repo?\n\nI mean, I don't know what issues the original [Whisper streaming](https://github.com/ufal/whisper_streaming/tree/main). Also, what is your solution to these problems in your code?\n\nI’d really appreciate your explanation. Thank you in advance!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/63/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/61",
      "id": 2891216269,
      "node_id": "I_kwDONfvYSs6sVHWN",
      "number": 61,
      "title": "FileNotFoundError: [WinError 2] when webSocket connection gets established",
      "user": {
        "login": "Almost-Senseless-Coder",
        "id": 109462027,
        "node_id": "U_kgDOBoZCCw",
        "avatar_url": "https://avatars.githubusercontent.com/u/109462027?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Almost-Senseless-Coder",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 2,
      "created_at": "2025-03-03T13:10:45Z",
      "updated_at": "2025-03-04T13:20:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "The following error occurs on Windows 11 when attempting to connect to the WebSocket:\n\n```\npython whisper_fastapi_online_server.py --host 0.0.0.0 --port 8000 --model medium\nINFO:     Will watch for changes in these directories: ['C:\\\\Users\\\\xxx\\\\whisper_streaming_web']\nINFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\nINFO:     Started reloader process [10568] using StatReload\nINFO:     Started server process [9520]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.\nINFO:     127.0.0.1:61064 - \"GET / HTTP/1.1\" 200 OK\nINFO:     ('127.0.0.1', 61068) - \"WebSocket /asr\" [accepted]\n2025-03-03 13:50:16,905 - INFO - WebSocket connection opened.\nERROR:    Exception in ASGI application\nTraceback (most recent call last):\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\uvicorn\\protocols\\websockets\\websockets_impl.py\", line 243, in run_asgi\n    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\uvicorn\\middleware\\proxy_headers.py\", line 60, in __call__\n    return await self.app(scope, receive, send)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\fastapi\\applications.py\", line 1054, in __call__\n    await super().__call__(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\applications.py\", line 112, in __call__\n    await self.middleware_stack(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\middleware\\errors.py\", line 152, in __call__\n    await self.app(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\middleware\\cors.py\", line 77, in __call__\n    await self.app(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\middleware\\exceptions.py\", line 62, in __call__\n    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\_exception_handler.py\", line 53, in wrapped_app\n    raise exc\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\_exception_handler.py\", line 42, in wrapped_app\n    await app(scope, receive, sender)\n  File \n\"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\routing.py\", line 714, in __call__\n    await self.middleware_stack(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\routing.py\", line 734, in app\n    await route.handle(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\routing.py\", line 362, in handle\n    await self.app(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\routing.py\", line 95, in app\n    await wrap_app_handling_exceptions(app, session)(scope, receive, send)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\_exception_handler.py\", line 53, in wrapped_app\n    raise exc\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\_exception_handler.py\", line 42, in wrapped_app\n    await app(scope, receive, sender)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\starlette\\routing.py\", line 93, in app\n    await func(session)\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\fastapi\\routing.py\", line 383, in app\n    await dependant.call(**solved_result.values)\n  File \"C:\\Users\\xxx\\whisper_streaming_web\\whisper_fastapi_online_server.py\", line 400, in websocket_endpoint\n    await restart_ffmpeg()\n  File \"C:\\Users\\xxx\\whisper_streaming_web\\whisper_fastapi_online_server.py\", line 391, in restart_ffmpeg\n    ffmpeg_process = await start_ffmpeg_decoder()\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"C:\\Users\\xxx\\whisper_streaming_web\\whisper_fastapi_online_server.py\", line 200, in start_ffmpeg_decoder\n    .run_async(pipe_stdin=True, pipe_stdout=True, pipe_stderr=True)\n     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\ffmpeg\\_run.py\", line 284, in run_async\n    return subprocess.Popen(\n           ^^^^^^^^^^^^^^^^^\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\subprocess.py\", line 1026, in __init__\n    self._execute_child(args, executable, preexec_fn, close_fds,\n  File \"C:\\Users\\xxx\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\subprocess.py\", line 1538, in _execute_child\n    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,\n                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nFileNotFoundError: [WinError 2] \nINFO:     connection open\nINFO:     connection closed\n```\n\nThe error occurs on the latest version of the main branch; `whisper-streaming` itself runs fine.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/61/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/58",
      "id": 2875812095,
      "node_id": "I_kwDONfvYSs6raWj_",
      "number": 58,
      "title": "Diarization Efficacy",
      "user": {
        "login": "simondpalmer",
        "id": 50067089,
        "node_id": "MDQ6VXNlcjUwMDY3MDg5",
        "avatar_url": "https://avatars.githubusercontent.com/u/50067089?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/simondpalmer",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-24T18:24:16Z",
      "updated_at": "2025-03-01T11:05:37Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi love the work you are doing and especially the diarization functionality. I am using your most current PR's.\nI have been trying to use Diarization on just a simple one-to-one conversation between quite different voices however speaker diarization is a bit choppy with diart grouping some dialogue under one speaker when it should be multiple (15min conversation).\n\nWhat would be a way to optimise the diarizer? \nWhat test audio do you use? And how do you measure efficacy of the diarization process? DBSCAN or other?\n\nFurthermore, is there a way to collect all diart centroids and compare them to a known centroid (the speaker is known)? in real-time?",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/58/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/50",
      "id": 2859536799,
      "node_id": "I_kwDONfvYSs6qcRGf",
      "number": 50,
      "title": "\"OSError: [Errno 22] Invalid argument\" when sending audio directly to the websocket",
      "user": {
        "login": "Jamie22",
        "id": 7672079,
        "node_id": "MDQ6VXNlcjc2NzIwNzk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7672079?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Jamie22",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-02-18T07:05:45Z",
      "updated_at": "2025-02-18T07:12:08Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I wrote my own C# app to send data from a WAV file over the websocket in 1 kB chunks. When I run it, I get this error:\n\n```\nC:\\whisper_streaming_web>python whisper_fastapi_online_server.py --host 0.0.0.0 --port 8000 --model tiny.en\nINFO:     Will watch for changes in these directories: ['C:\\\\whisper_streaming_web']\nINFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\nINFO:     Started reloader process [14628] using WatchFiles\nINFO:     Started server process [15756]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.\nINFO:     ('127.0.0.1', 52259) - \"WebSocket /asr\" [accepted]\n2025-02-18 01:58:23,296 - INFO - WebSocket connection opened.\n2025-02-18 01:58:23,316 - INFO - FFmpeg process started.\nINFO:     connection open\n2025-02-18 01:58:24,562 - INFO - FFmpeg stdout closed.\n2025-02-18 01:58:24,562 - INFO - Exiting ffmpeg_stdout_reader...\nERROR:    Exception in ASGI application\nTraceback (most recent call last):\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\uvicorn\\protocols\\websockets\\websockets_impl.py\", line 243, in run_asgi\n    result = await self.app(self.scope, self.asgi_receive, self.asgi_send)  # type: ignore[func-returns-value]\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\uvicorn\\middleware\\proxy_headers.py\", line 60, in __call__\n    return await self.app(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\fastapi\\applications.py\", line 1054, in __call__\n    await super().__call__(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\applications.py\", line 112, in __call__\n    await self.middleware_stack(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\middleware\\errors.py\", line 152, in __call__\n    await self.app(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\middleware\\cors.py\", line 77, in __call__\n    await self.app(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\middleware\\exceptions.py\", line 62, in __call__\n    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\_exception_handler.py\", line 53, in wrapped_app\n    raise exc\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\_exception_handler.py\", line 42, in wrapped_app\n    await app(scope, receive, sender)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\routing.py\", line 715, in __call__\n    await self.middleware_stack(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\routing.py\", line 735, in app\n    await route.handle(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\routing.py\", line 362, in handle\n    await self.app(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\routing.py\", line 95, in app\n    await wrap_app_handling_exceptions(app, session)(scope, receive, send)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\_exception_handler.py\", line 53, in wrapped_app\n    raise exc\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\_exception_handler.py\", line 42, in wrapped_app\n    await app(scope, receive, sender)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\starlette\\routing.py\", line 93, in app\n    await func(session)\n  File \"C:\\Users\\jamies\\AppData\\Local\\Programs\\Python\\Python310\\lib\\site-packages\\fastapi\\routing.py\", line 383, in app\n    await dependant.call(**solved_result.values)\n  File \"C:\\Users\\jamies\\Source\\Repos\\whisper_streaming_web\\whisper_fastapi_online_server.py\", line 244, in websocket_endpoint\n    ffmpeg_process.stdin.flush()\nOSError: [Errno 22] Invalid argument\nINFO:     connection closed\n```\n\nThe C# code is:\n\n```\nvar ws = new ClientWebSocket();\nawait ws.ConnectAsync(new Uri(\"ws://localhost:8000/asr\"), CancellationToken.None);\nusing (FileStream fs = await OpenRead(@\"C:\\test.wav\"))\n{\n    byte[] b = new byte[1024];\n    while (fs.Read(b, 0, b.Length) > 0)\n    {\n        await ws.SendAsync(new ArraySegment<byte>(b), WebSocketMessageType.Binary, true, CancellationToken.None);\n    }\n}\n```\n\nI also tried it with a webm file and got the same result. I don't have this error when I use the web page demo.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/50/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/49",
      "id": 2859516145,
      "node_id": "I_kwDONfvYSs6qcMDx",
      "number": 49,
      "title": "\"x seconds of audio will be processed by the model.\" but no text appears",
      "user": {
        "login": "Jamie22",
        "id": 7672079,
        "node_id": "MDQ6VXNlcjc2NzIwNzk=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7672079?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Jamie22",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-02-18T06:53:21Z",
      "updated_at": "2025-03-14T09:47:36Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I was originally able to get text for about 30-45 seconds before it crashed, but after uninstalling and reinstalling ffmpeg-python, I don't see any text on the page at all aside from \"Speaker 0:\"\n\nThis is the console output:\n\n```\nC:\\whisper_streaming_web>python whisper_fastapi_online_server.py --host 0.0.0.0 --port 8000 --model tiny.en\nINFO:     Will watch for changes in these directories: ['C:\\\\whisper_streaming_web']\nINFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\nINFO:     Started reloader process [22836] using WatchFiles\nINFO:     Started server process [8332]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.\nINFO:     127.0.0.1:33920 - \"GET / HTTP/1.1\" 200 OK\nINFO:     ('127.0.0.1', 33924) - \"WebSocket /asr\" [accepted]\n2025-02-18 01:33:21,161 - INFO - WebSocket connection opened.\n2025-02-18 01:33:21,181 - INFO - FFmpeg process started.\nINFO:     connection open\n2025-02-18 01:33:23,381 - INFO - 0.0 seconds of audio will be processed by the model.\n2025-02-18 01:33:24,402 - INFO - 1.228 seconds of audio will be processed by the model.\n2025-02-18 01:33:26,441 - INFO - 2.728 seconds of audio will be processed by the model.\n2025-02-18 01:33:27,460 - INFO - 4.128 seconds of audio will be processed by the model.\n2025-02-18 01:33:28,482 - INFO - 5.628 seconds of audio will be processed by the model.\n2025-02-18 01:33:29,502 - INFO - 6.628 seconds of audio will be processed by the model.\n2025-02-18 01:33:30,521 - INFO - 8.028 seconds of audio will be processed by the model.\n2025-02-18 01:33:32,560 - INFO - 9.056 seconds of audio will be processed by the model.\n2025-02-18 01:33:33,581 - INFO - 10.084 seconds of audio will be processed by the model.\n2025-02-18 01:33:34,601 - INFO - 11.584 seconds of audio will be processed by the model.\n2025-02-18 01:33:35,621 - INFO - 12.584 seconds of audio will be processed by the model.\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/49/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/41",
      "id": 2840725226,
      "node_id": "I_kwDONfvYSs6pUgbq",
      "number": 41,
      "title": "Adding test cases ",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-02-09T14:44:12Z",
      "updated_at": "2025-02-09T14:44:12Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Could we add test cases e.g. strreaming audio files instead of mic. Or even audio generated from text. \n\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/41/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/29",
      "id": 2816758229,
      "node_id": "I_kwDONfvYSs6n5FHV",
      "number": 29,
      "title": "Is it normal that the context (non_promt) is not used?",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-28T21:33:55Z",
      "updated_at": "2025-01-28T21:33:55Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "https://github.com/QuentinFuxa/whisper_streaming_web/blob/d3d1758d870a00ee002b6d26565f9d7c81e67e40/src/whisper_streaming/online_asr.py#L163",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/29/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/28",
      "id": 2816746063,
      "node_id": "I_kwDONfvYSs6n5CJP",
      "number": 28,
      "title": "Ideas",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignee": null,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-01-28T21:25:46Z",
      "updated_at": "2025-01-28T21:26:14Z",
      "closed_at": null,
      "author_association": "CONTRIBUTOR",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "- [ ] Break at commas\n- [ ] Paragraph break inference",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/28/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/2",
      "id": 2761042396,
      "node_id": "I_kwDONfvYSs6kkinc",
      "number": 2,
      "title": "Process freezes after 9 - 16 loops of VACOnlineASRProcessor",
      "user": {
        "login": "rupnil-codes",
        "id": 127608850,
        "node_id": "U_kgDOB5soEg",
        "avatar_url": "https://avatars.githubusercontent.com/u/127608850?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/rupnil-codes",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678980,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDaBA",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/To%20Be%20Analyzed",
          "name": "To Be Analyzed",
          "color": "E5F250",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "QuentinFuxa",
        "id": 38427957,
        "node_id": "MDQ6VXNlcjM4NDI3OTU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/QuentinFuxa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 14,
      "created_at": "2024-12-27T16:00:34Z",
      "updated_at": "2025-01-15T00:20:17Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Greetings, I'm a fellow developer. I just modified the script so that it can be run on the terminal AND added support for GROQ API (That is working fine u don't have to worry bout). I firstly noticed that when using the demo on the web app, the loop of VACOnlineASRProcessor where it processes 1 sec or so chunks was freezing after 9-12 loops, I recreated the script but now as a terminal based script... However the same issue persists. I have been able to narrow the issue down through some print statements and it is in the VACOnlineASRProcessor class. So I request you to please look into this matter. I am providing my modified scripts below:\r\n\r\n`whisper_online_terminal.py`\r\n```py\r\nimport numpy as np\r\nimport sounddevice as sd\r\nimport ffmpeg\r\nimport threading\r\n\r\nfrom whisper_online import asr_factory, VACOnlineASRProcessor\r\n\r\ndebug_num = 0\r\n\r\n# Constants\r\nSAMPLE_RATE = 16000\r\nCHANNELS = 1\r\nCHUNK_DURATION = 0.04  # in seconds\r\nCHUNK_SIZE = int(SAMPLE_RATE * CHUNK_DURATION)\r\nBYTES_PER_SAMPLE = 2\r\nBYTES_PER_SEC = SAMPLE_RATE * BYTES_PER_SAMPLE\r\n\r\n# Initialize ASR with VAC\r\nasr, online = asr_factory()\r\nvac_processor = VACOnlineASRProcessor(online_chunk_size=1, asr=asr)\r\n\r\n# Function to process chunks asynchronously\r\ndef process_audio_chunks():\r\n    pcm_buffer = bytearray()\r\n\r\n    def handle_chunk(chunk):\r\n        try:\r\n            pcm_buffer.extend(chunk)\r\n            while len(pcm_buffer) >= BYTES_PER_SEC:  # Process chunks of 1 second\r\n                global debug_num\r\n                debug_num += 1\r\n\r\n                print(debug_num, \"Processing chunk...\")\r\n\r\n                audio_chunk = pcm_buffer[:BYTES_PER_SEC]\r\n                del pcm_buffer[:BYTES_PER_SEC]\r\n\r\n                # Convert int16 -> float32 for processing\r\n                pcm_array = np.frombuffer(audio_chunk, dtype=np.int16).astype(np.float32) / 32768.0\r\n                print(\"(sending to vac)Processing chunk...\")\r\n                vac_processor.insert_audio_chunk(pcm_array)\r\n                print(\"(sending to vac)Processing complete.\")\r\n\r\n                # Fetch results\r\n                transcription = vac_processor.process_iter()[2]\r\n\r\n                if transcription:\r\n                    print(\"Transcription:\", transcription)\r\n\r\n                print(debug_num, \"Processed chunk.\")\r\n        except Exception as e:\r\n            print(\"Error handling audio chunk:\", e)\r\n\r\n    return handle_chunk\r\n\r\n# Function to start FFmpeg process\r\ndef start_ffmpeg_decoder():\r\n    return (\r\n        ffmpeg.input('pipe:0', format='s16le', ac=CHANNELS, ar=str(SAMPLE_RATE))\r\n        .output('pipe:1', format='s16le', acodec='pcm_s16le', ac=CHANNELS, ar=str(SAMPLE_RATE))\r\n        .run_async(pipe_stdin=True, pipe_stdout=True, pipe_stderr=True)\r\n    )\r\n\r\n# Function to handle FFmpeg stdout\r\ndef handle_ffmpeg_stdout(ffmpeg_process, handle_chunk):\r\n    while True:\r\n        try:\r\n            chunk = ffmpeg_process.stdout.read(4096)  # Read audio data from FFmpeg\r\n            if not chunk:\r\n                break\r\n            handle_chunk(chunk)\r\n        except Exception as e:\r\n            print(\"Error reading from FFmpeg stdout:\", e)\r\n            break\r\n\r\n# Start audio capture\r\ntry:\r\n    ffmpeg_process = start_ffmpeg_decoder()\r\n\r\n    # Start FFmpeg stdout reader thread\r\n    handle_chunk = process_audio_chunks()\r\n    stdout_thread = threading.Thread(target=handle_ffmpeg_stdout, args=(ffmpeg_process, handle_chunk))\r\n    stdout_thread.start()\r\n\r\n    # Stream microphone audio to FFmpeg stdin\r\n    with sd.InputStream(samplerate=SAMPLE_RATE, channels=CHANNELS, dtype='int16') as stream:\r\n        print(\"Listening... Press Ctrl+C to stop.\")\r\n        while True:\r\n            indata, _ = stream.read(CHUNK_SIZE)\r\n            ffmpeg_process.stdin.write(indata.tobytes())\r\nexcept KeyboardInterrupt:\r\n    print(\"Exiting application.\")\r\nfinally:\r\n    # Clean up resources\r\n    ffmpeg_process.stdin.close()\r\n    ffmpeg_process.stdout.close()\r\n    ffmpeg_process.wait()\r\n    print(\"Application stopped.\")\r\n\r\n```\r\n\r\n`whisper_online.py`\r\n```py\r\n#!/usr/bin/env python3\r\nimport re\r\nimport sys\r\nimport numpy as np\r\nimport librosa\r\nfrom functools import lru_cache\r\nimport time\r\nimport logging\r\n\r\nimport io\r\nimport soundfile as sf\r\nimport math\r\n\r\nlogger = logging.getLogger(__name__)\r\n\r\nmin_chunk_size = 1.0\r\nvad = True\r\nvac = True\r\nvac_chunk_size = 0.04\r\ntask = \"transcribe\"\r\nbuffer_trimming = \"segment\"\r\nbuffer_trimming_sec: float = 15\r\nlog_level = 'DEBUG'\r\n\r\n@lru_cache(10**6)\r\ndef load_audio(fname):\r\n    a, _ = librosa.load(fname, sr=16000, dtype=np.float32)\r\n    return a\r\n\r\ndef load_audio_chunk(fname, beg, end):\r\n    audio = load_audio(fname)\r\n    beg_s = int(beg*16000)\r\n    end_s = int(end*16000)\r\n    return audio[beg_s:end_s]\r\n\r\n\r\n# Whisper backend\r\n\r\nclass ASRBase:\r\n\r\n    sep = \" \"   # join transcribe words with this character (\" \" for whisper_timestamped,\r\n                # \"\" for faster-whisper because it emits the spaces when neeeded)\r\n\r\n    def __init__(self, lan, modelsize=None, cache_dir=None, model_dir=None, logfile=sys.stderr):\r\n        self.logfile = logfile\r\n\r\n        self.transcribe_kargs = {}\r\n        if lan == \"auto\":\r\n            self.original_language = None\r\n        else:\r\n            self.original_language = lan\r\n\r\n        self.model = self.load_model(modelsize, cache_dir, model_dir)\r\n\r\n\r\n    def load_model(self, modelsize, cache_dir):\r\n        raise NotImplemented(\"must be implemented in the child class\")\r\n\r\n    def transcribe(self, audio, init_prompt=\"\"):\r\n        raise NotImplemented(\"must be implemented in the child class\")\r\n\r\n    def use_vad(self):\r\n        raise NotImplemented(\"must be implemented in the child class\")\r\n\r\n\r\nclass GroqApiASR(ASRBase):\r\n    \"\"\"Uses Groq's Whisper API for audio transcription.\"\"\"\r\n\r\n    def __init__(self, lan=None, temperature=0, logfile=sys.stderr):\r\n        self.logfile = logfile\r\n\r\n        self.modelname = \"whisper-large-v3\"\r\n        self.original_language = None if lan == \"auto\" else lan # ISO-639-1 language code\r\n        self.response_format = \"verbose_json\" \r\n        self.temperature = temperature\r\n\r\n        self.load_model()\r\n\r\n        self.use_vad_opt = False\r\n\r\n        # reset the task in set_translate_task\r\n        self.task = \"transcribe\"\r\n\r\n    def load_model(self, *args, **kwargs):\r\n        from groq import Groq\r\n        self.client = Groq(\r\n            api_key=\"API_KEY\"\r\n        )\r\n\r\n        self.transcribed_seconds = 0  # for logging how many seconds were processed by API, to know the cost\r\n        \r\n\r\n    def ts_words(self, segments):\r\n        print(segments)\r\n        no_speech_segments = []\r\n        if self.use_vad_opt:\r\n            for segment in segments.segments:\r\n                # TODO: threshold can be set from outside\r\n                if segment[\"no_speech_prob\"] > 0.8:\r\n                    no_speech_segments.append((segment.get(\"start\"), segment.get(\"end\")))\r\n\r\n        o = []\r\n        for word in segments.segments[0]['words']:\r\n            start = word['start']\r\n            end = word['end']\r\n            if any(s[0] <= start <= s[1] for s in no_speech_segments):\r\n                print(\"Skipping word\", word.get(\"word\"), \"because it's in a no-speech segment\")\r\n                continue\r\n            o.append((start, end, word['word']))\r\n        return o\r\n\r\n\r\n    def segments_end_ts(self, res):\r\n        return [word['end'] for word in res.segments[0]['word']]\r\n\r\n    def format_transcription_obj(self, transcript_obj):\r\n        from groq.types.audio.transcription import Transcription\r\n\r\n        # Regex to match words along with their following spaces or punctuation\r\n        tokens = re.findall(r'(\\S+[\\s.,;!?]*)', transcript_obj.text)\r\n        transcript_obj.segments[0]['words'] = [\r\n            {'word': token, 'start': transcript_obj.segments[0]['start'], 'end': transcript_obj.segments[0]['end']} for token in tokens\r\n        ]\r\n        return Transcription(\r\n            text=transcript_obj.text,\r\n            task=transcript_obj.task,\r\n            language=transcript_obj.language,\r\n            duration=transcript_obj.duration,\r\n            segments=transcript_obj.segments,\r\n            x_groq=transcript_obj.x_groq,\r\n        )\r\n\r\n    def transcribe(self, audio_data, prompt=None, *args, **kwargs):\r\n        # Write the audio data to a buffer\r\n        print(\"Transcribing\")\r\n\r\n        buffer = io.BytesIO()\r\n        buffer.name = \"temp.wav\"\r\n        sf.write(buffer, audio_data, samplerate=16000, format='WAV', subtype='PCM_16')\r\n        buffer.seek(0)  # Reset buffer's position to the beginning\r\n\r\n        self.transcribed_seconds += math.ceil(len(audio_data)/16000)  # it rounds up to the whole seconds\r\n\r\n        params = {\r\n            \"model\": self.modelname,\r\n            \"file\": buffer,\r\n            \"response_format\": self.response_format,\r\n            \"temperature\": self.temperature,\r\n            \"timestamp_granularities\": [\"word\", \"segment\"]\r\n        }\r\n        if self.task != \"translate\" and self.original_language:\r\n            params[\"language\"] = self.original_language\r\n        if prompt:\r\n            params[\"prompt\"] = prompt\r\n\r\n        if self.task == \"translate\":\r\n            with buffer as file:\r\n                # Create a translation of the audio file\r\n                translation = self.client.audio.translations.create(\r\n                    file=buffer,  # Required audio file\r\n                    model=\"whisper-large-v3\",  # Required model to use for translation\r\n                    prompt=\"Specify context or spelling\",  # Optional\r\n                    response_format=\"verbose_json\",  # Optional\r\n                    temperature=0.0  # Optional\r\n                )\r\n                # Print the translation text\r\n                transcript = translation\r\n        else:\r\n            with buffer as file:\r\n                # Create a transcription of the audio file\r\n                transcription = self.client.audio.transcriptions.create(\r\n                    file=buffer,  # Required audio file\r\n                    model=\"whisper-large-v3\",  # Required model to use for transcription\r\n                    prompt=\"Specify context or spelling\",  # Optional\r\n                    response_format=\"verbose_json\",  # Optional\r\n                    language=\"en\",  # Optional\r\n                    temperature=0.0  # Optional\r\n                )\r\n                # Print the transcription text\r\n                transcript = transcription\r\n\r\n        # Process transcription/translation\r\n        logger.debug(f\"Groq API processed accumulated {self.transcribed_seconds} seconds\")\r\n        print(f\"Groq API processed accumulated {self.transcribed_seconds} seconds\")\r\n\r\n        transcript = self.format_transcription_obj(transcript)\r\n\r\n        print(transcript)\r\n        return transcript\r\n\r\n    def use_vad(self):\r\n        self.use_vad_opt = True\r\n\r\n    def set_translate_task(self):\r\n        self.task = \"translate\"\r\n\r\n\r\n\r\n\r\nclass HypothesisBuffer:\r\n\r\n    def __init__(self, logfile=sys.stderr):\r\n        self.commited_in_buffer = []\r\n        self.buffer = []\r\n        self.new = []\r\n\r\n        self.last_commited_time = 0\r\n        self.last_commited_word = None\r\n\r\n        self.logfile = logfile\r\n\r\n    def insert(self, new, offset):\r\n        # compare self.commited_in_buffer and new. It inserts only the words in new that extend the commited_in_buffer, it means they are roughly behind last_commited_time and new in content\r\n        # the new tail is added to self.new\r\n        \r\n        new = [(a+offset,b+offset,t) for a,b,t in new]\r\n        self.new = [(a,b,t) for a,b,t in new if a > self.last_commited_time-0.1]\r\n\r\n        if len(self.new) >= 1:\r\n            a,b,t = self.new[0]\r\n            if abs(a - self.last_commited_time) < 1:\r\n                if self.commited_in_buffer:\r\n                    # it's going to search for 1, 2, ..., 5 consecutive words (n-grams) that are identical in commited and new. If they are, they're dropped.\r\n                    cn = len(self.commited_in_buffer)\r\n                    nn = len(self.new)\r\n                    for i in range(1,min(min(cn,nn),5)+1):  # 5 is the maximum \r\n                        c = \" \".join([self.commited_in_buffer[-j][2] for j in range(1,i+1)][::-1])\r\n                        tail = \" \".join(self.new[j-1][2] for j in range(1,i+1))\r\n                        if c == tail:\r\n                            words = []\r\n                            for j in range(i):\r\n                                words.append(repr(self.new.pop(0)))\r\n                            words_msg = \" \".join(words)\r\n                            logger.debug(f\"removing last {i} words: {words_msg}\")\r\n                            break\r\n\r\n    def flush(self):\r\n        # returns commited chunk = the longest common prefix of 2 last inserts. \r\n\r\n        commit = []\r\n        while self.new:\r\n            na, nb, nt = self.new[0]\r\n\r\n            if len(self.buffer) == 0:\r\n                break\r\n\r\n            if nt == self.buffer[0][2]:\r\n                commit.append((na,nb,nt))\r\n                self.last_commited_word = nt\r\n                self.last_commited_time = nb\r\n                self.buffer.pop(0)\r\n                self.new.pop(0)\r\n            else:\r\n                break\r\n        self.buffer = self.new\r\n        self.new = []\r\n        self.commited_in_buffer.extend(commit)\r\n        return commit\r\n\r\n    def pop_commited(self, time):\r\n        while self.commited_in_buffer and self.commited_in_buffer[0][1] <= time:\r\n            self.commited_in_buffer.pop(0)\r\n\r\n    def complete(self):\r\n        return self.buffer\r\n\r\nclass OnlineASRProcessor:\r\n\r\n    SAMPLING_RATE = 16000\r\n\r\n    def __init__(self, asr, tokenizer=None, buffer_trimming=(\"segment\", 15), logfile=sys.stderr):\r\n        \"\"\"asr: WhisperASR object\r\n        tokenizer: sentence tokenizer object for the target language. Must have a method *split* that behaves like the one of MosesTokenizer. It can be None, if \"segment\" buffer trimming option is used, then tokenizer is not used at all.\r\n        (\"segment\", 15)\r\n        buffer_trimming: a pair of (option, seconds), where option is either \"sentence\" or \"segment\", and seconds is a number. Buffer is trimmed if it is longer than \"seconds\" threshold. Default is the most recommended option.\r\n        logfile: where to store the log. \r\n        \"\"\"\r\n        self.asr = asr\r\n        self.tokenizer = tokenizer\r\n        self.logfile = logfile\r\n\r\n        self.init()\r\n\r\n        self.buffer_trimming_way, self.buffer_trimming_sec = buffer_trimming\r\n\r\n    def init(self, offset=None):\r\n        \"\"\"run this when starting or restarting processing\"\"\"\r\n        self.audio_buffer = np.array([],dtype=np.float32)\r\n        self.transcript_buffer = HypothesisBuffer(logfile=self.logfile)\r\n        self.buffer_time_offset = 0\r\n        if offset is not None:\r\n            self.buffer_time_offset = offset\r\n        self.transcript_buffer.last_commited_time = self.buffer_time_offset\r\n        self.commited = []\r\n\r\n    def insert_audio_chunk(self, audio):\r\n        self.audio_buffer = np.append(self.audio_buffer, audio)\r\n\r\n    def prompt(self):\r\n        \"\"\"Returns a tuple: (prompt, context), where \"prompt\" is a 200-character suffix of commited text that is inside of the scrolled away part of audio buffer. \r\n        \"context\" is the commited text that is inside the audio buffer. It is transcribed again and skipped. It is returned only for debugging and logging reasons.\r\n        \"\"\"\r\n        k = max(0,len(self.commited)-1)\r\n        while k > 0 and self.commited[k-1][1] > self.buffer_time_offset:\r\n            k -= 1\r\n\r\n        p = self.commited[:k]\r\n        p = [t for _,_,t in p]\r\n        prompt = []\r\n        l = 0\r\n        while p and l < 200:  # 200 characters prompt size\r\n            x = p.pop(-1)\r\n            l += len(x)+1\r\n            prompt.append(x)\r\n        non_prompt = self.commited[k:]\r\n        return self.asr.sep.join(prompt[::-1]), self.asr.sep.join(t for _,_,t in non_prompt)\r\n\r\n    def process_iter(self):\r\n        \"\"\"Runs on the current audio buffer.\r\n        Returns: a tuple (beg_timestamp, end_timestamp, \"text\"), or (None, None, \"\"). \r\n        The non-emty text is confirmed (committed) partial transcript.\r\n        \"\"\"\r\n\r\n        prompt, non_prompt = self.prompt()\r\n        logger.debug(f\"PROMPT: {prompt}\")\r\n        logger.debug(f\"CONTEXT: {non_prompt}\")\r\n        logger.debug(f\"transcribing {len(self.audio_buffer)/self.SAMPLING_RATE:2.2f} seconds from {self.buffer_time_offset:2.2f}\")\r\n        res = self.asr.transcribe(self.audio_buffer, init_prompt=prompt)\r\n\r\n        # transform to [(beg,end,\"word1\"), ...]\r\n        tsw = self.asr.ts_words(res)\r\n\r\n        self.transcript_buffer.insert(tsw, self.buffer_time_offset)\r\n        o = self.transcript_buffer.flush()\r\n        self.commited.extend(o)\r\n        completed = self.to_flush(o)\r\n        logger.debug(f\">>>>COMPLETE NOW: {completed}\")\r\n        the_rest = self.to_flush(self.transcript_buffer.complete())\r\n        logger.debug(f\"INCOMPLETE: {the_rest}\")\r\n\r\n        # there is a newly confirmed text\r\n\r\n        if o and self.buffer_trimming_way == \"sentence\":  # trim the completed sentences\r\n            if len(self.audio_buffer)/self.SAMPLING_RATE > self.buffer_trimming_sec:  # longer than this\r\n                self.chunk_completed_sentence()\r\n\r\n        \r\n        if self.buffer_trimming_way == \"segment\":\r\n            s = self.buffer_trimming_sec  # trim the completed segments longer than s,\r\n        else:\r\n            s = 30 # if the audio buffer is longer than 30s, trim it\r\n        \r\n        if len(self.audio_buffer)/self.SAMPLING_RATE > s:\r\n            self.chunk_completed_segment(res)\r\n\r\n            # alternative: on any word\r\n            #l = self.buffer_time_offset + len(self.audio_buffer)/self.SAMPLING_RATE - 10\r\n            # let's find commited word that is less\r\n            #k = len(self.commited)-1\r\n            #while k>0 and self.commited[k][1] > l:\r\n            #    k -= 1\r\n            #t = self.commited[k][1] \r\n            logger.debug(\"chunking segment\")\r\n            #self.chunk_at(t)\r\n\r\n        logger.debug(f\"len of buffer now: {len(self.audio_buffer)/self.SAMPLING_RATE:2.2f}\")\r\n        return self.to_flush(o)\r\n\r\n    def chunk_completed_sentence(self):\r\n        if self.commited == []: return\r\n        logger.debug(self.commited)\r\n        sents = self.words_to_sentences(self.commited)\r\n        for s in sents:\r\n            logger.debug(f\"\\t\\tSENT: {s}\")\r\n        if len(sents) < 2:\r\n            return\r\n        while len(sents) > 2:\r\n            sents.pop(0)\r\n        # we will continue with audio processing at this timestamp\r\n        chunk_at = sents[-2][1]\r\n\r\n        logger.debug(f\"--- sentence chunked at {chunk_at:2.2f}\")\r\n        self.chunk_at(chunk_at)\r\n\r\n    def chunk_completed_segment(self, res):\r\n        if self.commited == []: return\r\n\r\n        ends = self.asr.segments_end_ts(res)\r\n\r\n        t = self.commited[-1][1]\r\n\r\n        if len(ends) > 1:\r\n\r\n            e = ends[-2]+self.buffer_time_offset\r\n            while len(ends) > 2 and e > t:\r\n                ends.pop(-1)\r\n                e = ends[-2]+self.buffer_time_offset\r\n            if e <= t:\r\n                logger.debug(f\"--- segment chunked at {e:2.2f}\")\r\n                self.chunk_at(e)\r\n            else:\r\n                logger.debug(f\"--- last segment not within commited area\")\r\n        else:\r\n            logger.debug(f\"--- not enough segments to chunk\")\r\n\r\n\r\n\r\n\r\n\r\n    def chunk_at(self, time):\r\n        \"\"\"trims the hypothesis and audio buffer at \"time\"\r\n        \"\"\"\r\n        self.transcript_buffer.pop_commited(time)\r\n        cut_seconds = time - self.buffer_time_offset\r\n        self.audio_buffer = self.audio_buffer[int(cut_seconds*self.SAMPLING_RATE):]\r\n        self.buffer_time_offset = time\r\n\r\n    def words_to_sentences(self, words):\r\n        \"\"\"Uses self.tokenizer for sentence segmentation of words.\r\n        Returns: [(beg,end,\"sentence 1\"),...]\r\n        \"\"\"\r\n        \r\n        cwords = [w for w in words]\r\n        t = \" \".join(o[2] for o in cwords)\r\n        s = self.tokenizer.split(t)\r\n        out = []\r\n        while s:\r\n            beg = None\r\n            end = None\r\n            sent = s.pop(0).strip()\r\n            fsent = sent\r\n            while cwords:\r\n                b,e,w = cwords.pop(0)\r\n                w = w.strip()\r\n                if beg is None and sent.startswith(w):\r\n                    beg = b\r\n                elif end is None and sent == w:\r\n                    end = e\r\n                    out.append((beg,end,fsent))\r\n                    break\r\n                sent = sent[len(w):].strip()\r\n        return out\r\n\r\n    def finish(self):\r\n        \"\"\"Flush the incomplete text when the whole processing ends.\r\n        Returns: the same format as self.process_iter()\r\n        \"\"\"\r\n        o = self.transcript_buffer.complete()\r\n        f = self.to_flush(o)\r\n        logger.debug(f\"last, noncommited: {f}\")\r\n        self.buffer_time_offset += len(self.audio_buffer)/16000\r\n        return f\r\n\r\n\r\n    def to_flush(self, sents, sep=None, offset=0, ):\r\n        # concatenates the timestamped words or sentences into one sequence that is flushed in one line\r\n        # sents: [(beg1, end1, \"sentence1\"), ...] or [] if empty\r\n        # return: (beg1,end-of-last-sentence,\"concatenation of sentences\") or (None, None, \"\") if empty\r\n        if sep is None:\r\n            sep = self.asr.sep\r\n        t = sep.join(s[2] for s in sents)\r\n        if len(sents) == 0:\r\n            b = None\r\n            e = None\r\n        else:\r\n            b = offset + sents[0][0]\r\n            e = offset + sents[-1][1]\r\n        return (b,e,t)\r\n\r\nclass VACOnlineASRProcessor(OnlineASRProcessor):\r\n    '''Wraps OnlineASRProcessor with VAC (Voice Activity Controller).\r\n\r\n    It works the same way as OnlineASRProcessor: it receives chunks of audio (e.g. 0.04 seconds),\r\n    it runs VAD and continuously detects whether there is speech or not.\r\n    When it detects end of speech (non-voice for 500ms), it makes OnlineASRProcessor to end the utterance immediately.\r\n    '''\r\n\r\n    def __init__(self, online_chunk_size, *a, **kw):\r\n        self.online_chunk_size = online_chunk_size\r\n\r\n        self.online = OnlineASRProcessor(*a, **kw)\r\n\r\n        # VAC:\r\n        import torch\r\n        model, _ = torch.hub.load(\r\n            repo_or_dir='snakers4/silero-vad',\r\n            model='silero_vad'\r\n        )\r\n        from silero_vad_iterator import FixedVADIterator\r\n        self.vac = FixedVADIterator(model)  # we use the default options there: 500ms silence, 100ms padding, etc.\r\n\r\n        self.logfile = self.online.logfile\r\n        self.init()\r\n\r\n    def init(self):\r\n        self.online.init()\r\n        self.vac.reset_states()\r\n        self.current_online_chunk_buffer_size = 0\r\n\r\n        self.is_currently_final = False\r\n\r\n        self.status = None  # or \"voice\" or \"nonvoice\"\r\n        self.audio_buffer = np.array([],dtype=np.float32)\r\n        self.buffer_offset = 0  # in frames\r\n\r\n    def clear_buffer(self):\r\n        self.buffer_offset += len(self.audio_buffer)\r\n        self.audio_buffer = np.array([],dtype=np.float32)\r\n\r\n\r\n    def insert_audio_chunk(self, audio):\r\n        res = self.vac(audio)\r\n        self.audio_buffer = np.append(self.audio_buffer, audio)\r\n\r\n        if res is not None:\r\n            frame = list(res.values())[0]-self.buffer_offset\r\n            if 'start' in res and 'end' not in res:\r\n                self.status = 'voice'\r\n                send_audio = self.audio_buffer[frame:]\r\n                self.online.init(offset=(frame+self.buffer_offset)/self.SAMPLING_RATE)\r\n                self.online.insert_audio_chunk(send_audio)\r\n                self.current_online_chunk_buffer_size += len(send_audio)\r\n                self.clear_buffer()\r\n            elif 'end' in res and 'start' not in res:\r\n                self.status = 'nonvoice'\r\n                send_audio = self.audio_buffer[:frame]\r\n                self.online.insert_audio_chunk(send_audio)\r\n                self.current_online_chunk_buffer_size += len(send_audio)\r\n                self.is_currently_final = True\r\n                self.clear_buffer()\r\n            else:\r\n                beg = res[\"start\"]-self.buffer_offset\r\n                end = res[\"end\"]-self.buffer_offset\r\n                self.status = 'nonvoice'\r\n                send_audio = self.audio_buffer[beg:end]\r\n                self.online.init(offset=(beg+self.buffer_offset)/self.SAMPLING_RATE)\r\n                self.online.insert_audio_chunk(send_audio)\r\n                self.current_online_chunk_buffer_size += len(send_audio)\r\n                self.is_currently_final = True\r\n                self.clear_buffer()\r\n        else:\r\n            if self.status == 'voice':\r\n                self.online.insert_audio_chunk(self.audio_buffer)\r\n                self.current_online_chunk_buffer_size += len(self.audio_buffer)\r\n                self.clear_buffer()\r\n            else:\r\n                # We keep 1 second because VAD may later find start of voice in it.\r\n                # But we trim it to prevent OOM.\r\n                self.buffer_offset += max(0,len(self.audio_buffer)-self.SAMPLING_RATE)\r\n                self.audio_buffer = self.audio_buffer[-self.SAMPLING_RATE:]\r\n\r\n\r\n    def process_iter(self):\r\n        if self.is_currently_final:\r\n            return self.finish()\r\n        elif self.current_online_chunk_buffer_size > self.SAMPLING_RATE*self.online_chunk_size:\r\n            self.current_online_chunk_buffer_size = 0\r\n            ret = self.online.process_iter()\r\n            return ret\r\n        else:\r\n            print(\"VAD:\", self.status, file=self.logfile)\r\n            return None, None, \"\"\r\n\r\n    def finish(self):\r\n        ret = self.online.finish()\r\n        self.current_online_chunk_buffer_size = 0\r\n        self.is_currently_final = False\r\n        return ret\r\n\r\ndef asr_factory(logfile=sys.stderr):\r\n    \"\"\"\r\n    Creates and configures an ASR and ASR Online instance based on the specified backend and arguments.\r\n    \"\"\"\r\n    logger.debug(\"Using Groq API.\")\r\n    asr = GroqApiASR(lan=\"en\")\r\n\r\n    language = \"en\"\r\n    if task == \"translate\":\r\n        asr.set_translate_task()\r\n        tgt_language = \"en\"  # Whisper translates into English\r\n    else:\r\n        tgt_language = language  # Whisper transcribes in this language\r\n\r\n    # Create the tokenizer\r\n    tokenizer = None\r\n\r\n    # Create the OnlineASRProcessor\r\n    if vac:\r\n        online = VACOnlineASRProcessor(min_chunk_size, asr,tokenizer,logfile=logfile,buffer_trimming=(buffer_trimming, buffer_trimming_sec))\r\n    else:\r\n        online = OnlineASRProcessor(asr,tokenizer,logfile=logfile,buffer_trimming=(buffer_trimming, buffer_trimming_sec))\r\n\r\n    return asr, online\r\n\r\ndef set_logging(logger,other=\"_server\"):\r\n    logging.basicConfig(#format='%(name)s \r\n            format='%(levelname)s\\t%(message)s')\r\n    logger.setLevel(log_level)\r\n    logging.getLogger(\"whisper_online\"+other).setLevel(log_level)\r\n```",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/2/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/1",
      "id": 2757421694,
      "node_id": "I_kwDONfvYSs6kWup-",
      "number": 1,
      "title": "Click the microphone button can not start recording",
      "user": {
        "login": "Aurora-6",
        "id": 55911878,
        "node_id": "MDQ6VXNlcjU1OTExODc4",
        "avatar_url": "https://avatars.githubusercontent.com/u/55911878?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Aurora-6",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {
        "0": {
          "id": 7935678237,
          "node_id": "LA_kwDONfvYSs8AAAAB2QDXHQ",
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/labels/Awaiting%20Input",
          "name": "Awaiting Input",
          "color": "259CBD",
          "default": false,
          "description": ""
        }
      },
      "state": "open",
      "locked": false,
      "assignee": {
        "login": "QuentinFuxa",
        "id": 38427957,
        "node_id": "MDQ6VXNlcjM4NDI3OTU3",
        "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/QuentinFuxa",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "assignees": {
        "0": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "milestone": null,
      "comments": 17,
      "created_at": "2024-12-24T08:39:09Z",
      "updated_at": "2024-12-30T21:04:16Z",
      "closed_at": null,
      "author_association": "NONE",
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Following the readme file, the webpage can be opened smoothly, but when I click the microphone button, the prompt \"Click to start transcription\" is displayed all the time. Unable to start recording and transcribe. What can I do to fix it?\r\n<img width=\"477\" alt=\"企业微信截图_5d60cc4d-ba66-47b3-807f-6ad73db7c5c2\" src=\"https://github.com/user-attachments/assets/5c3a3dd8-3c01-4d82-8d81-884539977617\" />\r\n<img width=\"778\" alt=\"Clipboard_Screenshot_1735029585\" src=\"https://github.com/user-attachments/assets/3ef06735-bc0a-412e-bf6d-fbddd8c9fc80\" />\r\n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/1/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "linked_prs": []
    }
  ],
  "pulls": [
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/298",
      "id": 3057806461,
      "node_id": "PR_kwDONfvYSs62Qmx9",
      "number": 298,
      "state": "open",
      "locked": false,
      "title": "Update link to language list in README",
      "user": {
        "login": "yisiliu",
        "id": 3343358,
        "node_id": "MDQ6VXNlcjMzNDMzNTg=",
        "avatar_url": "https://avatars.githubusercontent.com/u/3343358?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/yisiliu",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-12-01T05:54:07Z",
      "updated_at": "2025-12-01T05:54:07Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "ee4f5362c295e3250bed3dac0ad0f9ada9ffb52a",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "yisiliu:patch-1",
        "ref": "patch-1",
        "sha": "dc6f7478fcce76e20ee82b95a3d365754ee06313",
        "user": {
          "login": "yisiliu",
          "id": 3343358,
          "node_id": "MDQ6VXNlcjMzNDMzNTg=",
          "avatar_url": "https://avatars.githubusercontent.com/u/3343358?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/yisiliu",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1107425979,
          "node_id": "R_kgDOQgH6uw",
          "name": "WhisperLiveKit",
          "full_name": "yisiliu/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "yisiliu",
            "id": 3343358,
            "node_id": "MDQ6VXNlcjMzNDMzNTg=",
            "avatar_url": "https://avatars.githubusercontent.com/u/3343358?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/yisiliu",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": true,
          "url": "https://api.github.com/repos/yisiliu/WhisperLiveKit",
          "created_at": "2025-12-01T05:52:00Z",
          "updated_at": "2025-12-01T05:52:00Z",
          "pushed_at": "2025-12-01T05:53:33Z",
          "homepage": "",
          "size": 29434,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "635bace09e1766dab77f71be99e4e5a24be0716b",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/298"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/298"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/298"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/298/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/298/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/298/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/dc6f7478fcce76e20ee82b95a3d365754ee06313"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/274",
      "id": 3015682074,
      "node_id": "PR_kwDONfvYSs6zv6ga",
      "number": 274,
      "state": "open",
      "locked": false,
      "title": "minor path change",
      "user": {
        "login": "blakkd",
        "id": 172533995,
        "node_id": "U_kgDOCkio6w",
        "avatar_url": "https://avatars.githubusercontent.com/u/172533995?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/blakkd",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "prevents\r\n\r\n```\r\nFileNotFoundError: [Errno 2] No such file or directory: 'whisperlivekit/web/live_transcription.html'\r\n```",
      "created_at": "2025-11-16T22:48:22Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "ffc0f69d2600166c0c47341c192dabc3565af355",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "blakkd:patch-1",
        "ref": "patch-1",
        "sha": "befbae56c7bfe7336384955c7452fd464bd33c3e",
        "user": {
          "login": "blakkd",
          "id": 172533995,
          "node_id": "U_kgDOCkio6w",
          "avatar_url": "https://avatars.githubusercontent.com/u/172533995?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/blakkd",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1097837473,
          "node_id": "R_kgDOQW-roQ",
          "name": "WhisperLiveKit",
          "full_name": "blakkd/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "blakkd",
            "id": 172533995,
            "node_id": "U_kgDOCkio6w",
            "avatar_url": "https://avatars.githubusercontent.com/u/172533995?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/blakkd",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": true,
          "url": "https://api.github.com/repos/blakkd/WhisperLiveKit",
          "created_at": "2025-11-16T22:46:37Z",
          "updated_at": "2025-11-16T22:46:38Z",
          "pushed_at": "2025-11-16T22:47:58Z",
          "homepage": "",
          "size": 27147,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/274"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/274"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/274"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/274/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/274/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/274/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/befbae56c7bfe7336384955c7452fd464bd33c3e"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/272",
      "id": 3011003155,
      "node_id": "PR_kwDONfvYSs6zeEMT",
      "number": 272,
      "state": "open",
      "locked": false,
      "title": "Main",
      "user": {
        "login": "vjspal",
        "id": 146096100,
        "node_id": "U_kgDOCLU_5A",
        "avatar_url": "https://avatars.githubusercontent.com/u/146096100?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/vjspal",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-11-14T14:29:10Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "97a8f7b53c508b909f5d026f11ed47c8eb0893f2",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "vjspal:main",
        "ref": "main",
        "sha": "0f7c9ce82abe4ece82d7c1e47d5e68521349d4ae",
        "user": {
          "login": "vjspal",
          "id": 146096100,
          "node_id": "U_kgDOCLU_5A",
          "avatar_url": "https://avatars.githubusercontent.com/u/146096100?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/vjspal",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1049277616,
          "node_id": "R_kgDOPoq0sA",
          "name": "WhisperLiveKit",
          "full_name": "vjspal/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "vjspal",
            "id": 146096100,
            "node_id": "U_kgDOCLU_5A",
            "avatar_url": "https://avatars.githubusercontent.com/u/146096100?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/vjspal",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Real-time & local speech-to-text, translation, and speaker diarization. With server & web UI.",
          "fork": true,
          "url": "https://api.github.com/repos/vjspal/WhisperLiveKit",
          "created_at": "2025-09-02T18:34:48Z",
          "updated_at": "2025-11-14T14:38:41Z",
          "pushed_at": "2025-11-14T14:38:26Z",
          "homepage": "",
          "size": 27090,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/272"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/272"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/272"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/272/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/272/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/272/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/0f7c9ce82abe4ece82d7c1e47d5e68521349d4ae"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/260",
      "id": 2913078132,
      "node_id": "PR_kwDONfvYSs6togt0",
      "number": 260,
      "state": "open",
      "locked": false,
      "title": "Add a python client, support mic and file input, and will output performance result.",
      "user": {
        "login": "duj12",
        "id": 37294470,
        "node_id": "MDQ6VXNlcjM3Mjk0NDcw",
        "avatar_url": "https://avatars.githubusercontent.com/u/37294470?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/duj12",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "1. \r\n```\r\nwhisperlivekit-server   --pcm-input\r\n\r\n```\r\n\r\n2. \r\n```\r\npython .\\run_client.py\r\n```\r\n\r\noutput as follows:\r\n```\r\n2025-10-14 18:11:25,376: Connected to ws://localhost:8000/asr\r\n2025-10-14 18:11:27,416: Streaming jfk.flac (11.00s, sr=16000, chunk=1.00s)\r\n\r\ntype: config\r\n0:00:00 - 0:00:10 Speaker 1:  And so, my fellow Americans. Ask not. What your country can do for you. Ask what you can do for your country\r\ntype: ready_to_stop\r\n\r\n========== METRICS ==========\r\nFirst Token Latency: 3.166s\r\nTotal Time: 4.820s\r\nReal Time Factor: 0.438\r\n=============================\r\n```\r\n\r\nI wonder why the latency is so high? Is there something wrong? \r\nDear reviewer, can you check and explain, please?\r\n\r\nThanks.\r\n\r\n",
      "created_at": "2025-10-14T10:17:22Z",
      "updated_at": "2025-12-07T03:22:01Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "48cbfc1a7a7051ee6d99d970edd5efd23d5ffdf4",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "duj12:main",
        "ref": "main",
        "sha": "82b7ef5ba81a201b08e57f754b78f77241298938",
        "user": {
          "login": "duj12",
          "id": 37294470,
          "node_id": "MDQ6VXNlcjM3Mjk0NDcw",
          "avatar_url": "https://avatars.githubusercontent.com/u/37294470?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/duj12",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1075899996,
          "node_id": "R_kgDOQCDuXA",
          "name": "WhisperLiveKit",
          "full_name": "duj12/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "duj12",
            "id": 37294470,
            "node_id": "MDQ6VXNlcjM3Mjk0NDcw",
            "avatar_url": "https://avatars.githubusercontent.com/u/37294470?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/duj12",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Real-time & local speech-to-text server.",
          "fork": true,
          "url": "https://api.github.com/repos/duj12/WhisperLiveKit",
          "created_at": "2025-10-14T06:25:44Z",
          "updated_at": "2025-10-14T10:09:05Z",
          "pushed_at": "2025-10-14T10:08:59Z",
          "homepage": "",
          "size": 24869,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/260"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/260"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/260"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/260/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/260/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/260/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/82b7ef5ba81a201b08e57f754b78f77241298938"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/233",
      "id": 2851902112,
      "node_id": "PR_kwDONfvYSs6p_JKg",
      "number": 233,
      "state": "open",
      "locked": false,
      "title": "fix: remove duplicate os import from simul_whisper",
      "user": {
        "login": "windream-zyx",
        "id": 110923423,
        "node_id": "U_kgDOBpyOnw",
        "avatar_url": "https://avatars.githubusercontent.com/u/110923423?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/windream-zyx",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "### Summary\r\nRemoved duplicate import os statement to clean up imports and improve code quality.\r\n\r\n### Changes\r\n- Consolidated duplicate os import statements into a single import\r\n- No functional changes to the code\r\n\r\n### Additional Notes\r\nThis is a minor cleanup that removes redundant import statements without affecting any functionality. The change improves code maintainability and follows Python best practices for import organization.",
      "created_at": "2025-09-23T04:32:08Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "windream-zyx:fix-duplicate-import",
        "ref": "fix-duplicate-import",
        "sha": "e12267801fd5a918df3e3ae8b26ba8c8b57ed804",
        "user": {
          "login": "windream-zyx",
          "id": 110923423,
          "node_id": "U_kgDOBpyOnw",
          "avatar_url": "https://avatars.githubusercontent.com/u/110923423?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/windream-zyx",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1062289414,
          "node_id": "R_kgDOP1FABg",
          "name": "WhisperLiveKit",
          "full_name": "windream-zyx/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "windream-zyx",
            "id": 110923423,
            "node_id": "U_kgDOBpyOnw",
            "avatar_url": "https://avatars.githubusercontent.com/u/110923423?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/windream-zyx",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Real-time & local speech-to-text, translation, and speaker diarization. With server & web UI.",
          "fork": true,
          "url": "https://api.github.com/repos/windream-zyx/WhisperLiveKit",
          "created_at": "2025-09-23T04:17:47Z",
          "updated_at": "2025-09-23T04:17:47Z",
          "pushed_at": "2025-09-23T04:26:31Z",
          "homepage": "",
          "size": 11084,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/233"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/233"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/233"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/233/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/233/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/233/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/e12267801fd5a918df3e3ae8b26ba8c8b57ed804"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/217",
      "id": 2820410143,
      "node_id": "PR_kwDONfvYSs6oHAsf",
      "number": 217,
      "state": "open",
      "locked": false,
      "title": "docs: fix TranscriptionEngine example (lan -> language)",
      "user": {
        "login": "vasugupt07676-creator",
        "id": 229636965,
        "node_id": "U_kgDODa_7ZQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/229636965?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/vasugupt07676-creator",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "README Python example used lan but API uses language. Fix avoids confusion / TypeError when copy-pasting.” (Parameters table shows language.)",
      "created_at": "2025-09-11T20:11:23Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "a155fd9ed48f90860dad737837c781aea6c7bf8c",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "vasugupt07676-creator:patch-1",
        "ref": "patch-1",
        "sha": "fe175b92fbad6771d164aab44385dd0411d03ab0",
        "user": {
          "login": "vasugupt07676-creator",
          "id": 229636965,
          "node_id": "U_kgDODa_7ZQ",
          "avatar_url": "https://avatars.githubusercontent.com/u/229636965?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/vasugupt07676-creator",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1048854498,
          "node_id": "R_kgDOPoQ_4g",
          "name": "WhisperLiveKit",
          "full_name": "vasugupt07676-creator/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "vasugupt07676-creator",
            "id": 229636965,
            "node_id": "U_kgDODa_7ZQ",
            "avatar_url": "https://avatars.githubusercontent.com/u/229636965?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/vasugupt07676-creator",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Real-time & local speech-to-text, translation, and speaker diarization. With server & web UI.",
          "fork": true,
          "url": "https://api.github.com/repos/vasugupt07676-creator/WhisperLiveKit",
          "created_at": "2025-09-02T06:04:30Z",
          "updated_at": "2025-09-02T06:04:30Z",
          "pushed_at": "2025-09-11T20:10:43Z",
          "homepage": "",
          "size": 9079,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/217"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/217"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/217"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/217/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/217/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/217/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/fe175b92fbad6771d164aab44385dd0411d03ab0"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/190",
      "id": 2792124368,
      "node_id": "PR_kwDONfvYSs6mbG_Q",
      "number": 190,
      "state": "open",
      "locked": false,
      "title": "Fix CUDA Compatibility Issues with PyTorch and Large Models",
      "user": {
        "login": "groxaxo",
        "id": 76023196,
        "node_id": "MDQ6VXNlcjc2MDIzMTk2",
        "avatar_url": "https://avatars.githubusercontent.com/u/76023196?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/groxaxo",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This PR resolves critical CUDA compatibility issues that were preventing the application from running with large models on GPU. The main problem was the use of CUDA 12.9.1, which is not officially supported by PyTorch.\n\n## Summary of Changes\n- **Dockerfile Updates**: Changed base images to CUDA 12.1.1 (officially supported by PyTorch) and updated PyTorch installations to use CUDA 12.1 compatible packages\n- **Documentation Improvements**: Added comprehensive CUDA setup guide and updated README with driver requirements and usage instructions\n- **Dependency Management**: Added minimum version requirements for torch (>=2.1.0) and torchaudio (>=2.1.0) in pyproject.toml\n- **Testing Infrastructure**: Added test files to verify CUDA compatibility in containerized environments\n\n## Why CUDA 12.1?\n- Officially supported by current PyTorch versions\n- Compatible with widely available NVIDIA drivers (515+)\n- Provides good performance for Whisper models\n- Balances compatibility with performance\n\n## Testing\nTo verify the fixes:\n```bash\n# Test CUDA compatibility\ndocker build -t cuda-test -f Dockerfile.test .\ndocker run --gpus all cuda-test\n\n# Test with actual GPU container\ndocker build -t whisperlivekit-gpu -f Dockerfile.gpu .\ndocker run --gpus all -p 8000:8000 whisperlivekit-gpu --model large-v3\n```\n\nThese changes ensure WhisperLiveKit works reliably with GPU acceleration, including support for large models.\n\n## Related Documentation\n- [CUDA Fixes Summary](https://github.com/groxaxo/WhisperLiveKit/blob/fix-cuda-compatibility/CUDA_FIXES_SUMMARY.md)\n- [GPU Setup Guide](https://github.com/groxaxo/WhisperLiveKit/blob/fix-cuda-compatibility/GPU_SETUP_GUIDE.md)",
      "created_at": "2025-09-02T10:27:28Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "groxaxo:fix-cuda-compatibility",
        "ref": "fix-cuda-compatibility",
        "sha": "8ec5c5ea9492fd890d02b0802662a86f01723aa4",
        "user": {
          "login": "groxaxo",
          "id": 76023196,
          "node_id": "MDQ6VXNlcjc2MDIzMTk2",
          "avatar_url": "https://avatars.githubusercontent.com/u/76023196?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/groxaxo",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1048979266,
          "node_id": "R_kgDOPoYnQg",
          "name": "WhisperLiveKit",
          "full_name": "groxaxo/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "groxaxo",
            "id": 76023196,
            "node_id": "MDQ6VXNlcjc2MDIzMTk2",
            "avatar_url": "https://avatars.githubusercontent.com/u/76023196?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/groxaxo",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Real-time & local speech-to-text, translation, and speaker diarization. With server & web UI.",
          "fork": true,
          "url": "https://api.github.com/repos/groxaxo/WhisperLiveKit",
          "created_at": "2025-09-02T10:02:26Z",
          "updated_at": "2025-11-13T09:11:47Z",
          "pushed_at": "2025-11-11T04:11:14Z",
          "homepage": "",
          "size": 9044,
          "stargazers_count": 1,
          "watchers_count": 1,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 1,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/190"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/190"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/190"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/190/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/190/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/190/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/8ec5c5ea9492fd890d02b0802662a86f01723aa4"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/172",
      "id": 2785260473,
      "node_id": "PR_kwDONfvYSs6mA7O5",
      "number": 172,
      "state": "open",
      "locked": false,
      "title": "Fix: Mitigate CORS vulnerability",
      "user": {
        "login": "Mirza-Samad-Ahmed-Baig",
        "id": 89132160,
        "node_id": "MDQ6VXNlcjg5MTMyMTYw",
        "avatar_url": "https://avatars.githubusercontent.com/u/89132160?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Mirza-Samad-Ahmed-Baig",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This commit fixes a Cross-Origin Resource Sharing (CORS) vulnerability by restricting the `allow_origins` in `CORSMiddleware` to an empty list. Previously, it was set to `[\"*\"]`, allowing access from any origin, which is a security risk. By setting it to an empty list, CORS is effectively disabled by default, providing a more secure configuration. Users can then explicitly configure trusted origins as needed.",
      "created_at": "2025-08-29T15:36:58Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "1ca16ed107a2ec19399f70b21ad0fb2d90d22fe7",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Mirza-Samad-Ahmed-Baig:fix/cors-vulnerability",
        "ref": "fix/cors-vulnerability",
        "sha": "4cfadf12f018ad1d49ef9a7359aa28ed62346145",
        "user": {
          "login": "Mirza-Samad-Ahmed-Baig",
          "id": 89132160,
          "node_id": "MDQ6VXNlcjg5MTMyMTYw",
          "avatar_url": "https://avatars.githubusercontent.com/u/89132160?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Mirza-Samad-Ahmed-Baig",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1047007477,
          "node_id": "R_kgDOPmgQ9Q",
          "name": "WhisperLiveKit",
          "full_name": "Mirza-Samad-Ahmed-Baig/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "Mirza-Samad-Ahmed-Baig",
            "id": 89132160,
            "node_id": "MDQ6VXNlcjg5MTMyMTYw",
            "avatar_url": "https://avatars.githubusercontent.com/u/89132160?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Mirza-Samad-Ahmed-Baig",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Real-time & local speech-to-text, translation, and speaker diarization. With server & web UI.",
          "fork": true,
          "url": "https://api.github.com/repos/Mirza-Samad-Ahmed-Baig/WhisperLiveKit",
          "created_at": "2025-08-29T15:30:20Z",
          "updated_at": "2025-08-29T15:30:20Z",
          "pushed_at": "2025-08-29T15:36:34Z",
          "homepage": "",
          "size": 6058,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/172"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/172"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/172"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/172/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/172/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/172/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/4cfadf12f018ad1d49ef9a7359aa28ed62346145"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/170",
      "id": 2783326982,
      "node_id": "PR_kwDONfvYSs6l5jMG",
      "number": 170,
      "state": "open",
      "locked": false,
      "title": "Fix: Resolve dependency conflict in Docker build",
      "user": {
        "login": "sthasmn",
        "id": 45208595,
        "node_id": "MDQ6VXNlcjQ1MjA4NTk1",
        "avatar_url": "https://avatars.githubusercontent.com/u/45208595?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/sthasmn",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This PR fixes a dependency conflict that prevents the `Dockerfile` from building a working image.\r\n\r\n### The Problem\r\n\r\nThe previous installation process installed `torch` and `whisperlivekit` in separate steps. This caused `pip`'s dependency resolver to incorrectly handle a version conflict between **`torch`** (which requires `triton>=3.0`) and **`whisperlivekit`** (which requires `triton<3.0`).\r\n\r\nThe result was a silent downgrade of `torch`, leading to a container that would crash on startup with an `OSError: undefined symbol` in `torchaudio`.\r\n\r\n### The Solution\r\n\r\nThis change resolves the issue by:\r\n1. Combining the Python package installations into a single, unified `RUN` command.\r\n2. Using `--extra-index-url` instead of `--index-url` to ensure `pip` can access both the main PyPI repository and the special PyTorch index.\r\n\r\nThis allows `pip` to see all dependency constraints at once and install a consistent, compatible set of packages, resulting in a successful build and a working container.",
      "created_at": "2025-08-29T00:57:02Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "sthasmn:fix-docker-dependencies",
        "ref": "fix-docker-dependencies",
        "sha": "688557e6f0d91f3283cd6f77d7230c35046dcb16",
        "user": {
          "login": "sthasmn",
          "id": 45208595,
          "node_id": "MDQ6VXNlcjQ1MjA4NTk1",
          "avatar_url": "https://avatars.githubusercontent.com/u/45208595?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/sthasmn",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1046615969,
          "node_id": "R_kgDOPmIXoQ",
          "name": "WhisperLiveKit",
          "full_name": "sthasmn/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "sthasmn",
            "id": 45208595,
            "node_id": "MDQ6VXNlcjQ1MjA4NTk1",
            "avatar_url": "https://avatars.githubusercontent.com/u/45208595?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/sthasmn",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Real-time & local speech-to-text, translation, and speaker diarization. With server & web UI.",
          "fork": true,
          "url": "https://api.github.com/repos/sthasmn/WhisperLiveKit",
          "created_at": "2025-08-29T00:40:02Z",
          "updated_at": "2025-08-29T00:40:02Z",
          "pushed_at": "2025-08-29T00:52:59Z",
          "homepage": "",
          "size": 6058,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/170"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/170"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/170"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/170/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/170/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/170/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/688557e6f0d91f3283cd6f77d7230c35046dcb16"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/166",
      "id": 2779420852,
      "node_id": "PR_kwDONfvYSs6lqpi0",
      "number": 166,
      "state": "open",
      "locked": false,
      "title": "feat: Pass init_prompt to faster-whisper backend",
      "user": {
        "login": "nithin434",
        "id": 149058545,
        "node_id": "U_kgDOCOJz8Q",
        "avatar_url": "https://avatars.githubusercontent.com/u/149058545?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nithin434",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "These changes ensure that the init_prompt is correctly used by the faster whisper backend, allowing you to guide the transcription process as intended.",
      "created_at": "2025-08-27T19:31:41Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "nithin434:fix-init-prompt",
        "ref": "fix-init-prompt",
        "sha": "cc914c206ed35825cda4517e5db4c2ffea956e3d",
        "user": {
          "login": "nithin434",
          "id": 149058545,
          "node_id": "U_kgDOCOJz8Q",
          "avatar_url": "https://avatars.githubusercontent.com/u/149058545?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/nithin434",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1045827805,
          "node_id": "R_kgDOPlYQ3Q",
          "name": "WhisperLiveKit",
          "full_name": "nithin434/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "nithin434",
            "id": 149058545,
            "node_id": "U_kgDOCOJz8Q",
            "avatar_url": "https://avatars.githubusercontent.com/u/149058545?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/nithin434",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Python package for Real-time, Local Speech-to-Text and Speaker Diarization. FastAPI Server & Web Interface",
          "fork": true,
          "url": "https://api.github.com/repos/nithin434/WhisperLiveKit",
          "created_at": "2025-08-27T19:13:22Z",
          "updated_at": "2025-08-27T19:13:22Z",
          "pushed_at": "2025-08-27T19:30:19Z",
          "homepage": "",
          "size": 6058,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "other",
            "name": "Other",
            "spdx_id": "NOASSERTION",
            "url": null,
            "node_id": "MDc6TGljZW5zZTA="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/166"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/166"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/166"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/166/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/166/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/166/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/cc914c206ed35825cda4517e5db4c2ffea956e3d"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/83",
      "id": 2390445214,
      "node_id": "PR_kwDONfvYSs6Oe0ye",
      "number": 83,
      "state": "open",
      "locked": false,
      "title": "add send audio function for tests",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "This should help to test ideally in CI the backend\r\nExample how I use it. \r\n\r\nFor now it uses a audio file as input. but later one could synthesize an audio file from text and then check how good the transcript is. \r\n\r\n```\r\n\r\nAUDIO_FILE=\"path/to/audio.wav\"\r\nconnection_args=\"--host 0.0.0.0 --port 8002\"\r\n\r\n\r\necho \"#########################  Starting server #########################\"\r\n\r\npython whisper_fastapi_online_server.py \\\r\n--model small \\\r\n--lan fr \\\r\n--buffer_trimming sentence \\\r\n--log-level INFO \\\r\n--diarization true \\\r\n$connection_args  \\\r\n$arg &\r\n\r\n\r\n# wait until server is up\r\nsleep 7\r\n\r\necho \"#########################  Starting client #########################\"\r\n\r\n\r\npython tests/send_audio_to_server.py \\\r\n$connection_args \\\r\n--audio-file AUDIO_FILE \\\r\n--duration-min 5.0\r\n\r\n```",
      "created_at": "2025-03-13T10:05:28Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": "f822e0a773f5e3bd674b9002c1dd70ff7f854789",
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "SilasK:tests",
        "ref": "tests",
        "sha": "7646ce545efdca3714c3617fc095049de3c28adc",
        "user": {
          "login": "SilasK",
          "id": 7523034,
          "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/SilasK",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 910261782,
          "node_id": "R_kgDONkF-Fg",
          "name": "whisper_streaming_web",
          "full_name": "SilasK/whisper_streaming_web",
          "private": false,
          "owner": {
            "login": "SilasK",
            "id": 7523034,
            "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/SilasK",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Whisper Streaming with Websocket and Fastapi server",
          "fork": true,
          "url": "https://api.github.com/repos/SilasK/whisper_streaming_web",
          "created_at": "2024-12-30T20:26:36Z",
          "updated_at": "2025-10-14T14:49:05Z",
          "pushed_at": "2025-03-14T10:41:31Z",
          "homepage": "",
          "size": 36752,
          "stargazers_count": 6,
          "watchers_count": 6,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 6,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/83"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/83"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/83"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/83/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/83/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/83/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/7646ce545efdca3714c3617fc095049de3c28adc"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/76",
      "id": 2378954911,
      "node_id": "PR_kwDONfvYSs6Ny_if",
      "number": 76,
      "state": "open",
      "locked": false,
      "title": "Make VAC work again",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Includes #71 \r\nFix #64 \r\nFix #72 \r\n\r\nThe problem was that ",
      "created_at": "2025-03-07T16:01:08Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "SilasK:check-vac",
        "ref": "check-vac",
        "sha": "5ef0a7eb17997bad797508d394a5cd2b01a8774e",
        "user": {
          "login": "SilasK",
          "id": 7523034,
          "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/SilasK",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 910261782,
          "node_id": "R_kgDONkF-Fg",
          "name": "whisper_streaming_web",
          "full_name": "SilasK/whisper_streaming_web",
          "private": false,
          "owner": {
            "login": "SilasK",
            "id": 7523034,
            "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/SilasK",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Whisper Streaming with Websocket and Fastapi server",
          "fork": true,
          "url": "https://api.github.com/repos/SilasK/whisper_streaming_web",
          "created_at": "2024-12-30T20:26:36Z",
          "updated_at": "2025-10-14T14:49:05Z",
          "pushed_at": "2025-03-14T10:41:31Z",
          "homepage": "",
          "size": 36752,
          "stargazers_count": 6,
          "watchers_count": 6,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 6,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/76"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/76"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/76"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/76/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/76/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/76/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/5ef0a7eb17997bad797508d394a5cd2b01a8774e"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": [
        7,
        6
      ]
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/75",
      "id": 2378690722,
      "node_id": "PR_kwDONfvYSs6Nx_Ci",
      "number": 75,
      "state": "open",
      "locked": false,
      "title": "Can we split at last sentence",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-03-07T13:58:25Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "SilasK:sentences2",
        "ref": "sentences2",
        "sha": "7ed78ad942e2bc775b99cd4c64417a929270405d",
        "user": {
          "login": "SilasK",
          "id": 7523034,
          "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/SilasK",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 910261782,
          "node_id": "R_kgDONkF-Fg",
          "name": "whisper_streaming_web",
          "full_name": "SilasK/whisper_streaming_web",
          "private": false,
          "owner": {
            "login": "SilasK",
            "id": 7523034,
            "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/SilasK",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Whisper Streaming with Websocket and Fastapi server",
          "fork": true,
          "url": "https://api.github.com/repos/SilasK/whisper_streaming_web",
          "created_at": "2024-12-30T20:26:36Z",
          "updated_at": "2025-10-14T14:49:05Z",
          "pushed_at": "2025-03-14T10:41:31Z",
          "homepage": "",
          "size": 36752,
          "stargazers_count": 6,
          "watchers_count": 6,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 6,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/75"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/75"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/75"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/75/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/75/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/75/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/7ed78ad942e2bc775b99cd4c64417a929270405d"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/71",
      "id": 2377338800,
      "node_id": "PR_kwDONfvYSs6Ns0-w",
      "number": 71,
      "state": "open",
      "locked": false,
      "title": "add timed list",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "TimedList = list(TimedText)\r\n\r\nBut in addition it re-groups many of the functions used all the time\r\n- concatenate \r\n- get_text\r\n- shift\r\nalso sentence splitting is handled by this class with the tokenize callable provided.\r\n\r\nI hope this helps to make the code clean, by keeping things toghether that belong together. ",
      "created_at": "2025-03-06T22:18:59Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "SilasK:timed_list",
        "ref": "timed_list",
        "sha": "818e496fe1e1f4ad7f626f87c5ab42a22fa60538",
        "user": {
          "login": "SilasK",
          "id": 7523034,
          "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/SilasK",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 910261782,
          "node_id": "R_kgDONkF-Fg",
          "name": "whisper_streaming_web",
          "full_name": "SilasK/whisper_streaming_web",
          "private": false,
          "owner": {
            "login": "SilasK",
            "id": 7523034,
            "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/SilasK",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Whisper Streaming with Websocket and Fastapi server",
          "fork": true,
          "url": "https://api.github.com/repos/SilasK/whisper_streaming_web",
          "created_at": "2024-12-30T20:26:36Z",
          "updated_at": "2025-10-14T14:49:05Z",
          "pushed_at": "2025-03-14T10:41:31Z",
          "homepage": "",
          "size": 36752,
          "stargazers_count": 6,
          "watchers_count": 6,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 6,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/71"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/71"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/71"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/71/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/71/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/71/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/818e496fe1e1f4ad7f626f87c5ab42a22fa60538"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/67",
      "id": 2372883319,
      "node_id": "PR_kwDONfvYSs6Nb1N3",
      "number": 67,
      "state": "open",
      "locked": false,
      "title": "Add loggers from other modules depending on log level",
      "user": {
        "login": "SilasK",
        "id": 7523034,
        "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/SilasK",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": null,
      "created_at": "2025-03-05T08:17:41Z",
      "updated_at": "2025-11-30T17:29:37Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignee": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "SilasK:log-others",
        "ref": "log-others",
        "sha": "ef69118aeaad2073012b5f00b39bf32bb80992f2",
        "user": {
          "login": "SilasK",
          "id": 7523034,
          "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
          "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/SilasK",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 910261782,
          "node_id": "R_kgDONkF-Fg",
          "name": "whisper_streaming_web",
          "full_name": "SilasK/whisper_streaming_web",
          "private": false,
          "owner": {
            "login": "SilasK",
            "id": 7523034,
            "node_id": "MDQ6VXNlcjc1MjMwMzQ=",
            "avatar_url": "https://avatars.githubusercontent.com/u/7523034?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/SilasK",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Whisper Streaming with Websocket and Fastapi server",
          "fork": true,
          "url": "https://api.github.com/repos/SilasK/whisper_streaming_web",
          "created_at": "2024-12-30T20:26:36Z",
          "updated_at": "2025-10-14T14:49:05Z",
          "pushed_at": "2025-03-14T10:41:31Z",
          "homepage": "",
          "size": 36752,
          "stargazers_count": 6,
          "watchers_count": 6,
          "language": "Python",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 6,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "QuentinFuxa:main",
        "ref": "main",
        "sha": "f1113e3eb0d761f2324371dbba3ea96a8dece197",
        "user": {
          "login": "QuentinFuxa",
          "id": 38427957,
          "node_id": "MDQ6VXNlcjM4NDI3OTU3",
          "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/QuentinFuxa",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 905697354,
          "node_id": "R_kgDONfvYSg",
          "name": "WhisperLiveKit",
          "full_name": "QuentinFuxa/WhisperLiveKit",
          "private": false,
          "owner": {
            "login": "QuentinFuxa",
            "id": 38427957,
            "node_id": "MDQ6VXNlcjM4NDI3OTU3",
            "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/QuentinFuxa",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "Simultaneous speech-to-text model",
          "fork": false,
          "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
          "created_at": "2024-12-19T10:49:09Z",
          "updated_at": "2025-12-08T03:04:21Z",
          "pushed_at": "2025-12-06T10:38:01Z",
          "homepage": "",
          "size": 29413,
          "stargazers_count": 9086,
          "watchers_count": 9086,
          "language": "Python",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": true,
          "forks_count": 894,
          "archived": false,
          "disabled": false,
          "open_issues_count": 105,
          "license": {
            "key": "apache-2.0",
            "name": "Apache License 2.0",
            "spdx_id": "Apache-2.0",
            "url": "https://api.github.com/licenses/apache-2.0",
            "node_id": "MDc6TGljZW5zZTI="
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "topics": {},
          "visibility": "public",
          "forks": 894,
          "open_issues": 105,
          "watchers": 9086,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/67"
        },
        "html": {
          "href": "https://github.com/QuentinFuxa/WhisperLiveKit/pull/67"
        },
        "issue": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/67"
        },
        "comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/issues/67/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/67/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/pulls/67/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit/statuses/ef69118aeaad2073012b5f00b39bf32bb80992f2"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "active_lock_reason": null,
      "linked_issues": []
    }
  ],
  "discussions": [
    {
      "id": "D_kwDONfvYSs4Ad7ax",
      "number": 17,
      "title": "Welcome to whisper_streaming_web Discussions!",
      "body": "<!--\r\n    ✏️ Optional: Customize the content below to let your community know what you intend to use Discussions for.\r\n-->\r\n## 👋 Welcome!\r\n  We’re using Discussions as a place to connect with other members of our community. We hope that you:\r\n  * Ask questions you’re wondering about.\r\n  * Share ideas.\r\n  * Engage with other community members.\r\n  * Welcome others and are open-minded. Remember that this is a community we\r\n  build together 💪.\r\n\r\n  To get started, comment below with an introduction of yourself and tell us about what you do with this community.\r\n\r\n<!--\r\n  For the maintainers, here are some tips 💡 for getting started with Discussions. We'll leave these in Markdown comments for now, but feel free to take out the comments for all maintainers to see.\r\n\r\n  📢 **Announce to your community** that Discussions is available! Go ahead and send that tweet, post, or link it from the website to drive traffic here.\r\n\r\n  🔗 If you use issue templates, **link any relevant issue templates** such as questions and community conversations to Discussions. Declutter your issues by driving community content to where they belong in Discussions. If you need help, here's a [link to the documentation](https://docs.github.com/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser).\r\n\r\n  ➡️ You can **convert issues to discussions** either individually or bulk by labels. Looking at you, issues labeled “question” or “discussion”.\r\n-->\r\n",
      "created_at": "2025-01-20T01:54:40Z",
      "updated_at": "2025-12-05T10:33:30Z",
      "category": {
        "name": "Announcements",
        "emoji": ":mega:"
      },
      "answer": null,
      "user": {
        "login": "QuentinFuxa",
        "avatar_url": "https://avatars.githubusercontent.com/u/38427957?u=42ebdd80f6599e854e738b878dcf619f875b6778&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AjAwT",
      "number": 288,
      "title": "Is this something I can use to replace Google Cloud Speech API?",
      "body": "Hello folks,\r\n\r\nMy  question: is there a config option somewhere I didn't find that lets me specifi how fast whisper live kit creates new lines in it's output?  Basically i want new lines if there was silence for like two seconds even if the speaker stays the same. I am currently using faster whisper and want something googleish like\r\n\r\npartial: Hel\r\npartial: Hello \r\nfinal: Hello World! <- This is no special use case and apparently i'm trying to type some text so it should wait until I finish speaking before typing the text\r\n\r\npartial: Click <-  special partial world recognized execute action immediately\r\nfinal: click\r\n\r\n@QuentinFuxa  Am im lookling for this ?https://github.com/QuentinFuxa/WhisperLiveKit/blob/34ddd2ac0277357487380455c777a22cfe18127a/whisperlivekit/audio_processor.py#L23 \r\ni don't really trust the name",
      "created_at": "2025-11-25T18:30:24Z",
      "updated_at": "2025-11-26T18:36:40Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "Farbdose",
        "avatar_url": "https://avatars.githubusercontent.com/u/9484772?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ai72f",
      "number": 280,
      "title": "Should we switch to TEN VAD?",
      "body": "https://github.com/TEN-framework/ten-vad\r\n\r\nSee the benchmarks",
      "created_at": "2025-11-19T18:44:24Z",
      "updated_at": "2025-11-25T15:24:56Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "kyr0",
        "avatar_url": "https://avatars.githubusercontent.com/u/454817?u=37b31171f24656c22c5c66d39f4a230cc2260c69&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Aifhz",
      "number": 262,
      "title": "Possible to use IGPU?",
      "body": "Hi. I have got this up and running in a Proxmox LXC container to test it out and its working fine but since its only 7500t the cpu is maxing out and lag is extreme even with the base model. I am considering options with my existing gear to give it access to an Nvidia gpu but in the meantime I thought simply employing the igpu could help quite a lot.\r\n\r\nI have managed to get it passed through to the container and drivers installed but it does not seem to be using it and I cannot see any reference to intel gpu acceleration on here. No flags etc.\r\n\r\nIs this possible?",
      "created_at": "2025-10-19T05:54:54Z",
      "updated_at": "2025-10-19T05:54:54Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "tonythemuss",
        "avatar_url": "https://avatars.githubusercontent.com/u/105772419?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AiMH8",
      "number": 244,
      "title": "Gladia like API",
      "body": "The basic server returns the whole transcript at regular intervals. Instead, it would be great to act more like Gladia API. I am not advocating for a drop in replacement like the wide use of Openai Server as I'm not sure we could legally use the same structure for an open source project, nor I would like this repo to depend on Gladia development. However I find it much easier to work with and am actually using a modified WhisperLiveKit server much similat to Gladia.\r\n\r\nIt regularly sends messages of different types:\r\n- \"Speech start/stop\"\r\n- \"Partials\"; i.e. unfinished messages\r\n- \"Segment\"; i.e segment after diarization\r\n- \"Translation\"\r\n\r\nThen after the stream stop message has been received it also sends the full transcript.\r\n\r\nThis way of doing is just sending the minimal information message by message  and is great to work with. It is entirely doable within the current state of the repository. If it is already done and implemented I'll see myself out.\r\n",
      "created_at": "2025-09-29T13:21:02Z",
      "updated_at": "2025-10-04T07:42:14Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "CorentinvdBdO",
        "avatar_url": "https://avatars.githubusercontent.com/u/53038558?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AiKhh",
      "number": 241,
      "title": "Audio Sources?",
      "body": "What audio sources can this capture? Only the microphone? \r\nCan it capture audio from other software, for example Zoom or MS Teams?",
      "created_at": "2025-09-28T18:01:57Z",
      "updated_at": "2025-10-02T17:47:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "radry",
        "avatar_url": "https://avatars.githubusercontent.com/u/8878118?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AiMPj",
      "number": 245,
      "title": "Limit the number of lines shown and scroll",
      "body": "Hi!\r\nI'd like to know if theres a way of limiting the number of lines shown and enable scrolling on the text.\r\nThis would be a great feature to use this project as a transcription tool running on a browser on a big screen, for meetings.\r\nGreat project, thanks @QuentinFuxa!",
      "created_at": "2025-09-29T15:27:41Z",
      "updated_at": "2025-09-29T15:27:42Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "jcasarini",
        "avatar_url": "https://avatars.githubusercontent.com/u/6942398?u=c79895b77a16ec8e987f70f74d1b7060cf43d6be&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AhrL8",
      "number": 187,
      "title": "Where locate .pth models or how to delete the models?",
      "body": "Please. After download the models (like \"base\", \"small\"...) by running commands \"whisperlivekit-server --model xxx\", I found some of them are unuseful for me. I want to delete some models, but cannot find the path of models.\r\n\r\nSystem: Windows 10\r\nEnv: Anaconda, python 3.9",
      "created_at": "2025-09-01T10:03:14Z",
      "updated_at": "2025-09-05T15:04:24Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "ShadowSolitaire",
        "avatar_url": "https://avatars.githubusercontent.com/u/106463900?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AhsKD",
      "number": 191,
      "title": "Docker container fails to start",
      "body": "Hello,\r\n\r\nAfter building and trying to run the container, I'm met with the following error:\r\n\r\n```\r\nPS C:\\Dev\\docker\\WhisperLiveKit> docker run --gpus all -p 8081:8000 --name whisperlivekit whisperlivekit\r\nINFO:     Started server process [1]\r\nINFO:     Waiting for application startup.\r\n/opt/venv/lib/python3.12/site-packages/torch/hub.py:293: UserWarning: You are about to download and run code from an untrusted repository. In a future release, this won't be allowed. To add the repository to your trusted list, change the command to {calling_fn}(..., trust_repo=False) and a command prompt will appear asking for an explicit confirmation of trust, or load(..., trust_repo=True), which will assume that the prompt is to be answered with 'yes'. You can also use load(..., trust_repo='check') which will only prompt for confirmation if the repo is not already trusted. This will eventually be the default behaviour\r\n  warnings.warn(\r\nDownloading: \"https://github.com/snakers4/silero-vad/zipball/master\" to /root/.cache/torch/hub/master.zip\r\nERROR:    Traceback (most recent call last):\r\n  File \"/opt/venv/lib/python3.12/site-packages/starlette/routing.py\", line 694, in lifespan\r\n    async with self.lifespan_context(app) as maybe_state:\r\n  File \"/usr/lib/python3.12/contextlib.py\", line 210, in __aenter__\r\n    return await anext(self.gen)\r\n           ^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/basic_server.py\", line 23, in lifespan\r\n    transcription_engine = TranscriptionEngine(\r\n                           ^^^^^^^^^^^^^^^^^^^^\r\n  File \"/opt/venv/lib/python3.12/site-packages/whisperlivekit/core.py\", line 91, in __init__\r\n    self.vac_model, _ = torch.hub.load(repo_or_dir=\"snakers4/silero-vad\", model=\"silero_vad\")\r\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/opt/venv/lib/python3.12/site-packages/torch/hub.py\", line 568, in load\r\n    model = _load_local(repo_or_dir, model, *args, **kwargs)\r\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/opt/venv/lib/python3.12/site-packages/torch/hub.py\", line 594, in _load_local\r\n    hub_module = _import_module(MODULE_HUBCONF, hubconf_path)\r\n                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/opt/venv/lib/python3.12/site-packages/torch/hub.py\", line 106, in _import_module\r\n    spec.loader.exec_module(module)\r\n  File \"<frozen importlib._bootstrap_external>\", line 995, in exec_module\r\n  File \"<frozen importlib._bootstrap>\", line 488, in _call_with_frames_removed\r\n  File \"/root/.cache/torch/hub/snakers4_silero-vad_master/hubconf.py\", line 6, in <module>\r\n    from silero_vad.utils_vad import (init_jit_model,\r\n  File \"/root/.cache/torch/hub/snakers4_silero-vad_master/src/silero_vad/__init__.py\", line 7, in <module>\r\n    from silero_vad.model import load_silero_vad\r\n  File \"/root/.cache/torch/hub/snakers4_silero-vad_master/src/silero_vad/model.py\", line 1, in <module>\r\n    from .utils_vad import init_jit_model, OnnxWrapper\r\n  File \"/root/.cache/torch/hub/snakers4_silero-vad_master/src/silero_vad/utils_vad.py\", line 2, in <module>\r\n    import torchaudio\r\n  File \"/opt/venv/lib/python3.12/site-packages/torchaudio/__init__.py\", line 4, in <module>\r\n    from . import _extension  # noqa  # usort: skip\r\n    ^^^^^^^^^^^^^^^^^^^^^^^^\r\n  File \"/opt/venv/lib/python3.12/site-packages/torchaudio/_extension/__init__.py\", line 38, in <module>\r\n    _load_lib(\"libtorchaudio\")\r\n  File \"/opt/venv/lib/python3.12/site-packages/torchaudio/_extension/utils.py\", line 60, in _load_lib\r\n    torch.ops.load_library(path)\r\n  File \"/opt/venv/lib/python3.12/site-packages/torch/_ops.py\", line 1032, in load_library\r\n    ctypes.CDLL(path)\r\n  File \"/usr/lib/python3.12/ctypes/__init__.py\", line 379, in __init__\r\n    self._handle = _dlopen(self._name, mode)\r\n                   ^^^^^^^^^^^^^^^^^^^^^^^^^\r\nOSError: /opt/venv/lib/python3.12/site-packages/torchaudio/lib/libtorchaudio.so: undefined symbol: _ZNK5torch8autograd4Node4nameB5cxx11Ev\r\n\r\nERROR:    Application startup failed. Exiting.\r\n```\r\n\r\nOther answers seem to suggest that the undefined symbol is due to a mismatch between torch and torchaudio versions, but they are numerically in sync at least. Can someone suggest a known working version? Or if you happen to know any other solution to this?\r\n\r\nBest regards\r\nAlexander",
      "created_at": "2025-09-02T13:11:10Z",
      "updated_at": "2025-09-04T06:53:07Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": {
        "id": "DC_kwDONfvYSs4A2kF-",
        "body": "Hello again,\r\nThe most recent update seems to have fixed this. Closing.\r\n/Alexander"
      },
      "user": {
        "login": "Alexander-ARTV",
        "avatar_url": "https://avatars.githubusercontent.com/u/195569716?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ahqyv",
      "number": 184,
      "title": "test discussion",
      "body": "hello here",
      "created_at": "2025-09-01T06:00:45Z",
      "updated_at": "2025-09-03T06:45:12Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "Abiosky1000",
        "avatar_url": "https://avatars.githubusercontent.com/u/154752564?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AhpYP",
      "number": 180,
      "title": "WEEK TREEDIN BRO",
      "body": "### \r\n[trade-api.md](https://github.com/user-attachments/files/22066712/trade-api.md)\r\n",
      "created_at": "2025-08-31T13:38:28Z",
      "updated_at": "2025-08-31T13:38:57Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "zulquarnankhan17-crypto",
        "avatar_url": "https://avatars.githubusercontent.com/u/229603573?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ahm7N",
      "number": 167,
      "title": "Doesn't support wav?",
      "body": "Is it possible to expand more audio formats?",
      "created_at": "2025-08-28T08:18:21Z",
      "updated_at": "2025-08-29T15:57:30Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "xiaomayi-ant",
        "avatar_url": "https://avatars.githubusercontent.com/u/58244172?u=ee0855afead846f7985a1fec9242cf4b2201e20e&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ahnjz",
      "number": 169,
      "title": "Interactive code diagram",
      "body": "An interactive graph of this repository, for code comprehension and documentation, is available at:\n\nhttps://atomicviz.web.app/page-graph/QuentinFuxa-WhisperLiveKit/mRyuj93PExOcFv9qyvU6\n\nThe graph was created by **AtomicViz**, a tool for visualizing codebases. For questions and feedback, please contact **atomicviz11@gmail.com**\n\nTo edit the graph and create additional graphs, request a free access code by sending an email with the subject line: \"Access request for QuentinFuxa-WhisperLiveKit\".\n\nThanks!\n\n![SVG](https://firebasestorage.googleapis.com/v0/b/atomicviz.firebasestorage.app/o/QuentinFuxa-WhisperLiveKit.svg?alt=media)",
      "created_at": "2025-08-28T22:21:12Z",
      "updated_at": "2025-08-28T22:21:13Z",
      "category": {
        "name": "General",
        "emoji": ":speech_balloon:"
      },
      "answer": null,
      "user": {
        "login": "briandiloreto",
        "avatar_url": "https://avatars.githubusercontent.com/u/1791532?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AhnFi",
      "number": 168,
      "title": "Diarization from 4 (default softformer) speakers to 2)",
      "body": "    \"\"\"\r\n    PSEUDO ALGORITHM to Transform Diarization that predicts up to 4 speakers, to constrain it to predict up to 2 speakers\r\n    \r\n    this can be done by tricking the output:\r\n    Ouput in self.total_preds is of shape x, x, 4. We want x, x, 2\r\n    \r\n    So each iteration i, we have a ranking of the 4 speaker prediction, from 1 to 4\r\n    \r\n    If 2 speakers, the model will have closed predictions for the 2 positions of speaker 1, same for speaker 2.\r\n    we should not just do active_speakers = np.argmax(preds_np, axis=1), but take top 2, and build the mapping 4:2 . It may evoluate, as second detected speaker can still be speaker 1, or be speaker 2.\r\n    Use np.argsort(preds_np, axis=1)[:, -2:] to get the top 2.\r\n    \r\n    DETECT SPEAKER TOP 1 FOR PREDICTION i : DS_a_{i}\r\n    DETECT SPEAKER TOP 2 FOR PREDICTION i : DS_b_{i}\r\n    \r\n    ATTRIBUTED SPEAKER FOR PREDICTION i : AS_{i}\r\n    \r\n    GROUND TRUTH SPEAKER A : GTS_A\r\n    GROUND TRUTH SPEAKER B : GTS_B\r\n    DIST(a, b) : distance between detected speakers a and b.\r\n    \r\n    i\r\n    0: AS_0 <- A\r\n    1: AS_1 <- B\r\n    2:\r\n        IF DIST(DS_a_0, DS_a_1) < DIST(DS_a_0, DS_a_2) AND DIST(DS_a_0, DS_a_1) < DIST(DS_a_1, DS_a_2):\r\n            #likely that DS_a_0 = DS_a_1\r\n            AS_1 <- A\r\n            AS_2 <- B\r\n        ELIF DIST(DS_a_0, DS_a_2) < DIST(DS_a_0, DS_a_1) AND DIST(DS_a_0, DS_a_2) < DIST(DS_a_1, DS_a_2):\r\n            AS_2 <- A\r\n        ELSE\r\n            AS_2 <- B\r\n    \r\n    3: ...\r\n    \"\"\"\r\n",
      "created_at": "2025-08-28T11:39:49Z",
      "updated_at": "2025-08-28T11:39:50Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "QuentinFuxa",
        "avatar_url": "https://avatars.githubusercontent.com/u/38427957?u=42ebdd80f6599e854e738b878dcf619f875b6778&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AhBsF",
      "number": 154,
      "title": "(please delete discussion, this was made by mistake)",
      "body": "",
      "created_at": "2025-07-30T21:57:50Z",
      "updated_at": "2025-07-31T00:51:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "4l0pix",
        "avatar_url": "https://avatars.githubusercontent.com/u/111502111?u=4a8aafad7a55ec7d25ac6b14279325079ba03d50&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ad8IH",
      "number": 18,
      "title": "How to segment into paragraphes?",
      "body": "Giving longer text. It would be usefull to have paragraph segmentation. \r\nThis should not be so dificult. Something if the speak break is long enough add a paragraph break.\r\nIf the paragraph break is inside a sentence maybe simply add elipsis.. ",
      "created_at": "2025-01-20T09:15:55Z",
      "updated_at": "2025-07-05T20:54:59Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "SilasK",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?u=55db524fb310acd499c4a99f313cbd013c24b7ae&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ad8IN",
      "number": 19,
      "title": "I started to make translation feature",
      "body": "I share results when it is working..",
      "created_at": "2025-01-20T09:16:50Z",
      "updated_at": "2025-05-20T08:21:16Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "SilasK",
        "avatar_url": "https://avatars.githubusercontent.com/u/7523034?u=55db524fb310acd499c4a99f313cbd013c24b7ae&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Aepnm",
      "number": 62,
      "title": "Production Readiness",
      "body": "Hello everyone, I wanted to ask whether the backend is production ready. Can this pipeline handle high-traffic websites?",
      "created_at": "2025-03-03T17:54:48Z",
      "updated_at": "2025-04-20T12:56:00Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "arawxx",
        "avatar_url": "https://avatars.githubusercontent.com/u/54948455?u=e1981e694f0235657455070a2a6288deda8236d3&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ae7_C",
      "number": 97,
      "title": "Cannot run with option --vac",
      "body": "I cannot run with option --vac\r\nCan anyone help me with this, thank you so much.",
      "created_at": "2025-03-20T15:19:52Z",
      "updated_at": "2025-04-10T05:49:14Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "toanhuynhnguyen",
        "avatar_url": "https://avatars.githubusercontent.com/u/171304217?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ae8__",
      "number": 99,
      "title": "Add an option to work with WAV directly, without translate to webm",
      "body": "For other more advanced uses and low-level implementations it will be nice to have.",
      "created_at": "2025-03-21T14:20:28Z",
      "updated_at": "2025-03-21T14:20:29Z",
      "category": {
        "name": "Ideas",
        "emoji": ":bulb:"
      },
      "answer": null,
      "user": {
        "login": "ejgarcian",
        "avatar_url": "https://avatars.githubusercontent.com/u/66923189?v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4Ae4tj",
      "number": 89,
      "title": "Number of Workers",
      "body": "@QuentinFuxa how many workers are you typically using?\nWhen I run the Kit I get to about 12 minutes and it freezes and I'm assuming it may be number if workers?\nIn fact could you share the computer spec you are using for a benchmark?\nThanks a lot for your contribution",
      "created_at": "2025-03-18T06:26:03Z",
      "updated_at": "2025-03-18T17:18:39Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "simondpalmer",
        "avatar_url": "https://avatars.githubusercontent.com/u/50067089?u=c00bbaf03c730b7418f92e615713acd12f9e409e&v=4"
      }
    },
    {
      "id": "D_kwDONfvYSs4AeVYW",
      "number": 44,
      "title": "Websocket is not being accepted when openieng and closing",
      "body": "I am using the given html page for transcribing audio, and using the openai-api backend.\r\n\r\nAfter setting the openai key, I am doing the below\r\n\r\n```python\r\npython whisper_fastapi_online_server.py --host 0.0.0.0 --port 8000 --backend openai-api --language en\r\n```\r\n\r\nIt works well for the first try. When I hit stop recording and hit start again, it fails\r\n\r\n![image](https://github.com/user-attachments/assets/285d2c4e-137f-4e0c-98b1-f000e0a5792d)\r\n\r\nThe websocket is frozen and does not seem to be opening again.\r\n\r\nIt stays at websocket closed by user,and the backend seems to be frozen\r\n\r\n![image](https://github.com/user-attachments/assets/28db9b56-f00b-4457-b010-658754a9fda4)\r\n\r\nCan you please guide me on what I'm doing wrong please?",
      "created_at": "2025-02-12T09:38:29Z",
      "updated_at": "2025-02-12T09:38:29Z",
      "category": {
        "name": "Q&A",
        "emoji": ":pray:"
      },
      "answer": null,
      "user": {
        "login": "MusigMaestro",
        "avatar_url": "https://avatars.githubusercontent.com/u/174086727?v=4"
      }
    }
  ],
  "details": {
    "id": 905697354,
    "node_id": "R_kgDONfvYSg",
    "name": "WhisperLiveKit",
    "full_name": "QuentinFuxa/WhisperLiveKit",
    "private": false,
    "owner": {
      "login": "QuentinFuxa",
      "id": 38427957,
      "node_id": "MDQ6VXNlcjM4NDI3OTU3",
      "avatar_url": "https://avatars.githubusercontent.com/u/38427957?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/QuentinFuxa",
      "type": "User",
      "user_view_type": "public",
      "site_admin": false
    },
    "description": "Simultaneous speech-to-text model",
    "fork": false,
    "url": "https://api.github.com/repos/QuentinFuxa/WhisperLiveKit",
    "created_at": "2024-12-19T10:49:09Z",
    "updated_at": "2025-12-08T03:04:21Z",
    "pushed_at": "2025-12-06T10:38:01Z",
    "homepage": "",
    "size": 29413,
    "stargazers_count": 9086,
    "watchers_count": 9086,
    "language": "Python",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "has_discussions": true,
    "forks_count": 894,
    "archived": false,
    "disabled": false,
    "open_issues_count": 105,
    "license": {
      "key": "apache-2.0",
      "name": "Apache License 2.0",
      "spdx_id": "Apache-2.0",
      "url": "https://api.github.com/licenses/apache-2.0",
      "node_id": "MDc6TGljZW5zZTI="
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "topics": {},
    "visibility": "public",
    "forks": 894,
    "open_issues": 105,
    "watchers": 9086,
    "default_branch": "main",
    "permissions": {
      "admin": false,
      "maintain": false,
      "push": false,
      "triage": false,
      "pull": true
    },
    "temp_clone_token": "",
    "network_count": 894,
    "subscribers_count": 57
  },
  "lastFetched": 1765163647161
}