OpenAI đã xây dựng GPT-Live, một chatbot ưu tiên giọng nói có khả năng vừa nghe vừa nói đồng thời, loại bỏ những khoảng nghỉ "nói rồi mới nghe" vụng về mà hầu hết các trợ lý ảo thường dùng. Dịch vụ này hướng tới một cuộc hội thoại trôi chảy như đối thoại giữa người với người thay vì những lượt trao đổi ngắt quãng.
Tại sao mô hình cũ tạo cảm giác bị lỗi
Các trợ lý giọng nói điển hình hoạt động giống như bộ đàm: bạn nói xong một câu, thiết bị sẽ ghi âm, gửi âm thanh lên đám mây, chờ phản hồi, rồi mới phát lại. Chu trình khứ hồi đó tạo ra độ trễ đáng kể và buộc người dùng phải tạm dừng trước khi có thể ngắt lời. Đối với một thế hệ lớn lên cùng tin nhắn tức thời, sự chậm trễ này mang lại cảm giác lỗi thời.
OpenAI đã giải quyết vấn đề này bằng kiến trúc không theo lượt (turn-less). Mỗi giây, GPT-Live sẽ quyết định xem nên tiếp tục nghe, tiếp tục nói hay tạm dừng, cho phép bạn ngắt lời trợ lý ngay giữa câu trả lời hoặc đặt câu hỏi tiếp nối mà không cần chờ đợi hết một chu kỳ phản hồi.
Giải thích đơn giản về ngăn xếp full-duplex
- Tách biệt vòng lặp âm thanh và luồng suy luận – Một luồng nhanh (fast path) xử lý việc trao đổi âm thanh liên tục, trong khi một luồng chậm (slow path) thực hiện các tác vụ nặng hơn như tìm kiếm web hoặc gọi công cụ. Luồng nhanh giúp duy trì cuộc hội thoại trong khi luồng chậm đang xử lý, loại bỏ khoảnh khắc "im lặng trong khi chờ suy nghĩ" đáng sợ.
- Giao thức WARP – Các kết nối web truyền thống yêu cầu nhiều bước bắt tay (handshake) trước khi âm thanh có thể truyền đi, thường là sáu chu trình khứ hồi. Giao thức tùy chỉnh của OpenAI nén các bước đó thành một chu trình duy nhất, giúp việc bắt đầu phiên làm việc cảm giác gần như tức thời.
- Sử dụng Go thay vì Python để đảm bảo tính nhất quán của độ trễ – Nhóm phát triển đã chuyển các thành phần thời gian thực từ Python (vốn được ưa chuộng nhờ khả năng phát triển nhanh) sang Go, ngôn ngữ mang lại thời gian thực thi có thể dự đoán được hơn. Trong AI giọng nói, độ trễ trong trường hợp xấu nhất quan trọng hơn tốc độ trung bình; chỉ một sự khựng lại cũng làm mất đi sự nhập tâm, vì vậy độ trễ nhất quán là yếu tố quyết định.
- Mở rộng quy mô vượt ra ngoài GPU – Với hàng trăm triệu người dùng, nút thắt cổ chai đã chuyển từ các lõi tính toán của mô hình sang cơ sở hạ tầng xung quanh. OpenAI nhận thấy CPU và các liên kết mạng bị bão hòa trước GPU, vì vậy họ đã thêm các cơ chế định tuyến và quản lý kết nối thông minh hơn để duy trì nguồn cung cho GPU mà không làm quá tải phần còn lại của ngăn xếp.
Điều này có ý nghĩa gì đối với các nhà phát triển
- Tách biệt việc xử lý âm thanh khỏi logic nghiệp vụ – Duy trì một vòng lặp nhẹ nhàng, luôn hoạt động để xử lý đầu vào từ micro và đầu ra từ loa. Hãy đẩy bất kỳ tác vụ nào có thể chờ được—như truy vấn cơ sở dữ liệu, gọi API bên ngoài—sang một luồng hoặc dịch vụ riêng biệt.
- Ưu tiên sự ổn định của độ trễ – Hãy đo lường thời gian phản hồi, tập trung vào độ trễ trong trường hợp xấu nhất thay vì chỉ dựa vào giá trị trung bình. Các ngôn ngữ và môi trường thực thi cho phép kiểm soát chặt chẽ hơn việc lập lịch (ví dụ: Go, Rust) có thể xứng đáng với nỗ lực kỹ thuật bỏ ra thêm.
- Giảm thiểu chi phí kết nối (overhead) – Mỗi bước bắt tay bổ sung đều cộng thêm vài mili giây, và chúng sẽ tích tụ lại. Hãy gộp xác thực, thương lượng luồng (stream negotiation) và lựa chọn codec vào một lần trao đổi duy nhất, người dùng sẽ nhận thấy sự khác biệt.
Những đánh đổi và câu hỏi còn bỏ ngỏ
Thiết kế full-duplex làm tăng thêm sự phức tạp.
