Bỏ qua, đến nội dung chính
Bài viếtFirmwareMới

Wake Word nào tốt hơn? So sánh microWakeWord, Google và Alexa

So sánh wake word microWakeWord, Google Assistant và Alexa theo kiến trúc, quyền kiểm soát, độ riêng tư, phần cứng và khả năng dùng trên ESP32-S3.

Chia sẻ

LinkedInFacebookX
Realistic smart speaker prototype beside an ESP32-S3 board and laptop with audio waveforms

Nếu bạn đang làm một thiết bị có microphone, sớm muộn bạn cũng gặp câu hỏi: nên dùng microWakeWord, Google hay Alexa để phát hiện câu đánh thức?

Tên gọi khiến chúng giống ba lựa chọn ngang hàng. Thực tế thì không hẳn. microWakeWord là một framework/model chạy trên thiết bị nhỏ; Google kiểm soát hotword trong hệ sinh thái của họ; còn Alexa thường là một dịch vụ voice đi cùng một wake-word engine có thể tích hợp.

Nếu bạn muốn xem riêng cách xây wake word local trên ESP32-S3, hãy đọc thêm bài Phát hiện wake word cho thiết bị luôn lắng nghe.

Vì vậy, bài này không cố xếp hạng bằng một con số accuracy duy nhất. Con số đó chỉ có ý nghĩa khi cùng microphone, khoảng cách, tiếng ồn và bộ test. Mình muốn so sánh thứ ảnh hưởng thật đến quyết định thiết kế: bạn kiểm soát được gì, audio đi đâu, và nền tảng nào hợp với phần cứng nào.

Tóm tắt nhanh

Ba hướng kiến trúc wake word đặt cạnh nhau: detector local trên vi điều khiển, hotword tích hợp trong nền tảng và wake engine kết nối dịch vụ voice.

Ba cái tên nghe giống nhau, nhưng quyền kiểm soát model và cách audio đi qua hệ thống rất khác nhau.

Tiêu chímicroWakeWordGoogleAlexa
Bản chấtFramework và model cho thiết bị hạn chế tài nguyênHotword stack tích hợp trong hệ sinh thái GoogleVoice service + wake-word engine/client
Nơi phát hiệnLocal trên MCU nếu bạn triển khai đúngThường local trong thiết bị được hỗ trợEngine thường chạy trên thiết bị; AVS xử lý phiên voice
Tự tạo wake wordCó, nhưng cần tự train và testKhông phải hướng mở cho thiết bị tuỳ ýPhụ thuộc engine và chương trình tích hợp
Tự kiểm soát dữ liệuCaoPhụ thuộc thiết bị và dịch vụ GooglePhụ thuộc client, engine và AVS
Hợp với ESP32-S3Rất hợpKhông phải lựa chọn thực tế cho firmware tự viếtKhông hợp nếu chỉ cần detector local nhỏ
Đánh đổi chínhBạn tự chịu trách nhiệm về model và tuningÍt quyền kiểm soát nhưng UX hoàn thiệnHệ sinh thái mạnh nhưng tích hợp phức tạp

1. microWakeWord: lựa chọn thực dụng cho ESP32-S3

Repo microWakeWord mô tả đây là thư viện open source để phát hiện wake word trên thiết bị công suất thấp và tạo model phù hợp với TensorFlow Lite for Microcontrollers. Model không cần Linux computer hay cloud API để chạy.

Pipeline khá dễ hình dung:

  1. Microphone đưa audio stream vào firmware.
  2. Audio được chuyển thành đặc trưng phổ; repo mô tả 40 spectrogram features mỗi 10 ms.
  3. Model streaming trả về xác suất cho từng cửa sổ.
  4. Nhiều cửa sổ liên tiếp được dùng để quyết định có thật sự nghe thấy wake word hay không.

ESPHome đã có component Micro Wake Word để chạy logic này trên thiết bị. Bạn có thể cấu hình `probability_cutoff`, `sliding_window_size`, VAD và model từ repo model chính thức.

