Ghi chú cuộc họp & đọc-chép giọng nói — chạy cục bộ trên máy bạn.
100% Local (nghe · chữ · dịch · tách người · tóm tắt Qwen)RTX 4070 · WindowsCloud chỉ khi bạn tự đổi provider
1Giới thiệu
AI Record là ứng dụng desktop cục bộ: khi bạn họp online (Teams/Zoom/Meet…) hoặc chỉ muốn tự nói,
nó thu âm thanh của máy, chuyển thành văn bản thời gian thực, dịch câu tiếng nước ngoài sang tiếng Việt,
tách người nói, và (khi bạn muốn) Tóm tắt / Phân tích bằng AI — mặc định chạy trên
model Qwen 2.5-7B local (qua Ollama), riêng tư và offline.
Hai nút thu:Record (ghi & lưu như thường) và Listening — chế độ tạm thời, KHÔNG lưu: vẫn nghe → chữ → dịch → Tóm tắt/Phân tích được, nhưng không ghi gì xuống đĩa, dùng để biến giọng nói thành chữ rồi copy đi nơi khác.
Hai chế độ nguồn:Meeting (thu cả loa + mic) và Dictation (chỉ mic — đọc-chép ý tưởng dài).
Ba tab AI:Transcript (luôn chạy realtime), Summary (gom nhóm ý, giữ nguyên cách diễn đạt ~ định dạng lại), Analyze (phân tích tổng quan + câu hỏi/rủi ro cốt lõi). Summary/Analyze chạy khi bạn bấm vào tab — lần đầu nạp model (~10–20 s), sau đó nhanh; transcript vẫn cập nhật ngầm.
Chọn & sao chép: chữ trong transcript bôi đen được (highlight rồi Ctrl+C), có nút Copy (chỉ chữ / kèm tên người); nút “Văn bản ⇄ Hội thoại” đổi giữa dạng hội thoại (dòng theo người nói) và dạng văn bản liền một khối.
Riêng tư: âm thanh không bao giờ rời khỏi máy. Nghe/chữ/dịch/tách người = local; với Qwen mặc định thì cả Tóm tắt/Phân tích cũng local.
Đầu ra: mặc định chỉ lưu bản .md dễ đọc; tuỳ chọn kèm .txt, .mp3 (audio) và bản tóm tắt AI — chọn qua nút lưu (biểu tượng save) trên thanh công cụ hoặc trong Settings.
2Cài đặt & Khởi chạy
Cài một lần
git clone https://github.com/ducnguyen221/ai-record
cd ai-record
powershell -ExecutionPolicy Bypass -File setup.ps1 # venv + torch CUDA + thư viện
powershell -ExecutionPolicy Bypass -File scripts\setup-ollama.ps1 # tuỳ chọn: Qwen local cho tab Summary/Analyze
python -m ai_record # hoặc double-click shortcut trên Desktop
setup.ps1 tạo môi trường .venv + cài torch CUDA + toàn bộ thư viện. Lần đầu tải ~4–6 GB model.
Bước setup-ollama.ps1 là tuỳ chọn nhưng cần cho tab Summary/Analyze ở provider mặc định (Qwen local): nó cài Ollama (winget) nếu thiếu + pull qwen2.5:7b. Bỏ qua nếu bạn chỉ dùng provider cloud (Claude/Codex/Gemini) trong Settings.
Mỗi lần dùng
Double-click nút “AI Record” trên Desktop (chạy im lặng, không cửa sổ terminal), hoặc
Chạy run.ps1 (bản có console để xem log khi cần).
Đóng cửa sổ hoặc bấm ✕ Thoát = dừng sạch, phiên đang ghi được lưu lại.
3Hướng dẫn sử dụng
Thanh nhỏ (compact) Hàng nút biểu tượng: Record + toggle Listening (không lưu), 🎙 dropdown mic + 🔊 dropdown loa (chọn đúng thiết bị vào/ra — chấm xanh khi đang hoạt động), 🌐 Dịch, 📋 Copy, 💾 định dạng đầu ra, 📁 mở thư mục, ⚙ Settings, ⤢ phóng to, ✕ đóng. Độ rộng mặc định vừa đủ để mọi icon hiện hết. Phía dưới: các dòng transcript gần nhất, full chiều ngang.
Record vs Listening (không lưu) Record = ghi & lưu như thường. Listening = chế độ tạm thời: vẫn nghe/chữ/dịch và chạy được Summary/Analyze, nhưng không tạo thư mục trong records\, không lưu transcript/audio/summary — dùng để biến giọng nói thành chữ rồi copy đi. Khi bật, app ẩn nút mở thư mục + chọn định dạng lưu và hiện chỉ báo “Listening — không lưu”; Summary chạy trên transcript trong bộ nhớ.
Cửa sổ không viền, kéo & co giãn Cửa sổ frameless: kéo bất kỳ đâu trên thanh header trên cùng để di chuyển (chạm vào một nút thì vẫn bấm được); kéo cạnh/góc bất kỳ để đổi kích thước — càng cao càng hiện nhiều dòng transcript. Bấm vào logo để mở website.
Chọn nguồn khi Start Both (họp) · Mic only (đọc-chép) · System only (chỉ tiếng loa). Nút camera (mờ) là chỗ dành sẵn cho quay màn hình/camera sau này.
Dịch (From→To) Bấm biểu tượng 🌐 mở popover chọn ngôn ngữ nguồn → đích (mặc định English→Vietnamese) → câu tiếng nước ngoài hiện thêm bản dịch ngay dưới.
Tách người nói Mic = “You”; phía loa tự gán “Speaker 1/2…”, sửa tên được. Nút Re-diarize chạy chính xác hơn sau họp (cần HF token).
Ba tab: Transcript · Summary · Analyze Phóng to (⤢) để mở khung đầy đủ. Transcript luôn realtime. Summary = AI gom nhóm ý, giữ nguyên cách diễn đạt (định dạng lại). Analyze = phân tích tổng quan + câu hỏi/rủi ro. Bấm tab để chạy on-demand: lần đầu nạp model (~10–20 s), sau đó nhanh.
Đọc, chọn & sao chép Chữ trong transcript bôi đen được — highlight vài dòng rồi Ctrl+C để copy đi nơi khác. Toggle “Văn bản ⇄ Hội thoại” đổi giữa dạng hội thoại (dòng theo người nói) và dạng văn bản liền một khối. Nút Copy (ở thanh công cụ của cả bản compact lẫn header phóng to) có menu chỉ chữ / kèm tên người; ngoài ra vẫn tải .md/.txt/combined về máy.
Summary gom nhóm ý và giữ nguyên cách diễn đạt (định dạng lại — có kiểm tra tự động, sai thì tự dùng bản định dạng máy để không đổi nội dung). Analyze đưa ra phân tích tổng quan cùng các câu hỏi/rủi ro cốt lõi. Cả hai mặc định chạy trên Qwen local; đổi provider (và chỉnh prompt) trong Settings.
Settings đáng chú ý
Kết nối AI (đăng nhập theo máy) Hiện trạng thái kết nối từng provider — Claude CLI / Codex CLI / Gemini / Ollama — kèm nút Đăng nhập (mở luồng đăng nhập riêng của CLI trên chính máy này) và Kiểm tra. App không nhúng, không lưu, không đọc, không chia sẻ thông tin đăng nhập: mỗi máy tự kết nối bằng tài khoản của nó (app chỉ gọi CLI claude/codex cục bộ vốn đã giữ đăng nhập riêng; Gemini dùng key trong keychain của OS; Ollama offline). Cài app sang máy khác không rò rỉ gì từ máy này.
Prompt AI (Summary / Analyze) Hai ô văn bản chỉnh được — chỉ dẫn định dạng lại (Summary) và phân tích (Analyze) — đã điền sẵn mặc định mạnh, mỗi ô có nút Khôi phục mặc định. Tự tinh chỉnh cách AI tóm tắt/phân tích cho hợp việc của bạn.
Whisper model / Compute type Để nguyên mặc định, hai dropdown hiện “Auto — theo preset (large-v3 / int8_float16)” — app dùng preset theo GPU (không phải model “tiny”). Chỉ đổi khi bạn thật sự muốn ép model/compute khác.
4Cơ chế hoạt động
Một tiến trình Python chạy pipeline sản-xuất-tiêu-thụ; STT được ưu tiên tuyệt đối, phần dịch/tách người chạy sau và “vá” vào câu đã hiện.
1 · Thu
WASAPI loopback (tiếng loa = người khác) + micro (bạn) → chuyển 16 kHz mono. Không dùng API ghi của Teams/Zoom nên nền tảng không hiện “đang ghi”.
2 · VAD
Silero VAD cắt luồng thành từng câu theo khoảng lặng, bỏ im lặng.
3 · STT
faster-whisper large-v3 (GPU) chuyển mỗi câu thành chữ + tự nhận ngôn ngữ. Hiện lên UI & lưu ngay.
4 · Vá
Chạy nền, ưu tiên thấp: NLLB dịch (nếu bật) + Resemblyzer gán người nói → gửi “patch” cập nhật câu đã hiện.
5 · Lưu
Ghi transcript.jsonl + transcript.md + WAV (chống mất khi treo máy), autosave từng câu. Ở chế độ Listening thì bỏ qua toàn bộ bước này — mọi thứ chỉ nằm trong bộ nhớ, không chạm đĩa.
Sau họp
Tuỳ chọn: pyannote tách người chính xác · tab Summary/Analyze (mặc định Qwen local) · Export · dọn audio theo cấu hình.
5Model & độ nặng khi chạy
Chức năng
Model
Chạy ở
Đĩa
RAM/VRAM
Nghe→chữ (STT)
faster-whisper large-v3 (int8_float16)
GPU
~1.5 GB
~2–3 GB VRAM
Phát hiện tiếng nói
Silero VAD
CPU
vài MB
không đáng kể
Dịch
NLLB-200 distilled-600M (int8)
CPU
~1.2 GB
~1–2 GB RAM
Tách người (realtime)
Resemblyzer
CPU
~15 MB
nhẹ
Tách người (chính xác)
pyannote 3.1
GPU (khi bấm)
~100 MB
chạy sau họp
Tóm tắt / Phân tích AI
Qwen2.5-7B local qua Ollama (mặc định) / Claude CLI / Codex / Gemini
local/☁️
—
xem mục 8
Tiêu thụ khi họp thực tế:
GPU: ~2–3 GB VRAM cố định (còn dư ~9 GB); tải bùng lên mỗi khi kết thúc 1 câu rồi hạ.
CPU: trung bình (dịch + embedding + VAD), nhích theo từng câu.
RAM: ~2–4 GB. Đĩa: WAV ~2 MB/phút/nguồn khi thu (mặc định xoá khi xong, chỉ giữ .md).
Lúc im lặng: gần như 0 — VAD chặn, không transcribe khoảng lặng.
6Chi phí: Local vs Cloud
Thu · STT · Dịch · Tách người = 100% LOCAL, MIỄN PHÍ, offline được. Âm thanh KHÔNG rời máy.
Tab Summary/Analyze mặc định cũng là local; chỉ khi bạn tự đổi sang provider cloud thì văn bản mới rời máy:
Provider
Gửi gì ra ngoài
Chi phí
Qwen local qua Ollama (mặc định)
Không gì cả
100% local, miễn phí, offline
Claude CLI
Văn bản transcript (không phải audio) → Anthropic
Dùng gói Claude Code sẵn có (tốn quota, không phí lẻ)
Codex CLI
Văn bản → OpenAI
Theo gói Codex
Gemini
Văn bản → Google
Cần API key, có thể tính phí
→ Giữ mặc định Qwen local (hoặc không bấm Summary/Analyze), toàn bộ ứng dụng là local tuyệt đối.
7Rủi ro & an toàn
⚖️ Pháp lý (quan trọng nhất): ghi người khác khi họ không biết có thể vi phạm luật (nhiều nơi cần sự đồng ý của tất cả). App không hiện “đang ghi” cho nền tảng → bạn tự chịu trách nhiệm xin phép/khai báo khi luật yêu cầu.
🔓 Dữ liệu lưu chưa mã hoá: transcript (và audio nếu giữ) nằm plaintext trong thư mục lưu — ai truy cập được máy là đọc được. Dùng nút Xoá / cấu hình retention để dọn.
☁️ Rò rỉ khi dùng provider cloud: mặc định là Qwen local nên không gửi gì. Chỉ khi bạn tự đổi Summary/Analyze sang Claude/Codex/Gemini thì transcript mới được gửi tới Anthropic/OpenAI/Google. Transcript được xử lý như “dữ liệu không tin cậy” (chống việc ai đó nói câu-lệnh trong họp), nhưng vẫn là dữ liệu rời máy — cân nhắc với họp nhạy cảm.
🔑 Secret an toàn: HF token / Gemini key lưu trong Windows Credential Manager (không plaintext).
🔐 Đăng nhập AI theo máy: app không nhúng thông tin đăng nhập nào và không lưu/đọc/chia sẻ chúng. Claude/Codex chạy qua CLI cục bộ (mỗi CLI tự giữ đăng nhập của nó qua Settings → Kết nối AI), Gemini dùng key trong keychain OS, Ollama offline — cài app sang máy khác không rò rỉ gì từ máy này.
🚫 Không lưu khi cần: chế độ Listening không ghi bất cứ gì xuống đĩa — không có gì “ở lại” để lo rò rỉ.
🌐 Server nội bộ: chỉ 127.0.0.1, có token per-launch + kiểm Origin → tiến trình lạ khó chạm.
✅ Không có: driver kernel, quyền admin, telemetry, “gọi về nhà”. Là app Python userland thuần.
8So sánh model tóm tắt local & tư vấn
Lưu ýOllama là “trình chạy”, không phải model. Chất lượng do model quyết định. Bảng dưới cho RTX 4070 12 GB, transcript tiếng Việt xen Nhật/Anh:
Model
VRAM (Q4)
Đa ngữ VN/Nhật
Tốc độ 4070
Nhận xét
Qwen2.5-7B-Instruct ⭐
~5 GB
Tốt nhất
Nhanh (~40–60 tok/s)
KHUYẾN NGHỊ — cân bằng nhất
Qwen2.5-14B-Instruct
~9 GB
Xuất sắc
Vừa (~20–30)
Chất lượng cao, chạy sau họp
SeaLLMs-v3-7B / Vistral-7B
~5 GB
Chuyên tiếng Việt
Nhanh
Nếu gần như chỉ tiếng Việt
Llama 3.1/3.3-8B
~5 GB
Khá (VN yếu hơn)
Nhanh
Phổ biến nhưng không hợp VN bằng Qwen
Gemma 2-9B
~6 GB
Khá
Vừa
Ổn
Phi-4-14B
~9 GB
VN yếu
Vừa
Lý luận mạnh nhưng không hợp nội dung Việt
Tư vấn: dùng Qwen2.5-7B-Instruct — đa ngữ tốt nhất cho VN+Nhật, chỉ ~5 GB VRAM (chạy chung Whisper vẫn dư), nhanh, 100% local miễn phí.
Muốn chất lượng cao nhất offline: Qwen2.5-14B (chạy sau họp). So với Claude/Gemini cloud: cloud mượt hơn chút nhưng gửi text ra ngoài + tốn quota; Qwen local đủ tốt cho biên bản họp và riêng tư tuyệt đối.
Cài Qwen local (provider mặc định)
Qwen là provider mặc định — chỉ cần cài Ollama + model một lần:
powershell -ExecutionPolicy Bypass -File scripts\setup-ollama.ps1 # cài Ollama + pull qwen2.5:7b
# đã là mặc định; muốn đổi model: AI Record → Settings → Summarization → Ollama model
# muốn dùng cloud: Settings → provider = Claude CLI / Codex CLI / Gemini
Mở rộng model & cài trên máy khác
App có sẵn catalog model (ai_record/summarizer_models.json, mặc định qwen2.5:7b) + công cụ để chọn/mở rộng/cập nhật:
Chọn trong app: Settings → Summarization → dropdown Ollama model (hiện ✓ model đã tải, đánh dấu mặc định) + ô Custom… cho tag bất kỳ. Máy khác chỉ cần chọn cỡ hợp GPU của nó, default vẫn Qwen.
Cài / mở rộng (máy bất kỳ):
.\scripts\setup-ollama.ps1 # cài Ollama (winget) nếu thiếu + pull qwen2.5:7b
.\scripts\setup-ollama.ps1 -Model qwen2.5:14b # hoặc tag khác
Research cập nhật model:python scripts\research-models.py — liệt kê model đã cài, dò registry Ollama tìm tag mới theo từng dòng, gợi ý lệnh ollama pull (chạy được cả khi offline). Hoặc nhờ AI Record agent research bằng web để cập nhật catalog theo nhu cầu.
Nút 📁 trong app mở thẳng thư mục này. Log chạy: %LOCALAPPDATA%\ai-record\ai-record.log. Ở chế độ Listening không có thư mục phiên nào được tạo — không transcript, không audio, không summary.