[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93286":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},93286,"MeetingCopilot","JWM0203\u002FMeetingCopilot","JWM0203","Real-time stealth meeting\u002Finterview copilot for Windows - streaming ASR (local FunASR \u002F cloud) + first-person teleprompter answers via BYOK LLM, invisible to screen sharing",null,"TypeScript",130,5,3,0,25,57.33,"Other",false,"main",[],"2026-07-22 04:02:08","\u003Cdiv align=\"center\">\n\n# MeetingCopilot\n\n**Real-time meeting & interview copilot for Windows and macOS**\n\nLive transcription of the other side · first-person teleprompter answers · capture protection\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJWM0203\u002FMeetingCopilot\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FJWM0203\u002FMeetingCopilot?style=flat-square&logo=github&color=2a6df4\" alt=\"GitHub stars\">\u003C\u002Fa>\n\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-Apache%202.0%20%2B%20Commons%20Clause-3da639?style=flat-square\" alt=\"license\">\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJWM0203\u002FMeetingCopilot\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitHub-repo-181717?style=flat-square&logo=github\" alt=\"GitHub repo\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgitee.com\u002Fjwm0302\u002FMeetingCopilot\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FGitee-China%20mirror-C71D23?style=flat-square&logo=gitee\" alt=\"Gitee mirror\">\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fwww.xiaohongshu.com\u002Fdiscovery\u002Fitem\u002F6a50df530000000007020f79?source=webshare&xhsshare=pc_web&xsec_token=ABbqtJXWoEQSYl-hNrBxJbXeGEZWoH6YjnAYj97pjKEpo=&xsec_source=pc_share\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F小红书-视频介绍-ff2442?style=flat-square&logo=xiaohongshu&logoColor=white\" alt=\"小红书视频介绍\">\u003C\u002Fa>\n\n[简体中文](README.zh-CN.md) · [Features](#features) · [Quick Start](#quick-start) · [Platform Setup](#platform-setup) · [ASR Backends](#asr-backends) · [License](#license)\n\n\u003C\u002Fdiv>\n\n---\n\n![Live demo: real-time transcription + auto answer](docs\u002Fdemo.gif)\n\n*Real capture, no mockup: the interviewer's voice is transcribed while they are still speaking (left, live gray subtitle), and a read-aloud answer grounded in your resume streams in automatically (right).*\n\n### 🎬 3-minute real-world walkthrough\n\n[![Watch the demo video](docs\u002Fvideo-poster.jpg)](docs\u002FMeetingCopilot-demo.mp4)\n\n*Click to watch (with sound): using an English podcast and a Chinese vlog as the \"other side\" — live transcription of both languages, inline translation, auto answers in Chinese and English, 0.94 s end-to-end latency on screen.*\n\n## Features\n\n- 🎧 **Hears the other side directly — no meeting bot.** Windows captures system loopback audio. macOS uses a selectable audio input (choose a virtual device such as BlackHole for meeting\u002Fsystem audio). An independent microphone channel transcribes your own voice separately.\n- ⚡ **Streaming ASR with 4 switchable backends** — local FunASR streaming (default: free, private; the Python sidecar is auto-spawned and reaped by the app), local Whisper turbo (offline fallback, DirectML GPU), Alibaba Cloud `fun-asr-realtime` (word-by-word cloud streaming), MiMo per-segment. Live gray partial subtitles appear while speech is still in progress.\n- 🌍 **Bilingual (zh \u002F en) out of the box** — the ASR detects Chinese↔English switches automatically mid-meeting, with no settings to touch; one click on the answer-language toggle (`A:EN`) and the teleprompter output flips to English too. Built for English interviews and code-switching conversations.\n- 🌐 **Fully English or Chinese interface** — every label, tooltip, dialog and status message is available in both languages. Switch under *Settings → Appearance → UI Language*; first launch follows your OS language automatically. UI language and answer language are independent, so you can run an English UI while reading Chinese answers, or vice versa.\n- 🧠 **First-person teleprompter answers** — bring your own key, any OpenAI-compatible LLM (DeepSeek recommended). Answers are written to be read aloud verbatim: conclusion first, then 2-3 short points; STAR for behavioral questions; idea → key points → complexity for technical ones. Never invents experience beyond your resume.\n- 📄 **Per-session resume + JD slots** — import `.md\u002F.txt\u002F.docx\u002F.pdf`; parsing is local and deterministic, nothing gets uploaded. Question-type detection (behavioral \u002F technical \u002F smalltalk) appends a zero-latency answering hint.\n- 🔁 **Rolling interview memo** — a structured summary (questions asked \u002F facts you claimed \u002F interviewer focus) updates asynchronously after each answer, so a 60-minute interview stays self-consistent while per-request tokens stay flat.\n- 🚀 **Prefix-cache prewarm** — pressing ▶ fires a 1-token request that pre-builds the LLM provider's KV prefix cache, so the first real answer prefills from cache (verified via DeepSeek `prompt_cache_hit_tokens`); kept warm automatically during capture.\n- 🖼️ **Region-screenshot Q&A** — drag-select any screen region (the selection overlay itself is invisible to recording) and ask a vision model (MiMo \u002F Gemini) about it.\n- 🥷 **Capture protection** — content protection plus a global hide\u002Fshow hotkey. Windows excludes the window from supported captures; macOS cannot guarantee invisibility against modern ScreenCaptureKit clients.\n- 🌗 **Dark \u002F light \u002F follow-system themes**, 3-step answer font size, latency HUD, inline translation, multi-session with fully isolated transcript + chat + material per meeting.\n\n| Dark | Light |\n|---|---|\n| ![dark theme, English UI](docs\u002Fmain-dark-en.png) | ![light theme, English UI](docs\u002Fmain-light-en.png) |\n\n### One click between the English and Chinese UI\n\n![Switching the UI language from Chinese to English](docs\u002Flanguage-switch.gif)\n\n*Settings → Appearance → UI Language: the whole interface — title bar, panels, tooltips, dialogs — flips instantly. The screenshots above show the English UI; the Chinese one is in [README.zh-CN.md](README.zh-CN.md).*\n\n### Bilingual in one session\n\n![Bilingual demo: automatic zh\u002Fen switching](docs\u002Fdemo-bilingual.gif)\n\n*A Chinese question, then an English one — same session, nothing reconfigured. The local ASR picks up the language switch automatically (both at ~1.6 s), and after one click on `答:EN` the answer streams out in English, still grounded in the same resume.*\n\n![bilingual answer](docs\u002Fbilingual.png)\n\n## Requirements\n\n| Component | Requirement |\n|---|---|\n| OS | Windows 10 \u002F 11, or Apple-silicon macOS 14+ |\n| Runtime | Node.js ≥ 20 and npm |\n| LLM | Any OpenAI-compatible API key — DeepSeek recommended (fast, cheap, prefix caching) |\n| Local streaming ASR *(default)* | Python 3.10\u002F3.11 with `funasr` + `torch`; CUDA, Apple MPS, or CPU fallback |\n| Local Whisper *(offline fallback)* | `whisper-large-v3-turbo` ONNX weights; DirectML on Windows, CPU elsewhere |\n| Cloud ASR *(optional)* | Alibaba Cloud DashScope API key, or a MiMo key |\n\n## Quick Start\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FJWM0203\u002FMeetingCopilot.git\ncd MeetingCopilot\nnpm install        # postinstall applies patches\u002F (transformers.js patch — do not remove)\nnpm run build      # builds main + preload + renderer into out\u002F\nnpm start          # cross-platform; Windows can also use start.bat\n```\n\nFirst run:\n\n1. Open **⚙ Settings** → pick the *DeepSeek* preset → paste your API key → save. (The UI follows your OS language; switch it any time under *Appearance → UI Language*.)\n2. Pick an ASR backend (see below). The default *local streaming FunASR* needs a one-time Python env; cloud backends only need a key.\n3. Press **▶ Start** — everything the other side says appears on the left. Click **⚡Ans** on any bubble, or enable **Auto** so questions are answered automatically.\n4. Import your resume \u002F JD via **📄 \u002F 📋** so answers are grounded in your real experience.\n\n> 🇨🇳 If npm \u002F Electron downloads are slow in China, create a `.npmrc` containing\n> `registry=https:\u002F\u002Fregistry.npmmirror.com` and\n> `electron_mirror=https:\u002F\u002Fnpmmirror.com\u002Fmirrors\u002Felectron\u002F`.\n\n## Platform Setup\n\nAudio capture, Python setup, stealth behavior and hotkeys differ per platform —\neach OS has its own guide under its own directory:\n\n| Platform | Audio capture | Stealth | Guide |\n|---|---|---|---|\n| 🪟 **Windows 10 \u002F 11** | system loopback — zero config | window excluded from captures | **[docs\u002Fwindows\u002FSETUP.md](docs\u002Fwindows\u002FSETUP.md)** |\n| 🍎 **macOS 14+ (Apple silicon)** | input device + [BlackHole](https:\u002F\u002Fgithub.com\u002FExistentialAudio\u002FBlackHole) routing | best-effort (ScreenCaptureKit may capture) | **[docs\u002Fmacos\u002FSETUP.md](docs\u002Fmacos\u002FSETUP.md)** |\n\n## ASR Backends\n\n| Backend | Latency | Cost | Privacy | Notes |\n|---|---|---|---|---|\n| **Local FunASR streaming** *(default)* | ~1.2–1.8 s | free | ✅ fully local | `Fun-ASR-Nano` (zh+en, punctuation) or `paraformer` true streaming (zh-only, snappier subtitles) |\n| Local Whisper turbo | ~2 s on supported Windows GPUs | free | ✅ fully local | DirectML on Windows; CPU fallback elsewhere |\n| Aliyun `fun-asr-realtime` | best | pay-per-use | cloud | word-by-word streaming, server-side punctuation |\n| MiMo per-segment | ~1 s\u002Fseg | pay-per-use | cloud | simple per-utterance cloud ASR |\n\n### Local streaming FunASR (default)\n\nOne-time Python environment, then the app **auto-spawns and reaps** the sidecar\n(`tools\u002Ffunasr_stream_server.py`, `ws:\u002F\u002F127.0.0.1:10097`) — selecting the preset\nin Settings is all you do. The selected model downloads automatically from\nModelScope on first run (~880 MB for paraformer, ~1.7 GB for Nano). `--device\nauto` picks CUDA \u002F Apple MPS \u002F CPU with automatic CPU fallback.\n\n- **Windows** (conda env, NVIDIA GPU): see [docs\u002Fwindows\u002FSETUP.md](docs\u002Fwindows\u002FSETUP.md#local-streaming-funasr-default-asr-backend)\n- **macOS** (project `.venv`, Apple MPS): see [docs\u002Fmacos\u002FSETUP.md](docs\u002Fmacos\u002FSETUP.md#local-streaming-funasr-default-asr-backend)\n\nIf your Python lives elsewhere, set `MC_FUNASR_PYTHON` to its full path.\n\n### Local Whisper turbo\n\nPlace [`onnx-community\u002Fwhisper-large-v3-turbo-ONNX`](https:\u002F\u002Fhuggingface.co\u002Fonnx-community\u002Fwhisper-large-v3-turbo-ONNX) under `\u003CuserData>\u002Fmodels\u002Fonnx-community\u002Fwhisper-large-v3-turbo-ONNX\u002F` — `%APPDATA%\u002FMeetingCopilot\u002F` on Windows, `~\u002FLibrary\u002FApplication Support\u002FMeetingCopilot\u002F` on macOS (`encoder_model_fp16.onnx`, `decoder_model_merged_quantized.onnx`, plus config\u002Ftokenizer files). The encoder uses DirectML on Windows and CPU elsewhere.\n\n### Cloud\n\n- **Aliyun DashScope**: endpoint `wss:\u002F\u002Fdashscope.aliyuncs.com\u002Fapi-ws\u002Fv1\u002Finference`, model `fun-asr-realtime` or `paraformer-realtime-v2`.\n- **MiMo**: `https:\u002F\u002Fapi.xiaomimimo.com\u002Fv1`, model `mimo-v2.5-asr`.\n\n![settings panel, English UI](docs\u002Fsettings-en.png)\n\n## Development\n\n```bash\nnpm test            # unit tests (prompt building \u002F VAD \u002F stores \u002F doc parsing \u002F ASR protocol)\nnpm run typecheck   # dual tsconfig (main + renderer)\nnpm run dev         # vite HMR dev mode\nnode tools\u002Frt-asr-smoke.mjs   # streaming-ASR protocol smoke (set MC_RT_URL \u002F MC_RT_KEY)\n```\n\nArchitecture in one line: Electron main process (window \u002F stealth \u002F IPC \u002F LLM routing \u002F ASR host) → ASR engines inside a **utilityProcess** (never the main process — DirectML inference wedges there) → React renderer (transcript pane + answer session pane); all state lives in plain JSON files, never DOM storage.\n\n## Privacy\n\n- API keys are encrypted at rest with Electron `safeStorage` (Windows DPAPI \u002F macOS Keychain) and never reach the renderer process.\n- All data (settings \u002F sessions \u002F materials) lives under Electron's per-user `userData` directory (`%APPDATA%\u002FMeetingCopilot\u002F` on Windows and `~\u002FLibrary\u002FApplication Support\u002FMeetingCopilot\u002F` on macOS). No telemetry, no accounts, no server.\n- With the local ASR backends, audio never leaves your machine; with BYOK LLMs, transcripts go only to the provider you configured.\n\n## Disclaimer\n\nThis tool is intended for personal learning and assistive use. Whether and how real-time assistance may be used in meetings or interviews depends on your local laws and the policies of the other party — you are solely responsible for how you use this software.\n\n## License\n\n**Apache License 2.0 with Commons Clause** — free to use, modify and redistribute for **non-commercial** purposes; selling the software, or services whose value derives substantially from it, is not permitted. See [LICENSE](LICENSE).\n","MeetingCopilot 是一款面向 Windows\u002FmacOS 的实时会议与面试辅助工具，专为提升单向沟通表现设计。核心功能包括：系统级音频捕获（免会议软件介入）、流式语音识别（支持本地 FunASR\u002FWhisper Turbo 与阿里云 ASR）、中英双语自动切换识别与实时字幕、基于用户简历的首人称语音提示答案生成（BYOK LLM 驱动），且全程隐身——屏幕共享时不可见。适用于求职面试、远程答辩、客户洽谈等需即时响应与专业表达的单向互动场景。",2,"2026-07-15 02:30:08","CREATED_QUERY"]