Remote giọng nói tiếng Việt cho Home Assistant chạy nội bộ
Ghi chú làm một remote giọng nói dùng ESP32-S3, ESPHome và Home Assistant Assist local để điều khiển nhà thông minh bằng tiếng Việt mà không phải gửi giọng nói lên cloud.
Chia sẻ

Nếu bạn muốn làm theo, mình khuyên bắt đầu bằng push-to-talk để kiểm tra trọn pipeline tiếng Việt trước khi thêm wake word.
Trong nhà thông minh, bấm công tắc vẫn là cách nhanh nhất. Nhưng có vài lúc nói tiện hơn thật: tay đang bận nấu ăn, đang nằm trên giường, hoặc muốn tắt hết đèn mà không mở điện thoại.
Ý tưởng ở đây là một remote giọng nói nhỏ, có nút bấm để nói tiếng Việt với Home Assistant. Mình thích hướng push-to-talk hơn thiết bị luôn nghe. Nó đỡ gây cảm giác bị theo dõi, dễ giải thích cho người trong nhà, và khi test tiếng Việt cũng ít bực hơn wake word.
Bản Nastrotek nên làm gì?
MVP nên rất rõ:
- Bấm nút, nói câu lệnh tiếng Việt.
- Gửi audio đến Home Assistant trong mạng LAN.
- Home Assistant xử lý bằng Assist pipeline local.
- Trả lời bằng loa nhỏ hoặc chỉ báo LED nếu câu lệnh thành công.
- Có nút mute hoặc trạng thái LED để biết lúc nào thiết bị đang nghe.
Mình sẽ tránh làm màn hình cảm ứng, dashboard mini hay trợ lý AI nói chuyện dài ở bản đầu. Remote này chỉ cần điều khiển nhà: bật đèn bàn, tắt quạt, mở cảnh "đi ngủ", hỏi cửa chính đã khóa chưa.

Bản đầu nên ưu tiên push-to-talk để kiểm soát lúc nào micro nghe, nhất là khi dùng tiếng Việt trong nhà.
Phần cứng đề xuất
Nếu muốn đi nhanh và bớt đau đầu phần audio:
- Seeed ReSpeaker Lite có XIAO ESP32-S3.
- Nút push-to-talk lớn, dễ bấm trong bóng tối.
- LED trạng thái: idle, đang nghe, đang xử lý, lỗi.
- Vỏ in 3D nhỏ, có lỗ micro và khe loa.
- USB-C cấp nguồn ở bản đầu.
Nếu muốn rẻ hơn và chịu debug nhiều hơn:
- ESP32-S3 DevKit.
- Micro I2S như INMP441.
- Amp I2S MAX98357A + loa nhỏ.
- WS2812 hoặc LED RGB.
- Một nút PTT và một nút mute.
Mình sẽ không chọn ESP32-C3 cho bản có voice đầy đủ. ESP32-S3 có PSRAM và dư tài nguyên hơn, hợp với ESPHome voice assistant hơn.
Pipeline tiếng Việt chạy nội bộ
Phần "chạy nội bộ" nằm ở Home Assistant, không nằm hoàn toàn trên remote. Remote chủ yếu nghe và phát, còn server trong nhà xử lý:
Remote chỉ nên giữ phần nghe/phát; Home Assistant trong mạng nội bộ xử lý STT, intent và TTS.
Nút PTT
-> ESPHome voice assistant
-> Home Assistant Assist pipeline
-> STT local: Whisper hoặc Speech-to-Phrase
-> Intent Home Assistant
-> TTS local: Piper
-> Loa remote hoặc phản hồi LED
Với tiếng Việt, mình sẽ bắt đầu bằng Whisper cho STT vì nó linh hoạt hơn khi câu nói chưa được đóng khung. Đổi lại, nếu Home Assistant chạy trên Raspberry Pi yếu, phản hồi có thể chậm. Nếu chỉ dùng các câu cố định kiểu "bật đèn phòng ngủ", Speech-to-Phrase đáng để thử vì nhanh và hợp để điều khiển nhà hơn.
Điểm quan trọng là đặt tên entity, area và alias theo cách người nhà thật sự nói. Nếu trong Home Assistant đặt tên là light.bedroom_ceiling, nhưng ngoài đời mọi người nói "đèn ngủ", thì nên thêm alias tiếng Việt.
Vì sao push-to-talk hợp hơn wake word?
Wake word nghe hấp dẫn, nhưng với tiếng Việt và nhà nhiều tiếng ồn, ban đầu rất dễ thành khó chịu. Có lúc gọi không nghe, có lúc TV nói gì đó lại kích hoạt nhầm. Home Assistant có openWakeWord và microWakeWord, nhưng wake word riêng cần thời gian train và test.
Push-to-talk đơn giản hơn:
- Bấm là nghe, thả là dừng.
- Không cần thiết bị nghe liên tục.
- Ít kích hoạt nhầm.
- Người lớn tuổi dễ hiểu: "bấm nút rồi nói".
Sau khi pipeline tiếng Việt ổn, lúc đó mới tính wake word.
Những lỗi dễ vấp
Đừng để loa quá gần micro nếu không có xử lý echo tốt. Một số cấu hình ESP32 không có echo cancellation đúng nghĩa, nên âm TTS có thể lọt ngược vào micro.
Đừng bắt đầu bằng pin. Voice, Wi-Fi và loa ăn điện hơn cảm biến IoT bình thường. Ban đầu nên cắm USB-C, dùng ổn rồi mới nghĩ đến pin sạc.
Đừng đặt câu lệnh quá tự nhiên ngay từ đầu. Với nhà thông minh, câu ngắn và nhất quán thắng: "bật đèn bàn", "tắt quạt", "đi ngủ".
Đừng quên đèn trạng thái. Không có LED, người dùng không biết remote đang nghe, đang nghĩ hay vừa lỗi mạng.
Bản đầu mình sẽ làm
Mình sẽ chọn bản thực dụng:
- ESP32-S3 hoặc ReSpeaker Lite.
- Push-to-talk, chưa dùng wake word.
- Home Assistant Assist local.
- Whisper tiếng Việt cho STT.
- Piper cho TTS nếu có giọng phù hợp; nếu chưa ổn thì chỉ dùng beep/LED.
- 5-10 câu lệnh nhà thông minh hay dùng nhất.
Nếu dùng được một tuần mà không phải mở app Home Assistant cho các việc nhỏ, remote này coi như đáng giữ. Nó không cần thông minh kiểu nói chuyện như trợ lý ảo; chỉ cần nghe đúng vài câu tiếng Việt trong nhà là đã đủ thực dụng.
Nguồn tham khảo
Chia sẻ
Tiếp tục khám phá
Đọc tiếp
Bài viết liên quan
Thiết bị báo nhiệt độ tủ lạnh, tủ đông khi mất điện
Ghi chú thiết kế một hộp đo nhiệt độ đặt ngoài tủ lạnh, dùng ESP32, hai đầu dò DS18B20 và Home Assistant để biết sớm khi ngăn đông ấm lên sau mất điện.
Smart thermostat tự học cách căn phòng ấm lên
Ghi chú làm smart thermostat bằng ESP32, ESPHome và Home Assistant, có lớp tốc độ làm ấm để bật đúng lúc mà vẫn giữ giới hạn an toàn.
Đồng hồ để bàn “chỉ báo chất lượng giấc ngủ” không cần camera
Ghi chú làm một đồng hồ ESP32 cạnh giường, dùng CO2, nhiệt độ, ánh sáng và cảm biến hiện diện để giải thích vì sao sáng dậy thấy phòng ngủ không ổn, không cần camera.