Giới thiệu
6 phút đọc4 tháng 6, 2026131

OpenTalking: Framework mã nguồn mở để build AI Digital Human thời gian thực

Khám phá OpenTalking - framework orchestration cho AI digital human với WebRTC, LLM, TTS tích hợp, hỗ trợ private deploy và pluggable model backend.

N

Nguyễn Nhật Long

@nguyennhatlong1303

OpenTalking: Framework mã nguồn mở để build AI Digital Human thời gian thực

OpenTalking: Framework mã nguồn mở để build AI Digital Human thời gian thực

Mình để ý dạo này cộng đồng AI Việt Nam hay bàn về digital human - từ mấy cái avatar ảo cho livestream bán hàng, đến nhân vật ảo cho customer service, hay thậm chí là news anchor tự động. Vấn đề là hầu hết các giải pháp trên thị trường đều là closed-source, lock-in vào một vendor nào đó, hoặc nếu tự build thì phải ghép khá nhiều thứ lại với nhau: STT → LLM → TTS → lip sync → WebRTC stream. Cái pipeline đó nghe đơn giản nhưng làm thực tế thì đau đầu lắm.

OpenTalking ra đời để giải quyết đúng cái bài toán đó. Đây là một open-source framework được thiết kế để orchestrate toàn bộ pipeline của một AI digital human - từ lúc user nói chuyện đến lúc avatar phản hồi bằng video real-time.

Cái pipeline nó trông như thế nào

Nhìn vào architecture của OpenTalking, bạn sẽ thấy họ chia rõ ràng thành hai tầng:

Orchestration layer - đây là phần core của framework, bao gồm:

  • API server xử lý session và routing
  • Worker xử lý các task bất đồng bộ
  • Frontend WebUI để manage và test
  • WebRTC để stream audio/video về client

Digital human synthesis backend - phần này pluggable, bạn có thể chọn:

  • mock - không có video rendering, dùng để test pipeline
  • local - chạy model trực tiếp trên máy (Wav2Lip, MuseTalk, QuickTalk)
  • direct_ws - kết nối qua WebSocket tới external service
  • OmniRT - high-quality mode, dùng cho multi-GPU và distributed inference với FlashTalk

Cái hay ở đây là hai tầng này hoàn toàn độc lập. Bạn có thể deploy orchestration layer lên một máy, còn synthesis backend chạy trên máy khác có GPU mạnh hơn. Theo kinh nghiệm của mình, đây là design rất thực tế vì trong production, GPU server thường là resource đắt tiền, bạn không muốn nhét hết mọi thứ vào một chỗ.

Ba tier deployment cho ba nhu cầu khác nhau

Mình thấy cái phân tier này khá thực dụng. Không phải ai cũng có sẵn A100 hay H100 để test. Việc có mock mode giúp developer có thể develop và test toàn bộ application logic mà không cần đụng đến GPU resource - tiết kiệm chi phí đáng kể trong giai đoạn development.

TierModeUse caseYêu cầu phần cứngVideo rendering
Quick testMock/no-driverTest API, TTS, WebRTC pipelineBất kỳ máy nàoKhông
LightweightLocal (Wav2Lip/MuseTalk/QuickTalk)Demo, dev environmentConsumer GPUCó, chất lượng trung bình
ProductionOmniRT + FlashTalkMulti-card, distributedMulti-GPU serverCó, chất lượng cao

Model support - pluggable thực sự hay chỉ là marketing?

Nhìn vào cấu hình .env, bạn sẽ thấy framework support khá nhiều provider:

LLM: Tương thích OpenAI-compatible API - nghĩa là bạn dùng được Qwen (Alibaba), DeepSeek, Doubao (ByteDance), hay bất kỳ model nào expose OpenAI-compatible endpoint.

STT (Speech-to-Text):

  • DashScope với Paraformer real-time
  • SenseVoice local (không cần API key)

TTS (Text-to-Speech):

  • Edge TTS - free, không cần key, chất lượng ổn cho tiếng Trung và tiếng Anh
  • DashScope TTS - có voice cloning
  • Các provider khác

Điểm mình đánh giá cao là họ không dùng chung một API key cho tất cả - mỗi service (LLM, STT, TTS) có config riêng. Nghe có vẻ nhỏ nhặt nhưng trong thực tế, đây là điều đúng đắn. Bạn có thể dùng DashScope key cho STT nhưng dùng DeepSeek key riêng cho LLM, không bị ràng buộc vào một vendor.

