OpenClaw Voice Mode: nói chuyện với agent qua iPhone/Android (setup + wake word)

Chia sẻ bài viết

Mục lục
Minh hoạ OpenClaw Voice Mode nói chuyện qua iPhone Android

Voice mode là một trong những thứ làm OpenClaw khác biệt thật sự so với Open WebUI hay AnythingLLM. Bạn nói "hey claw, hôm nay có cuộc họp nào", agent trả lời bằng giọng qua loa iPhone, và đó không phải shortcut Siri kết hợp ChatGPT - đó là agent của bạn trên VPS, đọc lịch của bạn, dùng skill của bạn. Bài này mình đi từ cấu hình VPS, app iOS/Android, wake word, talk mode, đến latency thực tế khi gateway đặt ở datacenter Việt Nam và một số cảnh báo privacy mà tài liệu chính thức nói khá ngắn gọn.

Voice mode OpenClaw làm gì và không làm gì

Cần phân biệt rõ ngay từ đầu. Voice mode trong OpenClaw không phải Siri replacement. Nó gồm hai cơ chế:

  • Voice wake (wake word): app điện thoại lắng nghe mic local, dò pattern wake word (mặc định là "hey claw") rồi mới bắt đầu record câu lệnh và gửi lên gateway.
  • Talk mode (push-to-talk hoặc duplex): bạn giữ nút mic hoặc bật toggle, app stream audio realtime lên gateway, gateway STT (speech-to-text) -> LLM -> TTS (text-to-speech) trả về.

Wake word detection chạy local trên thiết bị - không có audio nào rời máy bạn cho tới khi wake word fire. Đây là điểm cộng lớn về privacy, khác với một số trợ lý cloud stream mic 24/7. Đa số setup OpenClaw dùng Porcupine hoặc OpenWakeWord cho khâu này, model nhỏ chỉ vài MB.

Khác biệt giữa macOS, iOS và Android

Tài liệu OpenClaw có một dòng nhỏ dễ bỏ qua: macOS và iOS có toggle Voice Wake local; Android hiện tại tắt Voice Wake mặc định và chỉ có manual mic flow trong tab Voice. Lý do là Android background mic restriction thay đổi theo từng OEM (Xiaomi MIUI và Samsung One UI rất hung dữ), nên team OpenClaw chưa đảm bảo wake word chạy ổn 24/7 khi app bị kill. Trên iOS, Apple cũng có thể suspend background audio sau vài phút, nên wake word được đánh dấu best-effort khi app ở background.

Platform Wake word Talk mode Background
macOS Tốt, chạy 24/7 Tốt Tốt, native daemon
iOS Tốt khi foreground Tốt Best-effort (Apple suspend)
Android Tắt mặc định, manual Tốt Phụ thuộc OEM
💡 Mẹo: Trên Android nếu muốn wake word work ổn, vào Settings, bỏ OpenClaw khỏi battery optimization, và bật "Allow background activity". Xiaomi cần thêm bật Autostart.

Setup phía VPS: chọn STT và TTS

Gateway OpenClaw cần biết dùng engine STT/TTS gì. Có ba lựa chọn phổ biến:

  1. Whisper.cpp (local trên VPS): chạy ngay trong gateway, không cần API key, model small-v3 nặng ~500MB, tốc độ khoảng 0.3x realtime trên CPU 4 core. Privacy tốt nhất.
  2. OpenAI Whisper API (cloud): nhanh hơn nhiều, ~$0.006/phút. Bị giới hạn nếu kết nối quốc tế chậm.
  3. Deepgram hoặc AssemblyAI: nhanh, hỗ trợ tiếng Việt khá tốt, free tier vài giờ/tháng.

Cấu hình trong ~/.openclaw/voice.json:

{
  "stt": {
    "provider": "whisper-local",
    "model": "small-v3",
    "language": "vi",
    "modelPath": "~/.openclaw/models/ggml-small.bin"
  },
  "tts": {
    "provider": "openai",
    "voice": "nova",
    "format": "mp3",
    "speed": 1.05
  },
  "wake": {
    "enabled": true,
    "words": ["hey claw", "nay clo"]
  }
}

Mình hay khuyên: STT chạy local Whisper cho privacy (mic của bạn), TTS dùng OpenAI hoặc ElevenLabs vì giọng máy local hiện tại nghe vẫn cứng, đặc biệt tiếng Việt.

