Back to articles
Technology Insight

Xây dựng AI Voice Agent đàm thoại thời gian thực bằng Pipecat và LiveKit chạy trên VPS Linux

June 4, 2026

Giới thiệu xu hướng AI Voice Agent thời gian thực

Trong kỷ nguyên trí tuệ nhân tạo hiện nay, giao tiếp bằng giọng nói đang trở thành ranh giới tiếp theo của trải nghiệm người dùng chuyên nghiệp. Không còn dừng lại ở các chatbot văn bản (Text-based AI), các doanh nghiệp hiện nay đang hướng tới AI Voice Agent – các trợ lý ảo có khả năng nghe, hiểu và phản hồi bằng giọng nói tự nhiên theo thời gian thực (Real-time). Khác với hệ thống tổng đài tự động IVR truyền thống cứng nhắc, AI Voice Agent thế hệ mới sở hữu khả năng xử lý ngôn ngữ tự nhiên linh hoạt, nhận diện ngắt lời (interruption), và phản hồi với độ trễ cực thấp.

Tuy nhiên, thách thức lớn nhất khi xây dựng hệ thống voice đàm thoại trực tiếp là bài toán hạ tầng truyền thông thời gian thực và điều phối đường ống dữ liệu (Pipeline Orchestration). Bài viết này sẽ hướng dẫn bạn cách làm chủ công nghệ này bằng việc kết hợp hai framework mã nguồn mở xuất sắc nhất hiện nay: Pipecat và LiveKit, đồng thời triển khai trực tiếp trên một máy chủ ảo Linux VPS độc lập để tối ưu hóa chi phí vận hành và làm chủ hoàn toàn dữ liệu.

---

Tổng quan kiến trúc: Sự kết hợp hoàn hảo giữa Pipecat và LiveKit

Để xây dựng một tác nhân giọng nói hoạt động trơn tru với độ trễ dưới 1 giây, chúng ta cần một mô hình kết hợp chặt chẽ giữa luồng truyền tải media và luồng xử lý AI (STT -> LLM -> TTS).

1. LiveKit - Hạ tầng WebRTC mạnh mẽ

LiveKit đóng vai trò là Transport Layer (Lớp truyền tải). Được xây dựng trên giao thức WebRTC chuẩn công nghiệp, LiveKit tự động xử lý các vấn đề phức tạp về mạng như vượt NAT, phục hồi mất gói tin (packet loss), điều phối băng thông thích ứng và quản lý các phòng (rooms) giao tiếp. Tác nhân AI của chúng ta sẽ tham gia vào phòng LiveKit giống như một người dùng thông thường, nghe luồng âm thanh từ microphone của bạn và đẩy luồng âm thanh phản hồi ngược lại.

2. Pipecat - Bộ não điều phối luồng xử lý AI

Pipecat là một Python framework mã nguồn mở mạnh mẽ được thiết kế theo mô hình kiến trúc dạng chuỗi (Pipeline). Pipecat coi mọi dữ liệu (âm thanh, văn bản, hình ảnh) là các khung dữ liệu (Frames) chảy qua một đường ống tuyến tính gồm các bộ xử lý (Processors):

  • Speech-to-Text (STT): Chuyển đổi luồng âm thanh thu nhận từ LiveKit thành văn bản (Ví dụ: Deepgram, Whisper).
  • Large Language Model (LLM): Tiếp nhận văn bản, xử lý ngữ cảnh doanh nghiệp và sinh ra phản hồi (Ví dụ: OpenAI GPT-4o, Anthropic Claude).
  • Text-to-Speech (TTS): Chuyển văn bản câu trả lời thành luồng âm thanh sinh động (Ví dụ: Cartesia, ElevenLabs, Inworld AI).

Sự kết hợp này mang lại cho hệ thống khả năng xử lý ngắt lời thông minh (VAD - Voice Activity Detection). Khi người dùng lên tiếng lúc AI đang nói, Pipecat sẽ ngay lập tức phát hiện thông qua tín hiệu VAD, hủy bỏ (clear) các khung dữ liệu âm thanh cũ đang xếp hàng trong pipeline và chuyển sang trạng thái lắng nghe lượt hội thoại mới.

---

Chuẩn bị môi trường trên VPS Linux

