Note: see the link below for the English version of this article.

https://duongnt.com/voice-to-code

voice-to-code

Hầu như tất cả các AI Agent ngày này đều chỉ hỗ trợ input dưới dạng văn bản. Nhưng khi phải tập trung viết code, việc chuyển màn hình sang CLI của AI Agent chỉ để nhập vào một đoạn prompt có thể khiến ta mất tập trung. Thay vào đó, ta có thể dùng giọng nói để diễn đạt ý tưởng một cách tự nhiên. Đây là động lực để tôi và Genki Sugimoto viết ra voice-to-code, một ứng dụng cho phép ta dùng giọng nói để điều khiển bất kỳ một AI Agent nào như Amp hay Claude Code, miễn là nó hỗ trợ CLI.

Các bạn có thể tải ứng dụng này từ đường link dưới đây.

https://github.com/duongntbk/voice-to-code

Bản demo ngắn

Dưới đây là một bản demo ngắn, với thời lượng tầm 1 phút.

Tính năng chính

  • Sử dụng whisper-mic để thực hiện chuyển đổi giọng nói thành văn bản. Model này chạy hoàn toàn trên local mà không cần kết nối mạng (ngoại trừ lần sử dụng đầu tiên vì ta phải tải model về máy), và hoàn toàn miễn phí.
  • Tích hợp với AI Agent thông qua tmux. Phương pháp này cho phép ứng dụng hỗ trợ bất kỳ AI Agent nào có chế độ CLI. Một vài ví dụ thường gặp là Amp và Claude Code.
  • Hỗ trợ cả macOS lẫn Linux. Hiện tại ứng dụng chưa có bản cho Windows.
  • Có thể điều khiển nhiều session AI Agent cùng lúc, cho phép chuyển session mà không cần khởi động lại ứng dụng.

General flow

Lý do lựa chọn whisper-mic và tmux

whisper-mic: whisper-mic được dựa trên model Whisper của OpenAI, nhưng chạy hoàn toàn trên local và hoàn toàn miễn phí. Nó cho phép ta chuyển đổi giọng nói thành văn bản một cách chính xác, mà không phải gửi file tới server bên ngoài. Tất cả dữ liệu giọng nói của ta chỉ được lưu trên máy của ta mà thôi.

tmux: Thay vì phải tìm cách tích hợp với từng AI Agent riêng lẻ, voice-to-code gửi văn bản sau phiên âm tới AI Agent thông qua tmux. Cách này cho phép ta tích hợp với tất cả các AI Agent có hỗ trợ CLI.

Cách dùng

Yêu cầu hệ thống

  • macOS với Homebrew, hoặc Linux
  • tmux, portaudio, và ffmpeg
  • Python 3.x
  • AI Agent có hỗ trợ CLI

Khởi động ứng dụng voice-to-code

Các bạn có thể tải về ứng dụng phù hợp từ đường link dưới đây.

Hoặc các bạn có thể clone repo và tự chạy ứng dụng từ source code.

git clone git@github.com:duongntbk/voice-to-code.git

# Inside the repo
python -m venv venv
./venv/bin/pip install -r requirements.txt
source venv/bin/activate && python main.py

Ghi chú: phiên bản cho Linux ở trên sử dụng PyTorch-CPU. Nếu các bạn muốn sử dụng GPU thì cần phải tự chạy ứng dụng từ source code.

Ứng dụng sẽ trông như thế này.

App layout

Còn trang thiết lập trông thế này. Các bạn có thể đọc file README để biết thêm chi tiết về từng thiết lập.

Settings page

Dùng giọng nói để điều khiển nhiều AI Agent cùng lúc

Chạy mỗi AI Agent trong một session tmux, nhớ đặt tên cho từng session đó.

tmux new-session -s <your session name>
amp

# Or to resume a thread
amp threads continue <thread ID>

Ứng dụng dùng tên mặc định cho session tmux là ai-voice-input, nhưng ta có thể thêm hoặc bớt session tuỳ thích.

Add new session name

Sau khi thêm hoặc bớt session, ta có thể dùng mũi tên này để chuyển giữa các session. Ghi chú: không cần khởi động lại ứng dụng. Khi ta nói, session nào đang được lựa chọn thì văn bản sau phiên âm sẽ được gửi tới session đó.

Switch between sessions

Gửi input bằng giọng nói tới AI Agent

Trong ví dụ dưới đây, tôi dùng giọng nói để điều khiển AI Agent cập nhật trang Help của ứng dụng và thay đổi dòng chữ Report issues thành Report all issues. Kết quả phiên âm không chính xác 100%, nhưng AI Agent vẫn hiểu được ý. Ta cũng có thể thấy là văn bản sau phiên âm được gửi tới session tmux với tên là ai-voice-input.

First example

First example result

Sau đó, tôi chuyển sang session ai-voice-input-2 và bảo AI Agent kiểm tra lỗi chính tả trong file README. Ta có thể thấy là văn bản sau phiên âm được gửi tới ai-voice-input-2, và một agent khác sẽ thực hiện yêu cầu này.

Second example

Second example result

AI Agent thứ hai báo cáo lại là có một số điểm cần sửa trong file README, và hỏi xem tôi có muốn sửa không. Tôi trả lời lại là có. Tất cả đều xảy ra trong cùng một session.

Third example

Third example result

Kết thúc

Tôi sử dụng voice-to-code trong công việc hàng ngày, và tôi thấy rằng nó rất có ích khi tôi cần phải gửi nhiều câu hỏi liên tiếp tới AI Agent. Điều này đặc biệt hữu ích khi tôi muốn tranh luận xem một ý tưởng nào đó là khả thi hay không.

Hạn chế hiện tại:

  • Độ chính xác khi chuyển đổi giọng nói sang văn bản bị ảnh hưởng nhiều bởi khả năng phát âm.
  • Ứng dụng chưa hỗ trợ Windows.

Nếu các bạn muốn đóng góp ý code (đặc biệt là hỗ trợ cho Windows), xin hãy mở PR trong repo trên Github. Mong là ứng dụng này cũng sẽ có ích cho các bạn.

A software developer from Vietnam and is currently living in Japan.

One Thought on “Voice-to-code, điều khiển AI bằng giọng nói”

Leave a Reply