```yaml micro_wake_word: microphone: microphone: i2s_mic channels: 0 gain_factor: 4 vad: models:

  • model: okay_nabu id: wake_model probability_cutoff: 97% sliding_window_size: 5 ```

Điểm mình thích là ranh giới dữ liệu rõ: trước khi phát hiện, audio có thể được xử lý và ghi đè ngay trên ESP32-S3. Nhưng open source không đồng nghĩa với “đã chính xác sẵn”. Tài liệu repo cũng lưu ý train model tốt vẫn khó; bạn cần sample dương đa dạng, negative dataset, augmentation cho noise/reverb và test trên những người không có trong tập train.

Sơ đồ so sánh pipeline microWakeWord local, Google hotword stack và Alexa AVS với wake-word engine riêng.

microWakeWord nằm gọn trên MCU; Google đóng stack trong nền tảng; Alexa tách engine khỏi phiên AVS.

2. Google: hotword tốt, nhưng không phải thư viện để bê vào ESP32

Google Assistant dùng “Hey Google” và “OK Google”. Hotword detection được tối ưu sâu trong Android, điện thoại và các thiết bị Google được hỗ trợ. Nó thường nằm local trước khi phiên Assistant bắt đầu, nhưng model, dữ liệu train và cách tuning không phải là stack mở để tải xuống rồi biên dịch cho ESP32-S3.

Google có các repo và nghiên cứu mở về keyword spotting, chẳng hạn Google Coral project-keyword-spotter, nhưng repo nghiên cứu/demo không phải model “Hey Google” chính thức. Nghiên cứu của Google về keyword spotting cho Assistant cũng cho thấy bài toán thực tế cần xử lý false accept và false reject ở nhiều tầng.

Nếu bạn làm ứng dụng Android hoặc thiết bị Google được hỗ trợ, chọn Google có lý do: wake word, UX và Assistant cùng một hệ sinh thái. Nếu bạn viết firmware ESP-IDF cho ESP32-S3, Google không phải lựa chọn “cài thêm thư viện là xong”. Mình sẽ dùng push-to-talk hoặc detector local riêng cho lớp đầu vào, rồi kết nối dịch vụ ở lớp sau nếu sản phẩm thật sự cần.

3. Alexa: đừng nhầm AVS với wake-word engine

Alexa Voice Service Device SDK là client SDK để thiết bị giao tiếp với Alexa Voice Service. Phần wake word có một ranh giới riêng. Trong hệ sinh thái AVS, wake-word engine được tích hợp qua interface; các ví dụ cũ trên Raspberry Pi dùng engine bên thứ ba như Sensory.

Nói ngắn gọn: Alexa/AVS giúp xây thiết bị kết nối với Alexa, nhưng không biến “Alexa” thành model open source để chạy tự do trên mọi vi điều khiển. Wake-word engine vẫn là dependency có yêu cầu nền tảng, license và tài nguyên riêng.

Amazon cũng nói trong Alexa Auto SDK rằng SDK cung cấp hook để kết nối wake word engine. Khi đánh giá Alexa, mình sẽ hỏi:

  • Engine phát hiện wake word là của ai và license thế nào?
  • Audio sau khi phát hiện được gửi tới AVS ra sao?
  • Thiết bị có đủ RAM, storage, TLS, network và audio front-end cho client không?

Nếu mục tiêu là sản phẩm Alexa Built-in, hệ sinh thái này đáng xem. Nếu mục tiêu chỉ là ESP32-S3 nói chuyện local với Home Assistant, đây là một chuỗi phụ thuộc khá lớn.

So sánh theo đúng bài toán

Khi bạn cần riêng tư và chạy local

microWakeWord thắng về quyền kiểm soát. Bạn biết model nào chạy, threshold nào được dùng và có thể thiết kế để audio trước wake word không rời khỏi thiết bị. Google và Alexa có thể có bước hotword local, nhưng toàn bộ voice experience vẫn gắn với platform/dịch vụ tương ứng.

