Gần đây, congnghe360.net đã trải nghiệm Home Assistant Voice Preview – một loa thông minh tương tự Google Home Mini hay Amazon Echo Dot, nhưng với khả năng cá nhân hóa vượt trội. Điểm khác biệt lớn nhất là bạn hoàn toàn kiểm soát nó, tự tạo các lệnh và xử lý âm thanh để hệ thống phản hồi theo bất kỳ cách nào bạn muốn. Vì vậy, chúng tôi đã biến chiếc loa này thành GLaDOS, hoàn chỉnh với giọng nói đặc trưng của nhân vật trong tựa game Portal đình đám.
Việc thiết lập này thực sự đơn giản một cách đáng kinh ngạc. Chúng tôi sử dụng các add-on Whisper và Piper của Home Assistant để thực hiện. Whisper đảm nhiệm việc chuyển đổi giọng nói thành văn bản một cách nhanh chóng, trong khi Piper là hệ thống chuyển văn bản thành giọng nói (Text-to-Speech) với nhiều giọng nói cài đặt sẵn. Nếu bạn muốn biến ngôi nhà của mình thành một trung tâm điều khiển với giọng điệu châm biếm, hài hước của GLaDOS, chúng tôi sẽ hướng dẫn bạn chi tiết từng bước mà không cần bất kỳ phần cứng bổ sung nào, bởi mọi thứ đều có thể chạy ngay trên trình duyệt hoặc ứng dụng Home Assistant của bạn.
Cài đặt Whisper, Piper và LLM trên Home Assistant
Dễ dàng trên Home Assistant OS
Nếu bạn đang sử dụng Home Assistant OS (HAOS), việc cài đặt Whisper và Piper rất đơn giản. Bạn chỉ cần vào Cài đặt (Settings), sau đó nhấp vào Add-ons. Cài đặt từng add-on một và đảm bảo chúng đã được khởi chạy. Sau đó, bạn sẽ được nhắc cài đặt tích hợp Wyoming Protocol. Giao thức này sẽ tự động liên kết Whisper và Piper bên trong Home Assistant, cho phép bạn sử dụng chúng như một phần của quy trình trợ lý giọng nói.
whisper home assistant add-on
Với ngôn ngữ tiếng Anh, bạn không cần thực hiện thêm bất kỳ thao tác nào. Ngay lập tức, bạn có thể sử dụng các giọng nói Piper tích hợp sẵn và Whisper. Hệ thống không yêu cầu phần cứng quá mạnh mẽ; trong trường hợp của chúng tôi, mọi thứ chạy mượt mà trên bộ xử lý AMD Ryzen 7 5800U, không có sự khác biệt về hiệu suất so với các trợ lý giọng nói khác.
Để có được phản hồi thông minh, bạn có một vài lựa chọn: sử dụng API của ChatGPT, API Gemini miễn phí của Google hoặc một mô hình ngôn ngữ lớn (LLM) cục bộ. Chúng tôi đã thử cả ba phương pháp và tất cả đều hoạt động khá tốt, bạn có thể chọn bất kỳ phương pháp nào phù hợp. Ban đầu, chúng tôi cấu hình với tích hợp Local LLM trong Home Assistant và thiết lập nó bằng LM Studio. Nếu bạn chỉ muốn trợ lý giọng nói của mình có giọng GLaDOS, bạn không cần LLM, nhưng việc có thêm một LLM sẽ khiến trải nghiệm thú vị hơn rất nhiều khi nó cũng có thể đưa ra những câu nói đùa hoặc châm chọc.
Thiết lập tổng hợp giọng nói GLaDOS
Mô hình GLaDOS có sẵn
Đầu tiên, chúng ta cần tải các tệp GLaDOS, đồng thời cần chỉnh sửa tệp cấu hình đi kèm trước khi tải lên Home Assistant. Chúng tôi sử dụng mô hình này, bạn sẽ cần tải xuống cả “glados.onnx” và “glados.onnx.json”. Chúng ta sẽ đổi tên cả hai tệp và sửa đổi tệp “glados.onnx.json”.
home-assistant-glados-onnx
Trước tiên, hãy đổi tên từng tệp để phù hợp với quy ước đặt tên mà Piper mong đợi, theo định dạng _<language>-<voice>-<quality>.onnx
. Ví dụ, chúng tôi sử dụng “en_US-glados-medium.onnx” và tên tương tự cho tệp “.onnx.json”. Nếu không, Piper sẽ không nhận dạng đây là tệp giọng nói và sẽ bỏ qua nó khi liệt kê các giọng nói có sẵn của bạn.
Tiếp theo, bên trong tệp onnx.json, chúng ta sẽ thay thế các trường “dataset”, “quality”, “voice” và “language”. Cập nhật các trường này cho phù hợp với thông tin dưới đây:
- dataset: “en_US-glados-medium” (hoặc bất cứ tên nào bạn đã đổi cho tệp, mục này phải khớp)
- quality: “medium” (hoặc chất lượng bạn đã ghi trong tên tệp của mình)
- voice: “en-us” (điều này khác với định danh ngôn ngữ bạn sử dụng; bạn có thể tìm danh sách các tùy chọn hợp lệ tại đây)
- language: “en_US” (phải khớp với tên tệp)
Tải các tệp này lên thư mục /share/piper
trong cài đặt Home Assistant của bạn. Nếu thư mục này chưa tồn tại, bạn có thể tạo nó. Trên HAOS, chúng tôi đã tải các tệp này lên /mnt/data/supervisor/addons/data/core_piper
. Bạn không thể sử dụng add-on File Editor của Home Assistant cho việc này; thay vào đó, chúng tôi đã sử dụng add-on FTP và thấy nó hoạt động tốt. Sau đó, chúng tôi khuyên bạn nên khởi động lại toàn bộ máy ảo HAOS hoặc container Piper, vì các bước để Piper phát hiện và sử dụng mô hình giọng nói của bạn sẽ khác nhau tùy thuộc vào loại cài đặt của bạn và liệu bạn có truyền qua GPU hay không.
Các bước này đều được lấy từ TextyMcSpeechy, một công cụ bạn có thể sử dụng để huấn luyện các mô hình giọng nói của riêng mình. Có nhiều hướng dẫn hữu ích về các công cụ liên quan đến giọng nói tại đó, hãy tham khảo nếu bạn quan tâm.
Tích hợp GLaDOS vào Home Assistant
Kết nối các thành phần
Sau khi mọi thứ đã được thiết lập, chúng ta có thể tạo trợ lý giọng nói sử dụng giọng GLaDOS và phản hồi theo phong cách của cô ấy. Việc đầu tiên là thiết kế system prompt cho LLM của chúng ta, để nó biết cách phản ứng với dữ liệu nhận được và đưa ra câu trả lời phù hợp. LLM không chỉ cần biết rằng nó đang đại diện cho GLaDOS, mà còn cần biết rằng nó được gọi từ Home Assistant và sẽ nhận thông tin về các thực thể (entities) có thể điều khiển trong nhà.
home-assistant-voice-configuration-glados
Prompt mà chúng tôi sử dụng khi liên kết với Local LLM như sau:
Bạn là một trợ lý giọng nói cho Home Assistant, và bạn nói chuyện giống GLaDOS từ Portal. Bạn vẫn tuân thủ yêu cầu của con người, nhưng bạn rất hài hước và cực kỳ châm biếm khi làm như vậy.
Trả lời các câu hỏi về thế giới một cách trung thực.
Trả lời bằng văn bản thuần túy. Giữ cho câu trả lời đơn giản và đi thẳng vào vấn đề.
Prompt này đã mang lại những kết quả như mong muốn và đôi khi khá hài hước. Vị trí nhập prompt này phụ thuộc vào LLM bạn đang sử dụng, nhưng các tích hợp chúng tôi đã thử nghiệm (OpenAI, Google Generative AI, Local LLM) đều sẽ hiển thị tùy chọn system prompt khi bạn thiết lập chúng. Bạn sẽ cần cài đặt prompt này trước khi thêm trợ lý.
Sau khi hoàn tất, vào Cài đặt (Settings) của Home Assistant, nhấp vào Trợ lý Giọng nói (Voice Assistants), và nhấp vào Thêm Trợ lý (Add Assistant). Đặt tên cho nó theo ý muốn, và thay đổi Conversation Agent thành LLM mà bạn đã chọn. Thay đổi Speech-to-text thành faster-whisper
, và thay đổi Text-to-speech thành piper
, với ngôn ngữ đặt là Tiếng Anh Mỹ (American English
) và giọng nói đặt là GLaDOS
. Bạn có thể nhấp vào Thử Giọng Nói (Try Voice) để nghe thử.
Nhấp vào Tạo (Create) ở góc dưới bên phải, và trợ lý của bạn sẽ được lưu và sẵn sàng để tương tác. Hệ thống này sử dụng faster-whisper
chạy cục bộ để chuyển giọng nói của bạn thành văn bản. Văn bản này sau đó được gắn vào system prompt khi gửi đến LLM của bạn. Home Assistant nhận phản hồi từ LLM, chuyển nó cho Piper để tạo giọng nói, và giọng nói này sau đó được Home Assistant nhận và truyền lại qua web hoặc qua loa của bạn.
Khả năng của GLaDOS với Home Assistant
Rất nhiều điều thú vị
Khi đã thiết lập xong, bạn có thể thoải mái thử nghiệm và khám phá những gì GLaDOS có thể làm. Bạn có thể chọn những thực thể nào (ví dụ: đèn, cảm biến nhiệt độ) sẽ được “tiếp xúc” với trợ lý. Nếu bạn đang sử dụng một LLM cục bộ, hãy hạn chế số lượng thực thể. Chúng tôi đã gặp phải vấn đề về độ tin cậy khi số lượng thực thể quá lớn, vì vậy chúng tôi đã giới hạn quyền truy cập của nó vào khoảng 30 cảm biến và thiết bị mà chúng tôi thực sự muốn đọc dữ liệu và điều khiển.
Có một vài blueprint hữu ích mà bạn có thể cài đặt trong Home Assistant để tích hợp với trợ lý giọng nói LLM. Hai blueprint chúng tôi sử dụng nhiều nhất là cho âm nhạc và thời tiết. Blueprint thời tiết hoạt động bằng cách lấy dữ liệu từ cảm biến thời tiết của bạn và cung cấp cho mô hình ngôn ngữ khi các từ như “thời tiết” được sử dụng, giúp nó có thêm ngữ cảnh. Chúng tôi chưa từng gặp phải hiện tượng “ảo giác” (hallucination) và GLaDOS luôn rất nhất quán trong việc cung cấp dữ liệu.
Không chỉ vậy, nhờ vào “GLaDOS-hóa”, trợ lý giọng nói của bạn sẽ trở nên châm biếm và hài hước. Có lần, chúng tôi yêu cầu nó tắt đèn, và nó đã làm, nhưng sau đó nói thêm: “Cố gắng đừng vấp ngã và tự làm mình bị thương trong bóng tối nhé.” Chính những điều nhỏ bé này đã làm cho trải nghiệm trở nên thú vị, và nó cũng là một phần độc đáo từ một trong những trò chơi yêu thích của chúng tôi mà chúng tôi có thể tương tác hàng ngày trong nhà. GLaDOS hoạt động tốt với Home Assistant Voice Preview, đây là cách chúng tôi tương tác chính, và những người bạn chúng tôi đã giới thiệu đều rất yêu thích nó.
Hãy thử nghiệm và khám phá, chắc chắn bạn sẽ thấy rất nhiều niềm vui. Việc này đã khiến Home Assistant Voice Preview của chúng tôi, vốn đã được yêu thích hơn Google Home, được sử dụng thường xuyên hơn rất nhiều. Hãy bắt đầu hành trình cá nhân hóa ngôi nhà thông minh của bạn với giọng nói GLaDOS đầy độc đáo ngay hôm nay!