Tải model Whisper:

mkdir -p ~/.openclaw/models
cd ~/.openclaw/models
wget https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin
openclaw stop && openclaw start

Cài app OpenClaw trên iPhone

App có trên App Store, search "OpenClaw" - icon hình con tôm hùm. Sau khi cài:

  1. Mở app, nhấn "Connect to gateway".
  2. Nhập URL gateway dạng https://claw.example.com (URL Caddy reverse proxy mà bạn đã setup).
  3. App hiện QR pairing - quét bằng laptop chạy openclaw pair, hoặc nhập token thủ công.
  4. Cho phép Microphone, Notifications.
  5. Vào Settings -> Voice -> bật Voice Wake.

Lần đầu pair có thể fail nếu Caddy không support WebSocket upgrade đúng - mở Caddyfile và đảm bảo có transport http { versions 1.1 2 } trong block reverse_proxy.

⚠️ Lưu ý: App OpenClaw cần Background App Refresh bật để wake word hoạt động khi màn hình tắt. Settings -> General -> Background App Refresh -> OpenClaw.

Latency thực tế khi gateway đặt ở Việt Nam vs US

Mình test bằng cách bấm "hey claw, một cộng một bằng mấy" và đo thời gian từ lúc nói hết câu đến lúc nghe trả lời. Setup: iPhone 13 Pro, 4G Viettel TPHCM.

Gateway location LLM Latency end-to-end
VPS TND (Hà Nội) GPT-4o-mini ~1.8s
VPS TND (Hà Nội) Claude Haiku ~2.1s
VPS Vultr (Tokyo) GPT-4o-mini ~2.6s
VPS Hetzner (Frankfurt) GPT-4o-mini ~4.9s
VPS DigitalOcean (NYC) GPT-4o-mini ~5.5s

Hai con số đầu đến từ VPS 80 của TND Cloud. Khác biệt 3-4 giây so với VPS US là rất rõ khi bạn dùng voice - cảm giác "instant" vs "lag thấy rõ". Với chat text 3 giây không quan trọng, nhưng voice thì có. Ai làm voice agent thực sự mới biết 1 giây thêm là cả thế giới.

Breakdown latency VPS VN ~1.8s:

  • ~150ms: 4G upload audio chunk lên gateway.
  • ~300ms: Whisper local STT trên VPS (CPU).
  • ~800ms: LLM call đi US (gateway ra OpenAI us-east).
  • ~400ms: TTS OpenAI nova trả về.
  • ~150ms: download audio xuống 4G.

Phần lớn latency thuộc về LLM gọi US. Nếu dùng LLM của Together AI hoặc Mistral (có endpoint Singapore/Tokyo), latency tổng có thể xuống dưới 1.5s.

Wake word tiếng Việt

"Hey claw" phát âm kiểu Mỹ thì máy dò ổn, nhưng dân Việt hay đọc "hây cờ-lốp" và Porcupine fire không reliable. Mình recommend hai cách:

  1. Train custom wake word bằng Picovoice Console (free 3 wake word/tháng). Mình tạo "này Mây" (Mây là tên gọi cá nhân của agent) - fire rate cao hơn nhiều với accent Bắc/Nam VN.
  2. Tắt wake word, dùng Shortcut iOS: tạo Shortcut "Talk to Claw" gán cho Action Button hoặc Back Tap. Bấm phím cứng cảm giác chắc hơn nói wake word.

Config wake word custom:

{
  "wake": {
    "enabled": true,
    "provider": "porcupine",
    "accessKey": "YOUR_PICOVOICE_KEY",
    "keywords": [
      {
        "label": "nay-may",
        "modelFile": "~/.openclaw/wake/nay-may_vi_ios_v3.ppn",
        "sensitivity": 0.6
      }
    ]
  }
}

Sensitivity 0.6 là sweet spot mình test. 0.5 hay miss, 0.7 fire khi xem TV nói tới "này máy".

Talk mode duplex: nói chuyện qua lại liên tục

Talk mode tiến xa hơn wake word ở chỗ: bật một lần, sau đó agent và bạn nói chuyện tự nhiên không cần wake word mỗi câu. Bật trong app: Voice tab -> Talk Mode -> Start. App stream audio bidirectional qua WebSocket lên gateway.

