- Handy là ứng dụng desktop chuyển giọng nói thành văn bản miễn phí, mã nguồn mở hoạt động hoàn toàn ngoại tuyến, được thiết kế đặt quyền riêng tư làm trung tâm
- Được xây dựng trên Tauri (Rust + React/TypeScript), với cơ chế nhấn phím tắt để nói và giọng nói sẽ được nhập trực tiếp vào trường văn bản
- Hỗ trợ các mô hình Whisper và Parakeet V3, thực hiện nhận diện giọng nói cục bộ bằng tăng tốc GPU hoặc dựa trên CPU
- Hoạt động trên Windows, macOS và Linux, được phát triển với cấu trúc chú trọng khả năng mở rộng và dễ fork, nhằm khuyến khích đóng góp từ nhà phát triển
- Là công cụ nhập liệu bằng giọng nói đặt quyền riêng tư làm trung tâm, xử lý cục bộ không cần truyền lên đám mây, có tính tiếp cận và khả năng tùy biến cao
Tổng quan
- Handy là ứng dụng nhận diện giọng nói miễn phí, mã nguồn mở, có thể mở rộng, hoạt động hoàn toàn ngoại tuyến mà không cần kết nối Internet
- Dựa trên framework Tauri, kết hợp backend Rust và frontend React/TypeScript
- Người dùng nhấn phím tắt để nói, và khi thả tay ra, mô hình Whisper hoặc Parakeet V3 sẽ chuyển giọng nói thành văn bản rồi dán vào ứng dụng hiện tại
- Toàn bộ dữ liệu giọng nói được xử lý cục bộ nên không có nguy cơ rò rỉ thông tin cá nhân
Triết lý của Handy
- Miễn phí: công cụ hỗ trợ tiếp cận nên dành cho mọi người
- Mã nguồn mở: ai cũng có thể mở rộng và cải thiện tính năng
- Đảm bảo quyền riêng tư: dữ liệu giọng nói không được gửi lên đám mây
- Đơn giản: tập trung vào một mục tiêu duy nhất là chuyển giọng nói thành văn bản
- Mục tiêu không phải là tạo ra ứng dụng “hoàn hảo nhất”, mà là ứng dụng “dễ fork nhất”
Cách hoạt động
- Người dùng có thể bắt đầu/dừng ghi âm bằng phím tắt hoặc dùng chế độ push-to-talk
- Dùng Silero VAD để lọc khoảng lặng, rồi chuyển giọng nói bằng mô hình Whisper hoặc Parakeet V3
- Mô hình Whisper: cung cấp các phiên bản Small, Medium, Turbo, Large, hỗ trợ tăng tốc GPU
- Parakeet V3: tối ưu cho CPU, bao gồm tính năng tự động nhận diện ngôn ngữ
- Văn bản sau khi chuyển đổi sẽ được tự động chèn vào ô nhập của ứng dụng đang sử dụng
- Hỗ trợ đầy đủ Windows, macOS, Linux
Kiến trúc
- Frontend: React + TypeScript + Tailwind CSS
- Backend: dựa trên Rust, phụ trách xử lý âm thanh và suy luận machine learning
- Các thư viện cốt lõi
whisper-rs: nhận diện giọng nói cục bộ với mô hình Whisper
transcription-rs: nhận diện bằng CPU với mô hình Parakeet
cpal: vào/ra âm thanh
vad-rs: phát hiện hoạt động giọng nói
rdev: xử lý phím tắt toàn cục và sự kiện hệ thống
rubato: lấy mẫu lại âm thanh
- Chế độ debug: có thể truy cập bằng
Cmd+Shift+D (macOS) hoặc Ctrl+Shift+D (Windows/Linux)
Vấn đề đã biết và hạn chế
- Lỗi crash của mô hình Whisper: tồn tại vấn đề mô hình bị crash trong một số môi trường Windows/Linux
- Hỗ trợ Wayland hạn chế: trong môi trường Linux Wayland cần cài
wtype hoặc dotool
- Công cụ nhập văn bản
- X11:
xdotool
- Wayland:
wtype hoặc dotool
- Nếu chưa cài các công cụ này, sẽ thay bằng
enigo nhưng khả năng tương thích bị hạn chế
- Mặc định tắt overlay trên Linux: mặc định bị vô hiệu hóa để tránh xung đột focus
Yêu cầu hệ thống
- Dành cho mô hình Whisper
- macOS: máy Mac dòng M hoặc Intel Mac
- Windows/Linux: GPU Intel, AMD, NVIDIA (khuyến nghị Ubuntu 22.04/24.04)
- Dành cho mô hình Parakeet V3
- Chỉ dùng CPU, khuyến nghị Intel Skylake (thế hệ 6) trở lên
- Trên phần cứng tầm trung, tốc độ nhanh hơn thời gian thực khoảng 5 lần
- Bao gồm tính năng tự động nhận diện ngôn ngữ
Lộ trình phát triển
- Các tính năng đang thực hiện
- Bổ sung tệp log debug
- Cải thiện phím tắt trên macOS (hỗ trợ phím Globe, viết lại xử lý phím tắt toàn cục)
- Tính năng phân tích tùy chọn: thu thập dữ liệu sử dụng ẩn danh, dựa trên sự đồng ý rõ ràng
- Refactor hệ thống cài đặt và cải thiện lớp trừu tượng
- Sắp xếp lại cấu trúc lệnh Tauri và nâng cao độ an toàn kiểu dữ liệu
Khắc phục sự cố và cài đặt mô hình thủ công
- Trong môi trường bị hạn chế mạng, có thể tải xuống và cài đặt mô hình thủ công
- Tạo thư mục
models trong thư mục dữ liệu ứng dụng rồi đặt các tệp mô hình vào đó
- Mô hình Whisper: sao chép trực tiếp tệp
.bin
- Mô hình Parakeet: giải nén
.tar.gz rồi giữ nguyên tên thư mục được chỉ định
- Sau khi cài đặt, khởi động lại ứng dụng để mô hình được nhận diện tự động
Cách đóng góp
- Kiểm tra issue trên GitHub rồi fork và tạo branch
- Kiểm thử đầy đủ trên nền tảng mục tiêu trước khi gửi Pull Request
- Có thể tham gia cộng đồng qua email (contact@handy.computer) hoặc Discord
- Mục tiêu là cung cấp nền tảng để cộng đồng phát triển tiếp thông qua codebase đơn giản và có cấu trúc tốt
Dự án liên quan và giấy phép
- Handy CLI: phiên bản dòng lệnh dựa trên Python
- handy.computer: website chính thức và bản demo
- Phát hành theo giấy phép MIT
- Dựa trên các dự án mã nguồn mở như Whisper (OpenAI), Silero, Tauri
Trích dẫn
- “Handy có thể khép lại hành trình tìm kiếm công cụ nhận diện giọng nói của bạn không phải vì nó hoàn hảo, mà vì bạn có thể khiến nó trở nên hoàn hảo.”
1 bình luận
Ý kiến trên Hacker News
Khi dùng cùng Parakeet V3 thì phản hồi gần như tức thì và độ chính xác cũng đủ tốt
Tôi thường nói chuyện với một CLI agent rồi yêu cầu “hãy nói cho tôi biết bạn đã hiểu lời tôi như thế nào”
Cách này vừa giúp xác nhận mức độ hiểu, vừa đóng vai trò như một dạng bản đặc tả
Gần đây tôi cũng thử kết hợp Handy + Parakeet v3, và nó hoạt động rất tốt nên tôi định dùng bộ này trong vài ngày tới
Nếu bật UI “debug” bằng Cmd‑Shift‑D, bạn còn có thể thấy các tùy chọn bổ sung như hậu xử lý (post‑processing) hoặc thêm khoảng trắng
Tôi muốn đọc bằng giọng nói các lệnh như “cd ~/projects” hay “git push --force”
Vì vậy các ứng dụng TTS như SuperWhisper đã giúp ích rất nhiều
Tôi hy vọng Handy cũng mang lại trải nghiệm tương tự
Nhưng để tiến lên bước tiếp theo, tôi nghĩ cần vượt qua mức chỉ chuyển giọng nói thành văn bản và có thêm mở rộng dựa trên ngữ cảnh
Ví dụ, khi đọc mã trong IDE thì hệ thống có thể tạo ra mã thật sự
Cuối cùng thì đó là hướng kết hợp TTS với việc sử dụng máy tính
ultraplanNó ghi lại giọng nói bằng Whisper cục bộ và lưu theo dạng timeline các ảnh chụp màn hình, nội dung clipboard, v.v.
Sau đó các agent như Claude Code sẽ đọc timeline này và tiếp tục công việc
Bạn cũng có thể điều khiển hands-free, chẳng hạn nói “marco” để chụp màn hình
Nếu ai muốn, tôi có thể sắp xếp lại rồi đưa nó lên GitHub
Cũng có các thử nghiệm dùng mô hình cục bộ nhỏ (moondream, qwen, v.v.) để hiểu ngữ cảnh trên máy tính
Trước đây khi tôi bị gãy ngón tay, tôi đã ánh xạ các phím tắt vào Handy để tạo ra kiểu điều khiển ngữ cảnh đơn giản
Ví dụ có trường hợp từ năm 2013 như Using Voice to Code Faster than Keyboard
Một nghiên cứu gần đây là bài báo này
Nếu đưa đầu ra STT vào LLM, hệ thống có thể hiểu ý định và tạo ra tập lệnh lệnh
Trên CLI thì việc chuyển trực tiếp lệnh thoại thành lệnh shell khá dễ
Trên GUI thì phức tạp hơn một chút vì cần biết trạng thái màn hình
MacWhisper trên macOS có thể gửi văn bản chép lại tới endpoint tương thích OpenAI
Superwhisper là ứng dụng trả phí, có tùy chọn mua trọn đời và khá nhiều tính năng. Vì do một lập trình viên duy trì nên đôi lúc vẫn có lỗi
Hex là lựa chọn miễn phí nhẹ và gọn nhất
Fluid Voice có một tính năng độc đáo là hiển thị văn bản theo thời gian thực trong lúc bạn nói
Handy có giao diện màu hồng dễ thương và tôi rất thích cửa sổ lịch sử. Thiết lập khôi phục clipboard của nó hơi khác thường một chút
Khi cài luân phiên nhiều ứng dụng thì tôi gặp một vài xung đột
Nhờ Nvidia mã nguồn mở Parakeet, tất cả đều chạy rất nhanh
Tôi thích tính năng stream chép lời theo thời gian thực. Chất lượng thấp nhưng hiện ra ngay, rồi sau đó được thay bằng bản chất lượng cao sẽ là tốt nhất
Phần lớn đều là trả phí hoặc thuê bao, đến mức tôi từng nghĩ sẽ tự làm một cái, nhưng Handy thì nhanh, đơn giản và không gây phiền nhiễu
Hơn nữa nó còn được cập nhật đều đặn nên tôi rất hài lòng
Tính năng hậu xử lý (post‑processing) cũng có vẻ rất hay
Việc thêm từ thủ công cũng tốt, nhưng nếu có thể đánh dấu những từ không chắc chắn thì sẽ dễ bổ sung hơn
Phím tắt mặc định là Ctrl+Space, và ngay khi bạn nhả phím ra thì bản chép lời sẽ được chèn vào
Nếu lúc đó Ctrl vẫn đang bị giữ, văn bản được chép ra sẽ bị xử lý như ký tự Ctrl
Môi trường thử nghiệm là Linux x64, X11, Emacs
Tôi cũng đã dùng Monologue, Superwhisper và Aqua, nhưng Handy chạy cục bộ và không có phí thuê bao
Rất đáng khuyến nghị
Mô tả thì có vẻ khá giống nhau. Handy phát hành lần đầu vào tháng 6/2025, còn OpenWhispr ra mắt sau đó một tháng
Handy có 11k sao trên GitHub, còn OpenWhispr khoảng 730
Khi đó OpenWhispr chưa có mô hình Parakeet và giao diện cũng chưa mượt
Nhờ UI tối giản, Handy rất trực quan khi sử dụng
Nó thiếu một số tính năng nâng cao, nhưng tôi đã dùng được hai tháng và không có ý định tìm ứng dụng STT khác
Phần thiết lập cũng đủ đơn giản để dùng thoải mái
Tôi từng thắc mắc tùy chọn “discharging the model” là gì, nhưng có vẻ nó không ảnh hưởng đến RAM hay CPU
Khi discharge thì nó sẽ bị gỡ khỏi bộ nhớ, nên tốc độ khởi động sẽ chậm hơn