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.
Nguyễn Nhật Long
@nguyennhatlong1303
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 pipelinelocal- 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 serviceOmniRT- 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.
| Tier | Mode | Use case | Yêu cầu phần cứng | Video rendering |
|---|---|---|---|---|
| Quick test | Mock/no-driver | Test API, TTS, WebRTC pipeline | Bất kỳ máy nào | Không |
| Lightweight | Local (Wav2Lip/MuseTalk/QuickTalk) | Demo, dev environment | Consumer GPU | Có, chất lượng trung bình |
| Production | OmniRT + FlashTalk | Multi-card, distributed | Multi-GPU server | Có, 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.
1# LLM config2OPENTALKING_LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v13OPENTALKING_LLM_API_KEY=sk-your-key4OPENTALKING_LLM_MODEL=qwen-flash56# STT config - key riêng7OPENTALKING_STT_DEFAULT_PROVIDER=dashscope8OPENTALKING_STT_DASHSCOPE_API_KEY=sk-your-key910# TTS - edge không cần key11OPENTALKING_TTS_DEFAULT_PROVIDER=edge12OPENTALKING_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.
1git clone https://github.com/datascale-ai/opentalking.git && cd opentalking2uv sync --extra dev --python 3.113source .venv/bin/activate4cp .env.example .env
Cấu trúc thư mục khá clean:
apps/- application codeconfigs/- configuration filesdocker/- Docker setupopentalking/- core librarytests/- test suiteexamples/avatars/- sample avatar configs
Có cả docker-compose.yml và docker-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.
Nguyễn Nhật Long
@nguyennhatlong1303Nguyễ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è!