Xây dựng Voice AI Agent thời gian thực với WebRTC và Whisper Live: Độ trễ dưới 500ms
Ranh giới giữa cuộc gọi tự nhiên và cảm giác robot giật lag Để một cuộc trò chuyện bằng giọng nói giữa người và AI diễn ra tự nhiên, tổng độ trễ từ lúc người dùng dứt lời cho tới khi AI bắt đầu cất g…
☰ Mục lục bài viết (5 phần) Mở / Đóng mục lục
Ranh giới giữa cuộc gọi tự nhiên và cảm giác robot giật lag#
Để một cuộc trò chuyện bằng giọng nói giữa người và AI diễn ra tự nhiên, tổng độ trễ từ lúc người dùng dứt lời cho tới khi AI bắt đầu cất giọng phát âm phải dưới 600ms.
Các kiến trúc truyền thống (Ghi âm toàn bộ audio $\rightarrow$ Gửi file qua REST $\rightarrow$ STT $\rightarrow$ LLM $\rightarrow$ TTS) thường mất từ 2.5 đến 4 giây, khiến cuộc đối thoại trở nên gượng gạo.
Dưới đây là kiến trúc Streaming song công (Full-duplex) sử dụng WebRTC, Whisper Live và FastTTS.
Sơ đồ luồng dữ liệu Streaming qua WebRTC#
Browser (Microphone)
==[WebRTC Audio Track]==>
Media Server (LiveKit / Pion)
==[PCM Chunks]==>
Whisper Live (STT Streaming)
==[Text Stream]==>
Claude / GPT-4o (Token Stream)
==[Text Chunks]==>
ElevenLabs / Kokoro TTS (Audio Stream)
==[WebRTC Return Track]==>
Browser (Speaker)
Kỹ thuật tối ưu mấu chốt: Early Synthesis#
Không chờ LLM sinh xong toàn bộ câu trả lời mới đẩy sang TTS. Ngay khi LLM sinh được mệnh đề đầu tiên (gặp dấu phẩy hoặc dấu chấm câu), đẩy ngay đoạn text ngắn đó sang TTS để bắt đầu phát thanh:
// Client-side lắng nghe WebRTC Data Channel
peerConnection.ontrack = (event) => {
const audioElement = document.getElementById('remote-voice') as HTMLAudioElement;
audioElement.srcObject = event.streams[0];
};
Trải nghiệm thực tế#
Khi tối ưu đồng thời cả STT streaming và TTS streaming, độ trễ phản hồi (Voice Latency) giảm ngoạn mục xuống còn 420ms - 520ms, người nghe hầu như không nhận ra độ trễ của máy tính!
Góc thảo luận#
Có anh em nào đang làm ứng dụng AI Voice Call bot không? Anh em chuộng dùng LiveKit Cloud hay tự host media server riêng?
Xem thêm nội dung liên quan:
Thảo luận
1 phản hồi
Tham gia thảo luận
Bài liên quan trong #AI & Trợ lý lập trình
-
Lập trình viên có bị thay thế bởi AI không? 5 kỹ năng bắt buộc phải nâng cấp trong 2 năm tới
Hoàng Nam (Tech Lead) · 💬 1 -
Áp dụng Model Context Protocol (MCP) của Anthropic để kết nối AI với Postgres và Docker
Hoàng Nam (Tech Lead) · 💬 1 -
So sánh mô hình Embedding đa ngữ: OpenAI text-embedding-3 vs BGE-M3 vs Cohere
Minh Trí (AI Engineer) · 💬 1 -
Cấu hình Rate Limiting ở tầng Nginx và API Gateway: Chống DDOS Layer 7 hiệu quả
Đức Huy (DevOps Specialist) · 💬 1 -
Tokenization tiếng Việt của các LLM: Tại sao chi phí tiếng Việt đắt gấp 3 lần tiếng Anh?
Minh Trí (AI Engineer) · 💬 1