Mình vẫn sẽ thêm LED báo trạng thái và công tắc vật lý ngắt microphone. “Local” là thuộc tính của cả mạch, firmware, log và network policy, không chỉ là câu mô tả trong README.

Khi bạn cần trải nghiệm hoàn thiện

Google và Alexa có lợi thế về wake phrase, UX, account, intent và backend. Bạn đổi lại bằng ít quyền kiểm soát model hơn và phụ thuộc nền tảng nhiều hơn.

microWakeWord cho bạn detector nhỏ, không cho sẵn trợ lý hoàn chỉnh. Bạn vẫn phải lo command capture, STT, intent và TTS — chẳng hạn ghép với Home Assistant Assist local.

Khi bạn cần wake word riêng

microWakeWord là hướng phù hợp nhất trong ba lựa chọn, nhưng “custom” không đồng nghĩa với “dễ”. Câu đánh thức cần khác biệt, dễ lặp lại, ít xuất hiện trên TV/hội thoại và ổn với nhiều giọng. Với tiếng Việt, mình sẽ test giọng vùng miền và cách nhấn âm khác nhau, không chỉ một bộ audio tổng hợp.

Test thực tế: đừng dùng một file sạch để kết luận

Wake word là đặc tính của cả căn phòng, không chỉ của model. Bài test tối thiểu của mình:

  • Nói câu đánh thức ở 0,5 m, 2 m và 4 m.
  • Nói nhỏ, nói bình thường và gọi từ phòng bên.
  • Chạy TV, podcast, nhạc, quạt và tiếng bếp trong nhiều giờ.
  • Thử nhiều người nói, accent và cách phát âm.
  • Cho thiết bị tự phát tiếng trả lời để kiểm tra echo re-trigger.

Bàn test wake word với prototype ESP32-S3, microphone, loa, laptop và các nguồn tiếng ồn trong phòng.

Wake word là đặc tính của cả căn phòng, vì vậy hãy test khoảng cách, tiếng TV, nhạc, quạt và giọng thật.

Hãy ghi số lần nhận đúng, false reject, false accept mỗi giờ, độ trễ và điều kiện môi trường. Đừng chỉ ghi “accuracy = 95%”; một thiết bị kích hoạt nhầm hai lần mỗi đêm có thể khó chịu hơn một thiết bị đôi khi bỏ sót câu gọi.

Mình sẽ chọn gì?

Nếu phần cứng là ESP32-S3 và mục tiêu là thiết bị voice local, mình chọn microWakeWord cho lớp wake word, sau đó dùng push-to-talk làm đường dự phòng. Đây là lựa chọn cân bằng giữa tài nguyên, riêng tư và khả năng debug.

Mình chọn Google khi sản phẩm đã nằm trong hệ sinh thái thiết bị được Google hỗ trợ và UX có sẵn quan trọng hơn quyền kiểm soát model. Mình chọn Alexa khi sản phẩm cần Alexa Built-in/AVS và đội ngũ chấp nhận bài toán SDK, cloud, account và wake engine.

Prototype thiết bị voice mở vỏ trên bàn điện tử, cạnh board ESP32-S3, microphone I2S và laptop theo dõi ngưỡng.

Threshold chỉ có ý nghĩa khi được tuning trên đúng microphone, vỏ, loa và vị trí lắp cuối cùng.

Kết luận ngắn: microWakeWord là lựa chọn để bạn xây và kiểm soát detector; Google là lựa chọn nền tảng; Alexa là lựa chọn hệ sinh thái voice có wake engine tích hợp. So sánh đúng như vậy giúp bạn tránh mua nhầm phần cứng hoặc hứa quá nhiều về quyền riêng tư.

Nguồn tham khảo

Chia sẻ

LinkedInFacebookX

Tiếp tục khám phá

Đọc tiếp

Bài viết liên quan

Xem thêm trong Bài viết

Nastrotek sử dụng cookie để phân tích truy cập và cá nhân hóa quảng cáo, giúp hiểu cách website được sử dụng. Bạn có thể chấp nhận hoặc từ chối các cookie không thiết yếu. Chính sách bảo mật