Để đảm bảo hiệu năng xử lý media thời gian thực không bị nghẽn, bạn nên chuẩn bị một VPS chạy hệ điều hành Ubuntu Server 22.04 LTS hoặc 24.04 LTS với cấu hình tối thiểu khuyến nghị từ 2 vCPU và 4GB RAM.

Bước 1: Cập nhật hệ thống và cài đặt công cụ quản lý package

Chúng ta sẽ sử dụng công cụ quản lý gói Python hiện đại uv để tối ưu hóa tốc độ cài đặt và quản lý môi trường ảo độc lập:

sudo apt update && sudo apt upgrade -y
sudo apt install curl -y
# Cài đặt uv package manager
curl -sSL [https://astral.sh/uv/install.sh](https://astral.sh/uv/install.sh) | sh
source $HOME/.local/bin/env

Bước 2: Cài đặt LiveKit Server trên VPS

Bạn có thể tự cấu hình LiveKit Server bằng cách tải trực tiếp binary chính thức của LiveKit thông qua CLI:

curl -sSL [https://get.livekit.io/cli](https://get.livekit.io/cli) | bash
# Tạo file cấu hình livekit.yaml cơ bản
livekit-server init

Lưu ý cấu hình Production: Đối với môi trường sản xuất thực tế, bạn cần cấu hình domain và chứng chỉ SSL/TLS (Let's Encrypt) cho LiveKit Server vì giao thức WebRTC bắt buộc phải chạy qua kết nối an toàn bảo mật (wss://).

---

Xây dựng mã nguồn AI Voice Agent bằng Python & Pipecat

Hãy khởi tạo thư mục dự án mới và cài đặt các thư viện cần thiết, bao gồm Pipecat hỗ trợ tích hợp sẵn driver LiveKit.

mkdir realtime-voice-agent && cd realtime-voice-agent
uv init
uv add "pipecat-ai[livekit]" openai deepgram-sdk

Tạo file agent.py và triển khai cấu trúc mã nguồn theo mô hình hướng sự kiện của Pipecat dưới đây:

import asyncio
import os
from dotenv import load_dotenv

from pipecat.frames.frames import EndFrame
from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineTask
from pipecat.processors.aggregators.openai_llm_context import OpenAILLMContext
from pipecat.services.deepgram import DeepgramSTTService, CartesiaTTSService
from pipecat.services.openai import OpenAILLMService
from pipecat.transports.services.livekit import LiveKitTransport, LiveKitParams

load_dotenv(".env")

async def main():
    # 1. Khởi tạo Transport kết nối tới LiveKit Room
    transport = LiveKitTransport(
        url=os.getenv("LIVEKIT_URL"),
        token=os.getenv("LIVEKIT_AGENT_TOKEN"),
        room_name=os.getenv("LIVEKIT_ROOM_NAME"),
        params=LiveKitParams(audio_out_enabled=True, audio_in_enabled=True)
    )

    # 2. Khởi tạo các dịch vụ AI cấu thành Pipeline
    stt = DeepgramSTTService(api_key=os.getenv("DEEPGRAM_API_KEY"), model="nova-3")
    llm = OpenAILLMService(api_key=os.getenv("OPENAI_API_KEY"), model="gpt-4o-mini")
    tts = CartesiaTTSService(api_key=os.getenv("CARTESIA_API_KEY"), voice_id="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc")

    # Cấu hình Context và Kịch bản hệ thống cho Agent
    sys_instruction = {
        "role": "system",
        "content": "Bạn là một trợ lý ảo tổng đài chuyên nghiệp tên Minh. Hãy phản hồi ngắn gọn, tự nhiên và súc tích bằng Tiếng Việt. Tránh câu dài dòng."
    }
    context = OpenAILLMContext([sys_instruction])
    llm_user_context = context.get_user_context()

    # 3. Kết nối các mảnh ghép thành một Pipeline tuần hoàn
    pipeline = Pipeline([
        transport.input(),     # Thu âm thanh từ LiveKit
        stt,                   # Chuyển đổi thành văn bản
        llm_user_context,      # Quản lý lịch sử hội thoại
        llm,                   # Tạo câu trả lời văn bản
        tts,                   # Chuyển đổi câu trả lời thành tiếng nói
        transport.output()     # Đẩy âm thanh ngược lại phòng LiveKit
    ])

    runner = PipelineRunner()
    task = PipelineTask(pipeline)

    # Kích hoạt lời chào tự động khi Agent kết nối thành công
    @transport.event_handler("on_connected")
    async def on_connected(transport, client):
        await asyncio.sleep(1) # Chờ ổn định kết nối ổn định
        await task.queue_frame(EndFrame()) # Kích hoạt frame khởi tạo nếu cần hoặc đẩy tin nhắn mồi cho LLM

    print("AI Voice Agent đang chạy và sẵn sàng kết nối...")
    await runner.run(task)

if __name__ == "__main__":
    asyncio.run(main())

Cấu hình các biến môi trường mã nguồn

Tạo tệp tin .env lưu trữ thông tin kết nối và API Key bảo mật của bạn:

LIVEKIT_URL=wss://your-livekit-domain.com
LIVEKIT_ROOM_NAME=demo-voice-room
LIVEKIT_AGENT_TOKEN=your_generated_jwt_token
OPENAI_API_KEY=sk-proj-...
DEEPGRAM_API_KEY=...
CARTESIA_API_KEY=...
---

Vận hành hệ thống và Triển khai Production

Để đảm bảo quy trình hoạt động liên tục 24/7 trên máy chủ Linux, chúng ta không nên chạy trực tiếp script từ terminal vì ứng dụng sẽ tắt ngay khi đóng session SSH. Thay vào đó, bạn hãy đóng gói quy trình xử lý bằng công cụ quản lý tiến trình hệ thống như Systemd.

Tạo Systemd Service cho AI Agent

Tạo một file service cấu hình hệ thống bằng lệnh:

sudo nano /etc/systemd/system/ai-voice-agent.service

Thêm nội dung cấu hình chi tiết sau (Hãy điều chỉnh chính xác đường dẫn thư mục dự án của bạn):

[Unit]
Description=Pipecat LiveKit AI Voice Agent Service
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/realtime-voice-agent
ExecStart=/root/.local/bin/uv run agent.py
Restart=always
RestartSec=5
EnvironmentFile=/root/realtime-voice-agent/.env

[Install]
WantedBy=multi-user.target

Nạp lại cấu hình hệ thống và kích hoạt ứng dụng chạy nền tự động cùng hệ điều hành:

sudo systemctl daemon-reload
sudo systemctl enable ai-voice-agent.service
sudo systemctl start ai-voice-agent.service
# Kiểm tra trạng thái hoạt động thực tế
sudo systemctl status ai-voice-agent.service
---

Đánh giá hiệu năng và các chiến lược tối ưu độ trễ (Latency)

Trong các hệ thống Voice AI đàm thoại, chỉ số quan trọng nhất quyết định trải nghiệm người dùng là Time-to-First-Byte (TTFB) của luồng âm thanh phản hồi. Để đạt tới ngưỡng hội thoại tự nhiên tương tự như người thật (dưới 800ms), bạn cần áp dụng các chiến thuật tối ưu nâng cao sau trên VPS:

Thành phần pipeline Kỹ thuật tối ưu hóa giảm độ trễ
Vị trí địa lý VPS Lựa chọn nhà cung cấp hạ tầng VPS có Datacenter đặt gần với vị trí tệp khách hàng mục tiêu nhất (Ví dụ: Singapore, Việt Nam) để giảm thiểu tối đa RTT mạng của WebRTC.
Mô hình ngôn ngữ (LLM) Sử dụng các mô hình nhỏ được tối ưu hóa tốc độ cao như gpt-4o-mini hoặc kích hoạt tính năng Streaming mode để đẩy từng token văn bản sang TTS ngay khi vừa được sinh ra, thay vì chờ đợi toàn bộ câu trả lời hoàn thành.
Mã hóa âm thanh Sử dụng định dạng raw PCM hoặc nén Opus trực tiếp trên luồng truyền tải WebRTC nhằm triệt tiêu độ trễ tính toán nén/giải nén âm thanh trung gian.

Bằng việc kết hợp triết lý thiết kế hướng chuỗi linh hoạt của Pipecat cùng năng lực truyền tải vượt trội của LiveKit, việc xây dựng và sở hữu một giải pháp AI Voice Agent độc lập chuyên nghiệp trên nền tảng VPS Linux hoàn toàn nằm trong tầm tay của bạn. Hệ thống này mở ra tiềm năng ứng dụng không giới hạn trong các kịch bản tổng đài CSKH, gia sư tiếng Anh thông minh, hay trợ lý kinh doanh ảo tự động cho doanh nghiệp thời đại số.