Bỏ qua tới nội dung chính
Quay lại tin tức

Từ tác nhân giọng nói đến trợ lý giọng nói cho Bharat: Hành trình 10 ngày của tôi với VoiceForBharat

Dev.to AI· Zikra· 15/8/2026opensource

Trong 10 ngày qua, tôi đã xây dựng một tác nhân thoại (voice agent) như một phần của chương trình "10 Ngày Tác nhân thoại – Phiên bản VoiceForBharat". Từ một cuộc trò chuyện thoại đơn giản, hệ thống dần trở thành một giải pháp hoàn chỉnh hơn – có khả năng ghi nhớ người dùng, sử dụng công cụ, thực hiện cuộc gọi đi, chuyển tiếp cho nhân viên hỗ trợ, theo dõi kết quả cuộc gọi và bàn giao cuộc trò chuyện cho một tác nhân chuyên biệt. Dự án được xây dựng bằng LiveKit và Murf Falcon, với mục tiêu giúp thông tin về các chương trình của chính phủ và hỗ trợ tài chính dễ tiếp cận hơn thông qua các cuộc trò chuyện thoại tự nhiên. 1. Vấn đề tôi muốn giải quyết Các chương trình của chính phủ có thể

Trong 10 ngày qua, tôi đã xây dựng một tác nhân giọng nói (voice agent) như một phần của chương trình "10 Days of Voice Agents — VoiceForBharat Edition". Từ một cuộc hội thoại giọng nói đơn giản, hệ thống này dần phát triển thành một hệ thống hoàn chỉnh hơn nhiều. Nó có khả năng ghi nhớ người dùng, sử dụng công cụ, thực hiện cuộc gọi đi, chuyển tiếp cho người thật, theo dõi kết quả cuộc gọi và chuyển giao cuộc hội thoại cho một tác nhân chuyên biệt. Dự án được xây dựng bằng LiveKit và Murf Falcon, với mục tiêu giúp việc tiếp cận thông tin về các chương trình của chính phủ và hỗ trợ tài chính trở nên dễ dàng hơn thông qua các cuộc hội thoại giọng nói tự nhiên. 1. Vấn đề cần giải quyết Các chương trình của chính phủ có thể cực kỳ hữu ích, nhưng việc tìm kiếm đúng chương trình, hiểu rõ điều kiện đủ và xác định các bước tiếp theo có thể gây bối rối. Đối với nhiều người dùng, đặc biệt là những người cảm thấy thoải mái hơn khi nói chuyện thay vì gõ phím, giao diện giọng nói có thể giúp tương tác này trở nên đơn giản hơn nhiều. Thay vì điều hướng qua nhiều trang và biểu mẫu, người dùng có thể đơn giản trò chuyện với một trợ lý và đặt các câu hỏi như: Những chương trình của chính phủ nào có sẵn cho tôi? Tôi có đủ điều kiện cho một chương trình cụ thể không? Tôi cần những thông tin gì? Có ai có thể giúp tôi việc này không? Đây đã trở thành ý tưởng cốt lõi đằng sau dự án VoiceForBharat của tôi: sử dụng giọng nói làm giao diện tự nhiên hơn để truy cập thông tin hữu ích của chính phủ và tài chính. 2. Những gì đã xây dựng Tác nhân cuối cùng không chỉ là một bot hỏi-đáp cơ bản. Nó có thể: Thực hiện các cuộc hội thoại giọng nói tự nhiên. Sử dụng giọng nói tiếng Ấn Độ được cung cấp bởi Murf Falcon. Xử lý các ngôn ngữ Ấn Độ và các cuộc hội thoại pha trộn ngôn ngữ (code-mixed conversations). Tuân thủ một tính cách và các rào cản an toàn đã được xác định. Ghi nhớ thông tin về những người dùng quay lại. Sử dụng công cụ để truy xuất hoặc tính toán thông tin hữu ích. Thực hiện các cuộc gọi điện thoại đi. Chuyển tiếp cuộc hội thoại khi cần sự can thiệp của người thật. Theo dõi kết quả cuộc gọi. Chuyển giao cuộc hội thoại từ tác nhân chính sang tác nhân chuyên biệt. Ý tưởng là làm cho tác nhân này giống một trợ lý giọng nói thực sự hơn là một chatbot trình diễn. 3. Cách hệ thống hoạt động Ở cấp độ cao, quy trình giọng nói hoạt động như sau: Người dùng → Chuyển đổi giọng nói thành văn bản (Speech-to-Text) → Tác nhân LiveKit → Mô hình ngôn ngữ lớn (LLM) → Công cụ / Bộ nhớ → Chuyển đổi văn bản thành giọng nói Murf Falcon (TTS) → Người dùng Người dùng nói vào giao diện. Lời nói của họ được chuyển đổi thành văn bản, được xử lý bởi tác nhân và LLM, và phản hồi được chuyển đổi ngược lại thành giọng nói bằng Murf Falcon. LiveKit xử lý giao tiếp giọng nói thời gian thực, trong khi logic của tác nhân kiểm soát cuộc hội thoại, công cụ, bộ nhớ, việc chuyển tiếp và chuyển giao. Hệ thống cũng có các đường dẫn bổ sung cho các tác vụ như chuyển tiếp cho người thật, cuộc gọi đi và chuyển giao cho tác nhân chuyên biệt. 4. Xây dựng tác nhân từng bước Giọng nói và tính cách Bước đầu tiên là làm cho cuộc hội thoại cơ bản hoạt động. Tôi đã xác định những gì tác nhân nên làm, cách nó nên giao tiếp và những gì nó nên tránh. Điều này rất quan trọng vì một tác nhân giọng nói hữu ích cần nhiều hơn một LLM — nó cần các hướng dẫn và giới hạn rõ ràng. Tôi cũng muốn trải nghiệm này mang lại cảm giác tự nhiên cho người dùng Ấn Độ, bao gồm cả các cuộc hội thoại mà người dùng chuyển đổi giữa tiếng Anh và tiếng Hindi. Murf Falcon cung cấp lớp giọng nói, làm cho các phản hồi có cảm giác trò chuyện hơn nhiều so với tương tác chỉ dựa trên văn bản. Bộ nhớ Một trong những bước quan trọng tiếp theo là cung cấp bộ nhớ cho tác nhân. Thay vì coi mỗi cuộc hội thoại là hoàn toàn mới, hệ thống có thể lưu trữ thông tin người dùng liên quan và sử dụng nó khi người dùng quay lại. Điều này đã đưa ra một bài học quan trọng: bộ nhớ không chỉ là nơi lưu trữ thông tin mà còn là việc xác định đúng người dùng và truy xuất thông tin phù hợp. Trong quá trình thử nghiệm, tôi đã gặp phải các vấn đề khi việc nhận dạng người dùng và thông tin được lưu trữ không hoạt động chính xác như mong đợi. Gỡ lỗi những vấn đề này đã giúp tôi hiểu được tầm quan trọng của ID người dùng nhất quán và logic bộ nhớ rõ ràng trong một hệ thống hội thoại. Công cụ Tác nhân (agent) cũng sử dụng các công cụ thay vì hoàn toàn dựa vào kiến thức nội bộ của mô hình ngôn ngữ lớn (LLM). Điều này rất quan trọng đối với các ứng dụng thực tế vì các công cụ cho phép tác nhân làm việc với thông tin có cấu trúc và thực hiện các hành động cụ thể. Mô hình chung đã trở thành: Người dùng hỏi → Tác nhân hiểu ý định → Công cụ thích hợp được sử dụng → Kết quả được giải thích tự nhiên qua giọng nói. Cuộc gọi đi Một phần quan trọng khác của dự án là thêm chức năng gọi đi. Điều này cho phép tác nhân vượt ra ngoài một bản demo dựa trên trình duyệt và tương tác thông qua quy trình cuộc gọi điện thoại thực tế. Để chức năng này hoạt động, cần kết nối tác nhân giọng nói với luồng điện thoại và kiểm tra toàn bộ vòng đời cuộc gọi. Nó cũng đặt ra những cân nhắc mới về thông tin người gọi, nhận dạng người dùng và đảm bảo thông tin riêng tư không bao giờ bị lộ công khai. 5. Chuyển giao cho người thật Một trợ lý giọng nói không nên cố gắng tự giải quyết mọi thứ. Một trong những tính năng tôi đã thêm là khả năng chuyển giao cuộc trò chuyện khi người dùng cần sự hỗ trợ của con người. Ví dụ, nếu người dùng đạt đến một điểm mà phản hồi tự động không đủ, tác nhân có thể chuyển sang đường hỗ trợ của con người thay vì tiếp tục đoán mò. Đây là một trong những phần thú vị nhất của dự án vì nó thay đổi vai trò của AI. Mục tiêu không phải là: AI nên trả lời mọi thứ. Mục tiêu là: AI nên biết khi nào nó có thể giúp đỡ và khi nào nó nên có sự tham gia của con người. 6. Chuyển giao cho tác nhân chuyên biệt Tôi cũng đã triển khai quy trình làm việc của tác nhân chuyên biệt. Thay vì có một tác nhân khổng lồ chịu trách nhiệm cho mọi nhiệm vụ có thể, tác nhân chính có thể chuyển giao cuộc trò chuyện cho một tác nhân chuyên biệt hơn khi thích hợp. Điều này tạo ra một kiến trúc có khả năng mở rộng hơn. Ví dụ: Tác nhân chính → Hiểu người dùng → Xác định nhu cầu → Tác nhân chuyên biệt → Xử lý nhiệm vụ cụ thể Điều này gần hơn nhiều với cách một hệ thống hội thoại thực sự có thể được cấu trúc khi nó phát triển. 7. Phân tích cuộc gọi Một tính năng khác tôi đã thêm là phân tích cuộc gọi. Hệ thống ghi lại thông tin hữu ích về các cuộc gọi để các cuộc trò chuyện có thể được phân tích sau khi chúng diễn ra. Điều này giúp có thể nhìn xa hơn: “Tác nhân đã trả lời chưa?” và bắt đầu hỏi: Cuộc gọi có thành công không? Cái gì

Nguồn tin: Dev.to AI — Tác giả: Zikra. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.