Terminal
1# LLM config
2OPENTALKING_LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
3OPENTALKING_LLM_API_KEY=sk-your-key
4OPENTALKING_LLM_MODEL=qwen-flash
5
6# STT config - key riêng
7OPENTALKING_STT_DEFAULT_PROVIDER=dashscope
8OPENTALKING_STT_DASHSCOPE_API_KEY=sk-your-key
9
10# TTS - edge không cần key
11OPENTALKING_TTS_DEFAULT_PROVIDER=edge
12OPENTALKING_TTS_EDGE_VOICE=zh-CN-XiaoxiaoNeural

Developer Experience thực tế

Mình clone về và thử setup - project dùng uv để manage Python dependencies, yêu cầu Python 3.10+ (recommend 3.11), Node.js 18+, và FFmpeg.

Terminal
1git clone https://github.com/datascale-ai/opentalking.git && cd opentalking
2uv sync --extra dev --python 3.11
3source .venv/bin/activate
4cp .env.example .env

Cấu trúc thư mục khá clean:

  • apps/ - application code
  • configs/ - configuration files
  • docker/ - Docker setup
  • opentalking/ - core library
  • tests/ - test suite
  • examples/avatars/ - sample avatar configs

Có cả docker-compose.ymldocker-compose.gpu.yml riêng cho GPU environment. Điều này cho thấy team đã nghĩ đến production deployment từ đầu, không phải chỉ build cho demo.

Một điểm trừ nhỏ: documentation chủ yếu bằng tiếng Trung, có README tiếng Anh nhưng docs site đầy đủ hơn thì vẫn là tiếng Trung. Với anh em Việt Nam thì có thể cần thêm chút thời gian để đọc hiểu.

Interrupt handling - cái feature ít ai để ý nhưng quan trọng

Trong real-time conversation, một trong những thứ khó nhất là xử lý interrupt - tức là user nói chèn vào khi avatar đang nói. Nếu không handle tốt, trải nghiệm sẽ rất tệ, avatar cứ nói hết câu rồi mới phản hồi.

OpenTalking có built-in interrupt control trong pipeline. Đây là feature mình thấy hay ở chỗ nó được thiết kế ở tầng orchestration, không phải hack ở tầng application. Nghĩa là bất kể bạn dùng LLM hay TTS provider nào, interrupt behavior vẫn nhất quán.

Các use case demo họ showcase

Trong repo có demo video cho nhiều scenario:

  • Real-time mobile conversation
  • Anime talk show
  • E-commerce livestream (bán hàng)
  • News anchor
  • Singing/parody
  • Companion character

Nhìn vào danh sách này, rõ ràng target audience của họ là các team đang build product thực sự, không chỉ là research project. Use case e-commerce và news anchor đặc biệt relevant với thị trường Đông Nam Á, trong đó có Việt Nam.

Nên dùng hay không?

Thẳng thắn mà nói, OpenTalking phù hợp với bạn nếu:

Nên dùng khi:

  • Bạn đang build digital human product và muốn control toàn bộ pipeline
  • Team cần private deployment, không muốn data đi qua third-party cloud
  • Bạn muốn swap model backend mà không rewrite toàn bộ application logic
  • Cần real-time conversation với latency thấp

Chưa nên dùng nếu:

  • Bạn chỉ cần một chatbot đơn giản không cần video avatar
  • Team không có GPU resource để chạy synthesis backend
  • Documentation tiếng Trung là barrier quá lớn cho team
  • Bạn cần enterprise support ngay lập tức (project còn khá mới, 1k stars)

Một số điểm kỹ thuật đáng chú ý

Project dùng WebRTC cho audio/video streaming - đây là lựa chọn đúng cho real-time use case, tốt hơn nhiều so với HTTP streaming hay WebSocket thuần. WebRTC có built-in congestion control và adaptive bitrate, quan trọng khi deploy cho end user có network không ổn định.

Việc support cả local inference (Wav2Lip, MuseTalk) lẫn distributed inference (OmniRT) trong cùng một framework là điểm cộng lớn. Bạn có thể start nhỏ với một GPU consumer rồi scale lên multi-GPU khi cần mà không cần thay đổi application code.

License là Apache-2.0 - nghĩa là bạn có thể dùng cho commercial project mà không lo vấn đề pháp lý. Đây là điểm quan trọng với các bạn đang build startup hay product thực.

Nhìn tổng thể, OpenTalking là một project solid với architecture rõ ràng và practical. Với 1k stars và đang active development, đây là cái đáng để bookmark và theo dõi nếu bạn làm trong space AI avatar hay conversational AI. Mình sẽ thử integrate vào một side project và share kết quả sau.

NN

Nguyễn Nhật Long

@nguyennhatlong1303

Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.

Thấy hay? Chia sẻ cho bạn bè!