[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-alesaccoia--VoiceStreamAI":3,"tool-alesaccoia--VoiceStreamAI":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",156804,2,"2026-04-15T11:34:33",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":74,"owner_avatar_url":75,"owner_bio":76,"owner_company":77,"owner_location":78,"owner_email":79,"owner_twitter":73,"owner_website":80,"owner_url":81,"languages":82,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":10,"env_os":102,"env_gpu":103,"env_ram":104,"env_deps":105,"category_tags":116,"github_topics":118,"view_count":32,"oss_zip_url":123,"oss_zip_packed_at":123,"status":17,"created_at":124,"updated_at":125,"faqs":126,"releases":157},7841,"alesaccoia\u002FVoiceStreamAI","VoiceStreamAI","Near-Realtime audio transcription using self-hosted Whisper and WebSocket in Python\u002FJS","VoiceStreamAI 是一款基于 Python 和 JavaScript 构建的开源解决方案，旨在实现音频的“近实时”流式转录。它通过 WebSocket 技术，让用户能够一边说话一边看到文字生成，极大地缩短了传统录音转写所需的等待时间。\n\n该工具主要解决了本地部署高性能语音识别系统的难题。用户无需依赖云端 API，即可在自有服务器上利用 OpenAI 的 Whisper 模型（默认集成加速版 faster-whisper）进行高精度的多语言识别，同时结合 Huggingface 的语音活动检测（VAD）技术，智能过滤静音片段，确保处理效率与隐私安全。\n\nVoiceStreamAI 特别适合开发者、研究人员以及需要搭建私有化语音服务的企业团队使用。其架构设计灵活，采用工厂模式和策略模式，方便技术人员根据需求替换不同的语音检测或识别组件。此外，它还支持 Docker 一键部署、GPU 加速以及安全的 SSL 加密连接，为构建稳定、可扩展的实时语音应用提供了坚实的基础设施。无论是用于开发会议记录助手、实时字幕系统，还是作为语音交互研究的基座，VoiceStreamAI 都是一个高效且","VoiceStreamAI 是一款基于 Python 和 JavaScript 构建的开源解决方案，旨在实现音频的“近实时”流式转录。它通过 WebSocket 技术，让用户能够一边说话一边看到文字生成，极大地缩短了传统录音转写所需的等待时间。\n\n该工具主要解决了本地部署高性能语音识别系统的难题。用户无需依赖云端 API，即可在自有服务器上利用 OpenAI 的 Whisper 模型（默认集成加速版 faster-whisper）进行高精度的多语言识别，同时结合 Huggingface 的语音活动检测（VAD）技术，智能过滤静音片段，确保处理效率与隐私安全。\n\nVoiceStreamAI 特别适合开发者、研究人员以及需要搭建私有化语音服务的企业团队使用。其架构设计灵活，采用工厂模式和策略模式，方便技术人员根据需求替换不同的语音检测或识别组件。此外，它还支持 Docker 一键部署、GPU 加速以及安全的 SSL 加密连接，为构建稳定、可扩展的实时语音应用提供了坚实的基础设施。无论是用于开发会议记录助手、实时字幕系统，还是作为语音交互研究的基座，VoiceStreamAI 都是一个高效且可控的选择。","# VoiceStreamAI\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\nVoiceStreamAI is a Python 3 -based server and JavaScript client solution that\nenables near-realtime audio streaming and transcription using WebSocket. The\nsystem employs Huggingface's Voice Activity Detection (VAD) and OpenAI's Whisper\nmodel ([faster-whisper](https:\u002F\u002Fgithub.com\u002FSYSTRAN\u002Ffaster-whisper) being the\ndefault) for accurate speech recognition and processing.\n\n## Features\n\n- Real-time audio streaming through WebSocket.\n- Modular design for easy integration of different VAD and ASR technologies.\n- Factory and strategy pattern implementation for flexible component management.\n- Unit testing framework for robust development.\n- Customizable audio chunk processing strategies.\n- Support for multilingual transcription.\n- Supports Secure Sockets with optional cert and key file arguments\n\n## Demo Video\n\nhttps:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fassets\u002F1385023\u002F9b5f2602-fe0b-4c9d-af9e-4662e42e23df\n\n## Demo Client\n\n![Client Demo](\u002Fimg\u002Fclient.png \"Client Demo\")\n\n## Running with Docker\n\nThis will not guide you in detail on how to use CUDA in docker, see for\nexample [here](https:\u002F\u002Fmedium.com\u002F@kevinsjy997\u002Fconfigure-docker-to-use-local-gpu-for-training-ml-models-70980168ec9b).\n\nStill, these are the commands for Linux:\n\n```bash\ndistribution=$(. \u002Fetc\u002Fos-release;echo $ID$VERSION_ID) \\\n&& curl -fsSL https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fgpgkey | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg \\\n&& curl -s -L https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002F$distribution\u002Flibnvidia-container.list | \\\nsed 's#deb https:\u002F\u002F#deb [signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg] https:\u002F\u002F#g' | \\\nsudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fnvidia-container-toolkit.list\n\nsudo nvidia-ctk runtime configure --runtime=docker\n\nsudo systemctl restart docker\n```\n\nYou can build the container image with:\n\n```bash\nsudo docker build -t voicestreamai .\n```\n\nAfter getting your VAD token (see next sections) run:\n\n```bash\nsudo docker volume create huggingface_models\n\nsudo docker run --gpus all -p 8765:8765 -v huggingface_models:\u002Froot\u002F.cache\u002Fhuggingface  -e PYANNOTE_AUTH_TOKEN='VAD_TOKEN_HERE' voicestreamai\n```\n\nThe \"volume\" stuff will allow you not to re-download the huggingface models each\ntime you re-run the container. If you don't need this, just use:\n\n```bash\nsudo docker run --gpus all -p 8765:8765 -e PYANNOTE_AUTH_TOKEN='VAD_TOKEN_HERE' voicestreamai\n```\n\n## Normal, Manual Installation\n\nTo set up the VoiceStreamAI server, you need Python 3.8 or later and the\nfollowing packages:\n\n1. `transformers`\n2. `pyannote.core`\n3. `pyannote.audio`\n4. `websockets`\n5. `asyncio`\n6. `sentence-transformers`\n7. `faster-whisper`\n\nInstall these packages using pip:\n\n```bash\npip install -r requirements.txt\n```\n\nFor the client-side, you need a modern web browser with JavaScript support.\n\n## Configuration and Usage\n\n### Server Configuration\n\nThe VoiceStreamAI server can be customized through command line arguments,\nallowing you to specify components, host, and port settings according to your\nneeds.\n\n- `--vad-type`: Specifies the type of Voice Activity Detection (VAD) pipeline to\n  use (default: `pyannote`) .\n- `--vad-args`: A JSON string containing additional arguments for the VAD\n  pipeline. (required for `pyannote`: `'{\"auth_token\": \"VAD_AUTH_HERE\"}'`)\n- `--asr-type`: Specifies the type of Automatic Speech Recognition (ASR)\n  pipeline to use (default: `faster_whisper`).\n- `--asr-args`: A JSON string containing additional arguments for the ASR\n  pipeline (one can for example change `model_name` for whisper)\n- `--host`: Sets the host address for the WebSocket server (\n  default: `127.0.0.1`).\n- `--port`: Sets the port on which the server listens (default: `8765`).\n- `--certfile`: The path to the SSL certificate (cert file) if using secure\n  websockets (default: `None`)\n- `--keyfile`: The path to the SSL key file if using secure websockets (\n  default: `None`)\n\nFor running the server with the standard configuration:\n\n1. Obtain the key to the Voice-Activity-Detection model\n   at [https:\u002F\u002Fhuggingface.co\u002Fpyannote\u002Fsegmentation](https:\u002F\u002Fhuggingface.co\u002Fpyannote\u002Fsegmentation)\n2. Run the server using Python 3.x, please add the VAD key in the command line:\n\n```bash\npython3 -m src.main --vad-args '{\"auth_token\": \"vad token here\"}'\n```\n\nYou can see all the command line options with the command:\n\n```bash\npython3 -m src.main --help\n```\n\n## Client Usage\n\n1. Open the `client\u002Findex.html` file in a web browser.\n2. Enter the WebSocket address (default is `ws:\u002F\u002Flocalhost:8765`).\n3. Configure the audio chunk length and offset. See below.\n4. Select the language for transcription.\n5. Click 'Connect' to establish a WebSocket connection.\n6. Use 'Start Streaming' and 'Stop Streaming' to control audio capture.\n\n## Technology Overview\n\n- **Python Server**: Manages WebSocket connections, processes audio streams, and\n  handles voice activity detection and transcription.\n- **WebSockets**: Used for real-time communication between the server and\n  client.\n- **Voice Activity Detection**: Detects voice activity in the audio stream to\n  optimize processing.\n- **Speech-to-Text**:\n  Utilizes [Faster Whisper](https:\u002F\u002Fgithub.com\u002FSYSTRAN\u002Ffaster-whisper) or\n  OpenAI's Whisper model (openai\u002Fwhisper-large-v3) for accurate transcription.\n  Faster Whisper is the default as it is much faster\n\n## Technical Overview\n\n### Settings\n\n### Factory and Strategy patterns\n\nBoth the VAD and the ASR components can be easily extended to integrate new\ntechniques and use models with a different interface than HuggingFace\npipelines. New processing\u002Fchunking strategies can be added in server.py, and\nused by the specific clients setting the \"processing_strategy\" key in the\nconfig.\n\n### Voice Activity Detection (VAD)\n\nVoice Activity Detection (VAD) in VoiceStreamAI enables the system to\ndistinguish between speech and non-speech segments within an audio stream. The\nprimary purpose of implementing VAD is to enhance the efficiency and accuracy of\nthe speech-to-text process:\n\n- **Reduces Computational Load**: By identifying and processing only those\n  segments that contain speech, VAD significantly reduces the computational\n  resources required for transcription. This is important considering that the\n  speech recognition pipeline takes 7 seconds on a Tesla T4 (16Gb) - take this\n  into consideration when setting the chunk length.\n- **Improves Transcription Accuracy**: Processing only the voice segments\n  minimizes the chances of non-speech noises being misinterpreted as speech,\n  thus improving the overall accuracy of the transcription.\n- **Optimizes Network Utilization**: In a streaming context, sending only voice\n  segments over the network, as opposed to the entire audio stream, optimizes\n  bandwidth usage.\n\nVoiceStreamAI uses a Huggingface VAD model to ensure reliable detection of\nspeech in diverse audio conditions.\n\n### Processing Strategy \"SilenceAtEndOfChunk\"\n\nThe buffering strategy is designed to balance between near-real-time processing\nand ensuring complete and accurate capture of speech segments. Here’s how\nbuffering is managed:\n\n- **Chunk-Based Processing**: The audio stream is processed into chunks of a\n  per-client customizable length (defaults to 5 seconds)\n- **Silence Handling**: A minimum silence offset is defined to allow for\n  continuous listening and capturing audio beyond the end of a single chunk.\n  This ensures that words at the boundary of chunks are not cut off, thereby\n  maintaining the context and completeness of speech. This introduces extra\n  latency for very dense parts of speech, as the transciprion will not take\n  place until a pause is identified.\n- **Dynamic Buffer Management**: The system dynamically manages buffers for each\n  client. When new audio data arrives, it is appended to the client's temporary\n  buffer. Once a buffer reaches the chunk length, it is processed, and the\n  buffer is cleared, ready for new data.\n\n![Buffering Mechanism](\u002Fimg\u002Fvad.png \"Chunking and Silence Handling\")\n\n### Client-Specific Configuration Messaging\n\nIn VoiceStreamAI, each client can have a unique configuration that tailors the\ntranscription process to their specific needs. This personalized setup is\nachieved through a messaging system where the JavaScript client sends\nconfiguration details to the Python server. This section explains how these\nconfigurations are structured and transmitted.\n\nThe client configuration can include various parameters such as language\npreference, chunk length, and chunk offset. For instance:\n\n- `language`: Specifies the language for transcription. If set to anything other\n  than \"multilanguage\" it will force the Whisper inference to be in that\n  language\n- `processing_strategy`: Specifies the type of processing for this client, a\n  sort of strategy pattern. Strategy for now aren't using OOP but they are\n  implemented in an if\u002Felse in server.py\n- `chunk_length_seconds`: Defines the length of each audio chunk to be processed\n- `chunk_offset_seconds`: Determines the silence time at the end of each chunk\n  needed to process audio (used by processing_strategy nr 1).\n\n### Transmitting Configuration\n\n1. **Initialization**: When a client initializes a connection with the server,\n   it can optionally send a configuration message. This message is a JSON object\n   containing key-value pairs representing the client's preferred settings.\n\n2. **JavaScript Client Setup**: On the demo client, the configuration is\n   gathered from the user interface elements (like dropdowns and input fields).\n   Once the Audio starts flowing, a JSON object is created and sent to the\n   server via WebSocket. For example:\n\n```javascript\nfunction sendAudioConfig() {\n    const audioConfig = {\n        type: \"config\",\n        data: {\n            chunk_length_seconds: 5,\n            chunk_offset_seconds: 1,\n            processing_strategy: 1,\n            language: language,\n        },\n    };\n    websocket.send(JSON.stringify(audioConfig));\n}\n```\n\n## Testing\n\nWhen implementing a new ASR, Vad or Buffering Strategy you can test it with:\n\n```bash\npip install -r requirements-dev.txt\nexport PYANNOTE_AUTH_TOKEN=\u003CVAD_TOKEN_HERE>\nASR_TYPE=faster_whisper python -m unittest test.server.test_server\n```\n\nPlease make sure that the end variables are in place for example for the VAD\nauth token. Several other tests are in place, for example for the standalone\nASR.\n\n## Areas for Improvement\n\n### Challenges with Small Audio Chunks in Whisper\n\n- **Context Loss**: Shorter audio segments may lack sufficient context, leading\n  Whisper to misinterpret the speech or fail to capture the nuances of the\n  dialogue.\n- **Accuracy Variability**: The accuracy of transcription can vary with the\n  length of the audio chunk. Smaller chunks might result in less reliable\n  transcriptions compared to longer segments.\n\n### Dependence on Audio Files\n\nCurrently, VoiceStreamAI processes audio by saving chunks to files and then\nrunning these files through the models.\n\n## Development\n\nFork and clone this repository. Install dependencies and related tools.\n\n```bash\npip install -r requirements.txt\npip install -r requirements-dev.txt\nnpm install -g jshint@2.13.6 eslint@8.57.0\n```\n\nAdd your modifications to the repository and run code style checks manually,\nor integrate them into your IDE\u002Feditor.\n\n```bash\n# For Python\nflake8 src\u002F test\u002F\nblack --line-length 79 src\u002F test\u002F\nisort src\u002F test\u002F\n\n# For JavaScript\njshint client\u002F*.js\neslint client\u002F*.js\n```\n\nFinally, push and create a pull request.\n\n## Contributors\n\n- Alessandro\n  Saccoia - [alessandro.saccoia@gmail.com](mailto:alessandro.saccoia@gmail.com)\n\nThis project is open for contributions. Feel free to fork the repository and\nsubmit pull requests.\n","# VoiceStreamAI\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](https:\u002F\u002Fopensource.org\u002Flicenses\u002FMIT)\n\nVoiceStreamAI 是一个基于 Python 3 的服务器与 JavaScript 客户端解决方案，通过 WebSocket 实现近实时的音频流传输和转录。该系统采用 Hugging Face 的语音活动检测（VAD）以及 OpenAI 的 Whisper 模型（默认使用 [faster-whisper](https:\u002F\u002Fgithub.com\u002FSYSTRAN\u002Ffaster-whisper)）来实现精准的语音识别与处理。\n\n## 功能特性\n\n- 通过 WebSocket 进行实时音频流传输。\n- 模块化设计，便于集成不同的 VAD 和 ASR 技术。\n- 使用工厂模式和策略模式实现灵活的组件管理。\n- 提供单元测试框架，确保开发的健壮性。\n- 可自定义的音频分块处理策略。\n- 支持多语言转录。\n- 支持安全套接字，并可选择性地指定证书和密钥文件。\n\n## 演示视频\n\nhttps:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fassets\u002F1385023\u002F9b5f2602-fe0b-4c9d-af9e-4662e42e23df\n\n## 客户端演示\n\n![客户端演示](\u002Fimg\u002Fclient.png \"客户端演示\")\n\n## 使用 Docker 运行\n\n本指南不会详细说明如何在 Docker 中使用 CUDA，请参阅例如 [这里](https:\u002F\u002Fmedium.com\u002F@kevinsjy997\u002Fconfigure-docker-to-use-local-gpu-for-training-ml-models-70980168ec9b)。\n\n不过，以下是适用于 Linux 的命令：\n\n```bash\ndistribution=$(. \u002Fetc\u002Fos-release;echo $ID$VERSION_ID) \\\n&& curl -fsSL https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fgpgkey | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg \\\n&& curl -s -L https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002F$distribution\u002Flibnvidia-container.list | \\\nsed 's#deb https:\u002F\u002F#deb [signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg] https:\u002F\u002F#g' | \\\nsudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fnvidia-container-toolkit.list\n\nsudo nvidia-ctk runtime configure --runtime=docker\n\nsudo systemctl restart docker\n```\n\n您可以使用以下命令构建容器镜像：\n\n```bash\nsudo docker build -t voicestreamai .\n```\n\n获取 VAD 令牌后（见后续章节），运行：\n\n```bash\nsudo docker volume create huggingface_models\n\nsudo docker run --gpus all -p 8765:8765 -v huggingface_models:\u002Froot\u002F.cache\u002Fhuggingface  -e PYANNOTE_AUTH_TOKEN='VAD_TOKEN_HERE' voicestreamai\n```\n\n使用卷可以避免每次重新运行容器时都重新下载 Hugging Face 模型。如果不需此功能，只需执行：\n\n```bash\nsudo docker run --gpus all -p 8765:8765 -e PYANNOTE_AUTH_TOKEN='VAD_TOKEN_HERE' voicestreamai\n```\n\n## 常规手动安装\n\n要搭建 VoiceStreamAI 服务器，您需要 Python 3.8 或更高版本，以及以下软件包：\n\n1. `transformers`\n2. `pyannote.core`\n3. `pyannote.audio`\n4. `websockets`\n5. `asyncio`\n6. `sentence-transformers`\n7. `faster-whisper`\n\n使用 pip 安装这些依赖：\n\n```bash\npip install -r requirements.txt\n```\n\n客户端方面，您需要支持 JavaScript 的现代 Web 浏览器。\n\n## 配置与使用\n\n### 服务器配置\n\nVoiceStreamAI 服务器可通过命令行参数进行自定义，允许您根据需求指定组件、主机和端口设置。\n\n- `--vad-type`：指定要使用的语音活动检测（VAD）管道类型（默认为 `pyannote`）。\n- `--vad-args`：包含 VAD 管道附加参数的 JSON 字符串。（对于 `pyannote` 必须提供：`'{\"auth_token\": \"VAD_AUTH_HERE\"}'`）\n- `--asr-type`：指定要使用的自动语音识别（ASR）管道类型（默认为 `faster_whisper`）。\n- `--asr-args`：包含 ASR 管道附加参数的 JSON 字符串（例如，可以更改 Whisper 的 `model_name`）。\n- `--host`：设置 WebSocket 服务器的主机地址（默认为 `127.0.0.1`）。\n- `--port`：设置服务器监听的端口（默认为 `8765`）。\n- `--certfile`：如果使用安全 WebSocket，则指定 SSL 证书文件路径（默认为 `None`）。\n- `--keyfile`：如果使用安全 WebSocket，则指定 SSL 密钥文件路径（默认为 `None`）。\n\n以标准配置运行服务器：\n\n1. 在 [https:\u002F\u002Fhuggingface.co\u002Fpyannote\u002Fsegmentation](https:\u002F\u002Fhuggingface.co\u002Fpyannote\u002Fsegmentation) 获取语音活动检测模型的密钥。\n2. 使用 Python 3.x 运行服务器，并在命令行中添加 VAD 密钥：\n\n```bash\npython3 -m src.main --vad-args '{\"auth_token\": \"vad token here\"}'\n```\n\n您可以通过以下命令查看所有命令行选项：\n\n```bash\npython3 -m src.main --help\n```\n\n## 客户端使用\n\n1. 在 Web 浏览器中打开 `client\u002Findex.html` 文件。\n2. 输入 WebSocket 地址（默认为 `ws:\u002F\u002Flocalhost:8765`）。\n3. 配置音频分块长度和偏移量，详见下文。\n4. 选择转录的语言。\n5. 点击“连接”以建立 WebSocket 连接。\n6. 使用“开始流”和“停止流”控制音频采集。\n\n## 技术概览\n\n- **Python 服务器**：管理 WebSocket 连接，处理音频流，并负责语音活动检测和转录。\n- **WebSockets**：用于服务器与客户端之间的实时通信。\n- **语音活动检测（VAD）**：检测音频流中的语音活动，以优化处理效率。\n- **语音转文本**：\n  使用 [Faster Whisper](https:\u002F\u002Fgithub.com\u002FSYSTRAN\u002Ffaster-whisper) 或 OpenAI 的 Whisper 模型（openai\u002Fwhisper-large-v3）实现精准转录。默认使用 Faster Whisper，因为它速度更快。\n\n## 技术概述\n\n### 设置\n\n### 工厂模式与策略模式\n\n无论是 VAD 还是 ASR 组件，都可以轻松扩展以集成新技术，并使用与 Hugging Face 管道接口不同的模型。新的处理\u002F分块策略可以在 server.py 中添加，并由特定客户端通过在配置中设置 “processing_strategy” 键来使用。\n\n### 语音活动检测（VAD）\n\nVoiceStreamAI 中的语音活动检测（VAD）使系统能够区分音频流中的语音段和非语音段。实施 VAD 的主要目的是提高语音转文本过程的效率和准确性：\n\n- **降低计算负载**：通过仅识别并处理包含语音的片段，VAD 显著减少了转录所需的计算资源。考虑到在 Tesla T4（16Gb）上，语音识别管道需要 7 秒钟才能完成一次处理，在设置分块长度时应充分考虑这一点。\n- **提高转录准确性**：只处理语音片段可以最大限度地减少非语音噪声被误认为语音的可能性，从而提升整体转录的准确性。\n- **优化网络利用率**：在流式传输场景中，仅发送语音片段而非整个音频流，可以更有效地利用带宽。\n\nVoiceStreamAI 使用 Hugging Face 的 VAD 模型，以确保在各种音频条件下都能可靠地检测到语音。\n\n### 处理策略“SilenceAtEndOfChunk”\n\n缓冲策略旨在在近实时处理与确保语音片段完整、准确捕获之间取得平衡。以下是缓冲的管理方式：\n\n- **基于分块的处理**：音频流被分割成每个客户端可自定义长度的分块（默认为5秒）。\n- **静音处理**：定义了一个最小静音偏移量，允许在单个分块结束之后继续监听和捕获音频。这样可以确保分块边界处的词语不会被截断，从而保持语音的上下文和完整性。不过，对于语速非常快的部分，这会引入额外的延迟，因为转录要等到检测到停顿时才会进行。\n- **动态缓冲管理**：系统会为每个客户端动态管理缓冲区。当新的音频数据到达时，会被追加到该客户端的临时缓冲区中。一旦缓冲区达到分块长度，就会被处理，并清空缓冲区以准备接收新数据。\n\n![缓冲机制](\u002Fimg\u002Fvad.png \"分块与静音处理\")\n\n### 客户端特定配置的消息传递\n\n在VoiceStreamAI中，每个客户端都可以拥有独特的配置，以根据其具体需求定制转录流程。这种个性化设置通过消息传递系统实现，即JavaScript客户端将配置信息发送到Python服务器。本节将说明这些配置是如何构建和传输的。\n\n客户端配置可以包括多种参数，例如语言偏好、分块长度和分块偏移量。例如：\n\n- `language`：指定转录的语言。如果设置为“multilanguage”以外的值，则会强制Whisper推理使用该语言。\n- `processing_strategy`：指定该客户端的处理类型，类似于策略模式。目前这些策略并未采用面向对象编程，而是通过server.py中的if\u002Felse语句实现。\n- `chunk_length_seconds`：定义每个待处理音频分块的长度。\n- `chunk_offset_seconds`：决定每个分块末尾用于处理音频所需的静音时间（由处理策略1使用）。\n\n### 配置的传输\n\n1. **初始化**：当客户端与服务器建立连接时，可以选择性地发送一条配置消息。该消息是一个JSON对象，包含代表客户端首选设置的键值对。\n\n2. **JavaScript客户端设置**：在演示客户端中，配置信息是从用户界面元素（如下拉菜单和输入框）收集的。一旦音频开始流动，就会创建一个JSON对象并通过WebSocket发送到服务器。例如：\n\n```javascript\nfunction sendAudioConfig() {\n    const audioConfig = {\n        type: \"config\",\n        data: {\n            chunk_length_seconds: 5,\n            chunk_offset_seconds: 1,\n            processing_strategy: 1,\n            language: language,\n        },\n    };\n    websocket.send(JSON.stringify(audioConfig));\n}\n```\n\n## 测试\n\n在实现新的ASR、VAD或缓冲策略时，可以使用以下命令进行测试：\n\n```bash\npip install -r requirements-dev.txt\nexport PYANNOTE_AUTH_TOKEN=\u003CVAD_TOKEN_HERE>\nASR_TYPE=faster_whisper python -m unittest test.server.test_server\n```\n\n请确保相关环境变量已正确设置，例如VAD认证令牌。此外，还有其他针对独立ASR等模块的测试用例。\n\n## 改进方向\n\n### Whisper处理小音频分块的挑战\n\n- **上下文丢失**：较短的音频片段可能缺乏足够的上下文，导致Whisper误解语音内容或无法捕捉对话中的细微差别。\n- **准确性波动**：转录的准确性会随音频分块长度的变化而变化。相比较长的分块，较小的分块可能导致转录结果不够可靠。\n\n### 对音频文件的依赖\n\n目前，VoiceStreamAI通过将分块保存为文件，再将这些文件输入模型来进行音频处理。\n\n## 开发\n\n请先fork并克隆本仓库，然后安装依赖及相关工具。\n\n```bash\npip install -r requirements.txt\npip install -r requirements-dev.txt\nnpm install -g jshint@2.13.6 eslint@8.57.0\n```\n\n将您的修改添加到仓库中，并手动运行代码风格检查，或者将其集成到您的IDE\u002F编辑器中。\n\n```bash\n# 对于Python\nflake8 src\u002F test\u002F\nblack --line-length 79 src\u002F test\u002F\nisort src\u002F test\u002F\n\n# 对于JavaScript\njshint client\u002F*.js\neslint client\u002F*.js\n```\n\n最后，提交更改并创建一个pull request。\n\n## 贡献者\n\n- Alessandro Saccoia - [alessandro.saccoia@gmail.com](mailto:alessandro.saccoia@gmail.com)\n\n本项目欢迎贡献。您可以随意fork仓库并提交pull request。","# VoiceStreamAI 快速上手指南\n\nVoiceStreamAI 是一个基于 Python 服务端和 JavaScript 客户端的解决方案，支持通过 WebSocket 进行近实时的音频流传输和语音转录。系统集成了 Huggingface 的语音活动检测（VAD）和 OpenAI 的 Whisper 模型（默认使用 faster-whisper），以实现高精度的语音识别。\n\n## 环境准备\n\n### 系统要求\n- **操作系统**: Linux (推荐，特别是使用 Docker + GPU 时), macOS, Windows\n- **Python**: 3.8 或更高版本\n- **浏览器**: 现代浏览器（Chrome, Firefox, Edge 等），需支持 JavaScript 和 WebSocket\n- **硬件加速 (可选)**: 若需高性能转录，建议配备 NVIDIA GPU 并安装 CUDA 驱动\n\n### 前置依赖\n1. **Huggingface Token**: \n   - 访问 [pyannote\u002Fsegmentation](https:\u002F\u002Fhuggingface.co\u002Fpyannote\u002Fsegmentation) 获取 VAD 模型的认证 Token (`PYANNOTE_AUTH_TOKEN`)。\n2. **Python 依赖包**:\n   - `transformers`, `pyannote.core`, `pyannote.audio`, `websockets`, `asyncio`, `sentence-transformers`, `faster-whisper`\n3. **Node.js 工具 (开发可选)**:\n   - `jshint`, `eslint` (用于前端代码检查)\n\n> **国内加速提示**: 若下载 Huggingface 模型缓慢，可配置镜像环境变量：\n> ```bash\n> export HF_ENDPOINT=https:\u002F\u002Fhf-mirror.com\n> ```\n\n## 安装步骤\n\n你可以选择 **Docker 部署**（推荐，环境隔离好）或 **手动安装**。\n\n### 方案一：Docker 部署 (推荐)\n\n此方案适合快速启动，特别是需要调用 GPU 的场景。\n\n1. **配置 Docker 支持 NVIDIA GPU (Linux)**:\n   ```bash\n   distribution=$(. \u002Fetc\u002Fos-release;echo $ID$VERSION_ID) \\\n   && curl -fsSL https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002Fgpgkey | sudo gpg --dearmor -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg \\\n   && curl -s -L https:\u002F\u002Fnvidia.github.io\u002Flibnvidia-container\u002F$distribution\u002Flibnvidia-container.list | \\\n   sed 's#deb https:\u002F\u002F#deb [signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fnvidia-container-toolkit-keyring.gpg] https:\u002F\u002F#g' | \\\n   sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fnvidia-container-toolkit.list\n\n   sudo nvidia-ctk runtime configure --runtime=docker\n   sudo systemctl restart docker\n   ```\n\n2. **构建镜像**:\n   ```bash\n   sudo docker build -t voicestreamai .\n   ```\n\n3. **运行容器**:\n   创建持久化卷以避免重复下载模型，并填入你的 VAD Token：\n   ```bash\n   sudo docker volume create huggingface_models\n\n   sudo docker run --gpus all -p 8765:8765 -v huggingface_models:\u002Froot\u002F.cache\u002Fhuggingface -e PYANNOTE_AUTH_TOKEN='你的_VAD_TOKEN_在这里' voicestreamai\n   ```\n   *注：若不需要持久化模型，可省略 `-v` 参数。*\n\n### 方案二：手动安装\n\n1. **安装 Python 依赖**:\n   ```bash\n   pip install -r requirements.txt\n   ```\n   *(国内用户建议使用清华源：`pip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`)*\n\n2. **安装前端开发工具 (可选)**:\n   ```bash\n   npm install -g jshint@2.13.6 eslint@8.57.0\n   ```\n\n## 基本使用\n\n### 1. 启动服务端\n\n在终端中运行以下命令启动服务器。**必须**替换 `\u003C你的_VAD_TOKEN>` 为你从 Huggingface 获取的 Token。\n\n```bash\npython3 -m src.main --vad-args '{\"auth_token\": \"\u003C你的_VAD_TOKEN>\"}'\n```\n\n*默认监听地址为 `127.0.0.1:8765`。如需修改端口或启用 SSL，可添加 `--port` 或 `--certfile` 等参数。*\n\n### 2. 连接客户端\n\n1. 在浏览器中打开项目目录下的 `client\u002Findex.html` 文件。\n2. **WebSocket 地址**: 保持默认 `ws:\u002F\u002Flocalhost:8765` (若服务器远程部署，请改为对应 IP)。\n3. **配置参数**:\n   - **Chunk Length**: 音频切片长度（秒），默认 5 秒。\n   - **Chunk Offset**: 切片末尾的静音缓冲时间（秒），用于防止截断单词。\n   - **Language**: 选择转录语言（如 \"zh\", \"en\" 或 \"multilanguage\"）。\n4. 点击 **Connect** 建立连接。\n5. 点击 **Start Streaming** 开始录音并实时查看转录结果，点击 **Stop Streaming** 停止。\n\n### 3. 客户端配置示例 (代码层面)\n\n如果你正在开发自定义 JS 客户端，可通过 WebSocket 发送如下 JSON 配置：\n\n```javascript\nfunction sendAudioConfig() {\n    const audioConfig = {\n        type: \"config\",\n        data: {\n            chunk_length_seconds: 5,\n            chunk_offset_seconds: 1,\n            processing_strategy: 1,\n            language: \"zh\", \u002F\u002F 指定中文转录\n        },\n    };\n    websocket.send(JSON.stringify(audioConfig));\n}\n```","某跨国医疗团队正在开发一套远程问诊系统，需要医生与患者进行实时语音沟通并同步生成多语言电子病历。\n\n### 没有 VoiceStreamAI 时\n- 语音转文字依赖第三方云端 API，不仅每次调用产生高昂费用，还因患者隐私数据出境面临合规风险。\n- 传统离线转录需等待录音结束后统一处理，医生无法在问诊过程中实时查看关键信息，导致记录效率低下。\n- 缺乏智能静音检测，背景噪音或长时间停顿被无效转录，后期人工清洗数据耗时耗力。\n- 系统架构耦合度高，难以灵活切换不同的语音识别模型以适应不同语种的诊疗需求。\n\n### 使用 VoiceStreamAI 后\n- 通过自托管部署 Whisper 模型，所有音频数据仅在本地服务器流转，彻底解决隐私泄露隐患并大幅降低运营成本。\n- 利用 WebSocket 实现近实时音频流传输，医生说话的同时屏幕上即刻呈现精准字幕，支持问诊中即时确认病史。\n- 内置 Huggingface VAD（语音活动检测）自动过滤静音段和环境噪点，确保生成的病历文本干净、聚焦且准确。\n- 模块化设计允许团队轻松配置多语言策略，针对不同国籍患者动态切换识别模型，无缝支撑全球化医疗服务。\n\nVoiceStreamAI 通过私有化部署与流式处理技术，将高成本的离线转录转变为安全、即时且低延迟的实时辅助诊疗能力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Falesaccoia_VoiceStreamAI_36ea2a76.png","alesaccoia","Alessandro Saccoia","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Falesaccoia_ffd4dd43.jpg","Co-Founder @thembiai  Teaches @IULM\r\nOpen to interesting collabs!\r\n","Thembi.ai, IULM University","Milan, Italy","alessandro.saccoia@gmail.com","https:\u002F\u002Fwww.alessandrosaccoia.com","https:\u002F\u002Fgithub.com\u002Falesaccoia",[83,87,91,95],{"name":84,"color":85,"percentage":86},"Python","#3572A5",73.9,{"name":88,"color":89,"percentage":90},"JavaScript","#f1e05a",16.4,{"name":92,"color":93,"percentage":94},"HTML","#e34c26",7.6,{"name":96,"color":97,"percentage":32},"Dockerfile","#384d54",954,143,"2026-04-14T07:46:36","MIT","Linux","Docker 运行需 NVIDIA GPU (--gpus all)，README 提及在 Tesla T4 (16GB) 上测试，建议显存 16GB 以获得较好性能","未说明 (参考测试环境 Tesla T4 为 16GB)",{"notes":106,"python":107,"dependencies":108},"1. 必须获取 Hugging Face PyAnnote VAD 模型的认证令牌 (auth_token) 才能运行。2. 客户端仅需现代浏览器支持 JavaScript。3. Docker 部署时建议挂载卷以避免重复下载模型。4. 默认使用 faster-whisper 进行语音识别，支持多语言。5. 短音频片段可能导致转录准确性下降。","3.8+",[109,110,111,112,113,114,115],"transformers","pyannote.core","pyannote.audio","websockets","asyncio","sentence-transformers","faster-whisper",[117,13,14,15],"音频",[119,120,121,122],"ai","speech-recognition","speech-to-text","websocket",null,"2026-03-27T02:49:30.150509","2026-04-16T01:44:47.205920",[127,132,137,142,147,152],{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},35143,"如何处理分段音频（如 MPEG-DASH\u002FHLS 流）的转录？","目前需要在 VoiceStreamAI 之前添加一个预处理步骤。具体方法是将初始片段（init segment）与其他片段拼接，然后进行解析。维护者建议这是一个很好的用例，欢迎用户贡献最小化的演示代码。","https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fissues\u002F32",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},35144,"项目代码结构发生了重大变化，如何找回旧版本的服务器文件？","可以通过回滚到早期的提交记录来获取原始版本。例如，可以访问以下链接获取旧版代码：https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Ftree\u002F8d608c00b3afd6ca2c3dec1dba1a1b0bcb436131","https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fissues\u002F8",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},35145,"连续语音识别中“块末尾静音”策略效果不佳，有什么改进建议或替代方案？","默认设置已更改为使用 faster-whisper 模型，该模型支持实时处理 3 到 5 秒的音频块，效果良好。对于更高级的需求，社区建议结合滑动窗口策略、时间戳合并以及使用 LLM（如 Mistral）进行后处理来提高准确性。","https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fissues\u002F1",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},35146,"OpenAI Whisper 模型加载时使用的是 CPU 而不是 GPU，如何解决？","该问题已在后续提交中修复。请确保更新到包含修复的最新代码。相关修复提交参考：https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fpull\u002F26\u002Fcommits\u002F0f3430ce5cdde4d025f47d9df7200091dfe6ccca","https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fissues\u002F24",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},35147,"运行 Docker 容器或本地环境时报错：'Could not load library libcudnn_ops_infer.so.8'，如何解决？","如果是本地开发环境（非 Docker），需要设置环境变量指向 cuDNN 库路径。例如：\nexport LD_LIBRARY_PATH=\u003C项目路径>\u002F.venv\u002Flib64\u002Fpython3.10\u002Fsite-packages\u002Fnvidia\u002Fcudnn\u002Flib\u002F\n请将 \u003C项目路径> 替换为实际路径。如果使用 Docker，请确保使用包含 NVIDIA CUDA Deep Neural Network library (cuDNN) 的 runtime 镜像。","https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fissues\u002F17",{"id":153,"question_zh":154,"answer_zh":155,"source_url":156},35148,"如何在转录结果中显示单词级别的置信度（例如通过颜色编码）？","默认的 Whisper 管道不直接显示每个单词的置信度。可以参考 OpenAI Whisper 的相关讨论（https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper\u002Fdiscussions\u002F284）和 Pull Request（https:\u002F\u002Fgithub.com\u002Fopenai\u002Fwhisper\u002Fpull\u002F1119）来实现此功能。这些资源提供了获取置信度分数并将其用于可视化或结合上下文修正文本的方法。","https:\u002F\u002Fgithub.com\u002Falesaccoia\u002FVoiceStreamAI\u002Fissues\u002F2",[]]