Lưu ý gateway cần đủ tài nguyên - Whisper streaming + LLM streaming + TTS streaming cùng lúc ngốn khoảng 1.5GB RAM peak. VPS 50 (4GB RAM) đủ nếu không chạy nhiều skill nặng song song. VPS 80 (6GB) thoải mái.

💡 Mẹo: Talk mode dễ tốn quota LLM nếu để mở mà quên (agent ngồi nghe noise và đôi khi trigger ngẫu nhiên). Đặt timeout auto-exit sau 3 phút silence: "talkMode": { "idleTimeoutSec": 180 }.

Privacy: ai nghe được mic của bạn

Quy trình mic của OpenClaw tóm tắt:

  1. Mic device -> buffer 1s loop local (chưa rời máy).
  2. Wake word detector pattern match local (Porcupine).
  3. Khi fire: 1.5s audio trước wake word + audio tiếp theo gửi qua HTTPS WebSocket lên gateway.
  4. Gateway -> STT (Whisper local trên VPS bạn, hoặc OpenAI cloud).
  5. Transcribed text -> LLM provider.
  6. Response -> TTS -> audio xuống app.

Nếu bạn dùng STT local Whisper trên VPS của mình, audio không rời boundary bạn kiểm soát. Nếu dùng OpenAI Whisper API, audio đi qua OpenAI us-east, tuân thủ data policy của OpenAI (không train trên API data từ 2023). Đó là điểm OpenClaw làm tốt hơn Siri/Alexa: bạn chọn provider, không bị buộc.

Cảnh báo: app iOS có quyền microphone always - kể cả khi screen off. Đây là điều kiện kỹ thuật để wake word work. Nếu bạn paranoid, dùng push-to-talk thay vì wake word, hoặc tắt voice khi đi gặp khách hàng quan trọng.

Tích hợp với automation

Sức mạnh thực sự của voice mode OpenClaw không phải hỏi đáp thông tin (cái đó ChatGPT app làm tốt hơn), mà là kết hợp với skill + automation cá nhân. Vài use case mình thực sự dùng:

  • "Hey claw, ghi note cuộc họp này, tag client X." -> skill ghi vào Obsidian vault qua SSH.
  • "Hey claw, hôm nay deploy có lỗi không." -> agent đọc log Sentry và summarize.
  • "Hey claw, reschedule cuộc 3h chiều sang mai 10h." -> agent gọi Google Calendar API, xác nhận lại bằng voice.
  • "Hey claw, ai đang gửi mail cần reply gấp." -> agent đọc inbox, đọc subject + sender + 1 dòng tóm tắt.

Việc này không thể làm với ChatGPT app vì cần auth của bạn (Google account, Sentry token, Obsidian local). OpenClaw chạy trên VPS của bạn, ăn token của bạn, hợp lý nhất để làm việc này.

Khi nào nên upgrade lên VPS có GPU

Nếu bạn muốn STT local thật nhanh và dùng TTS local (Coqui XTTS giọng tự clone), CPU 4 core đuối. Lúc đó cần GPU - Vultr có A40 hourly, hoặc TND có VPS lớn hơn. Nhưng cá nhân mình thấy VPS 80 + Whisper small + OpenAI TTS là cost-effective nhất: 999k/tháng + ~$3-5/tháng OpenAI cho mức dùng voice mode 1-2 tiếng/ngày.

Tham khảo thêm bài giới thiệu OpenClaw foundation để hiểu rõ kiến trúc tổng thể. Nếu cần định hình workload trước khi chọn VPS, đọc hướng dẫn chọn VPS cho vibe coder.

Tóm lại

Voice mode của OpenClaw không phải đồ trang trí - khi setup đúng (gateway đặt VN, STT local Whisper, TTS OpenAI, custom wake word tiếng Việt), latency dưới 2 giây và cảm giác y như nói chuyện với assistant thực sự. Khác biệt với Siri là agent này biết file, calendar, code base, log của bạn. Khác biệt với ChatGPT voice là dữ liệu không rời boundary bạn kiểm soát (trừ LLM call). Đáng để bỏ ra một buổi tối thử.

Bài viết liên quan

VPS Việt Nam latency thấp cho voice agent OpenClaw

TND Cloud VPS đặt tại Hà Nội, NVMe enterprise + RAM ECC. VPS 80 (6vCPU/6GB) 999k/tháng đủ chạy Whisper local + gateway + audit log thoải mái.

Xem bảng giá VPS