Kannguyen/avatar-realtime-voice-chat-research
Nghiên cứu: Tích hợp Avatar Head cho Real-time Voice Chat Tài liệu nghiên cứu các dự án tương tự và nguồn avatar thay thế để tích hợp vào ứng dụng real-time voice chat. Mục lục 1. Các dự án tương tự 1.1 Production-Ready 1.2 Frameworks khác 1.3 AI Video Generation (cần GPU server) 2. Nguồn Avatar thay thế 2.1 Tương thích trực tiếp (drop-in) 2.2 VRM Format (cần convert qua Blender) 2.3 Marketplace chung 3. Yêu cầu kỹ thuật cho Avatar 4. Cách tích hợp với… See the full description on the dataset page: https://huggingface.co/datasets/Kannguyen/avatar-realtime-voice-chat-research.
Nghiên cứu: Tích hợp Avatar Head cho Real-time Voice Chat
Tài liệu nghiên cứu các dự án tương tự và nguồn avatar thay thế để tích hợp vào ứng dụng real-time voice chat.
Mục lục
- 1. Các dự án tương tự
- 1.1 Production-Ready
- 1.2 Frameworks khác
- 1.3 AI Video Generation (cần GPU server)
- 2. Nguồn Avatar thay thế
- 2.1 Tương thích trực tiếp (drop-in)
- 2.2 VRM Format (cần convert qua Blender)
- 2.3 Marketplace chung
- 3. Yêu cầu kỹ thuật cho Avatar
- 4. Cách tích hợp với Voice Chat
- 5. So sánh tổng hợp
- 6. Khuyến nghị
1. Các dự án tương tự
1.1 Production-Ready
1.2 Frameworks khác
1.3 AI Video Generation (cần GPU server)
Khác paradigm: tạo video 2D từ ảnh tĩnh + audio, cần GPU mạnh, không real-time tương tác.
2. Nguồn Avatar thay thế
2.1 Tương thích trực tiếp (drop-in)
Các nguồn này có sẵn 52 ARKit blendshapes + 15 Oculus viseme blendshapes, dùng được ngay không cần chỉnh sửa.
2.2 VRM Format (cần convert qua Blender)
TalkingHead có hướng dẫn convert VRM → GLB chi tiết.
2.3 Marketplace chung
⚠️ Cảnh báo: Đa số avatar trên các marketplace này KHÔNG có viseme blendshapes. Cần thêm thủ công bằng Faceit Blender add-on (~$35).
3. Yêu cầu kỹ thuật cho Avatar
Để avatar hoạt động với lip-sync trong TalkingHead, bắt buộc phải có:
3.1 Rig (Xương)
- Mixamo-compatible rig (cấu trúc xương chuẩn Mixamo)
3.2 ARKit Blend Shapes (52 shapes)
Biểu cảm khuôn mặt:
eyeBlinkLeft, eyeBlinkRight, eyeLookDownLeft, eyeLookDownRight,
eyeLookInLeft, eyeLookInRight, eyeLookOutLeft, eyeLookOutRight,
eyeLookUpLeft, eyeLookUpRight, eyeSquintLeft, eyeSquintRight,
eyeWideLeft, eyeWideRight, jawForward, jawLeft, jawRight, jawOpen,
mouthClose, mouthFunnel, mouthPucker, mouthLeft, mouthRight,
mouthSmileLeft, mouthSmileRight, mouthFrownLeft, mouthFrownRight,
mouthDimpleLeft, mouthDimpleRight, mouthStretchLeft, mouthStretchRight,
mouthRollLower, mouthRollUpper, mouthShrugLower, mouthShrugUpper,
mouthPressLeft, mouthPressRight, mouthLowerDownLeft, mouthLowerDownRight,
mouthUpperUpLeft, mouthUpperUpRight, browDownLeft, browDownRight,
browInnerUp, browOuterUpLeft, browOuterUpRight, cheekPuff,
cheekSquintLeft, cheekSquintRight, noseSneerLeft, noseSneerRight,
tongueOut3.3 Oculus Viseme Blend Shapes (15 shapes)
Lip-sync (đồng bộ môi):
viseme_sil - Im lặng
viseme_PP - P, B, M
viseme_FF - F, V
viseme_TH - Th
viseme_DD - D, T, N
viseme_kk - K, G
viseme_CH - Ch, J, Sh
viseme_SS - S, Z
viseme_nn - N, L
viseme_RR - R
viseme_aa - A
viseme_E - E
viseme_I - I
viseme_O - O
viseme_U - U3.4 Format
- GLB (GLTF Binary) — bắt buộc
4. Cách tích hợp với Voice Chat
4.1 Architecture
┌──────────────┐ WebRTC ┌──────────────┐
│ Voice Chat │ ──────────────► │ Remote Audio │
│ Client │ │ Stream │
└──────────────┘ └──────┬───────┘
│
▼
┌───────────────┐
│ HeadAudio │
│ (AudioWorklet)│
│ MFCC → Viseme │
└──────┬────────┘
│
▼
┌───────────────┐
│ TalkingHead │
│ (Three.js) │
│ 3D Avatar │
└───────────────┘4.2 Code tích hợp
import { TalkingHead } from "@met4citizen/talkinghead";
import { HeadAudioNode } from "./modules/headaudio.mjs";
// 1. Khởi tạo avatar
const container = document.getElementById("avatar-container");
const head = new TalkingHead(container, {
ttsEndpoint: "/api/tts", // hoặc dùng ElevenLabs, Azure, etc.
modelFPS: 30,
});
// Load avatar GLB
await head.showAvatar({
url: "./models/avatar.glb",
body: "F", // "F" = female, "M" = male
avatarMood: "neutral",
lipsyncLang: "en", // ngôn ngữ lip-sync
});
// 2. Setup audio worklet cho lip-sync từ audio stream
await head.audioCtx.audioWorklet.addModule("./modules/headworklet.mjs");
const headAudio = new HeadAudioNode(head.audioCtx);
await headAudio.loadModel("./dist/model-en-mixed.bin");
// 3. Kết nối WebRTC remote audio stream
const remoteStream = peerConnection.getRemoteStreams()[0]; // WebRTC stream
const source = head.audioCtx.createMediaStreamSource(remoteStream);
source.connect(headAudio);
// 4. Map viseme values → avatar blendshapes
headAudio.onvalue = (key, value) => {
head.setMorphTarget(key, value);
// key = "viseme_aa", value = 0.0 ~ 1.0
};
// 5. Animation loop
function animate(dt) {
headAudio.update(dt);
requestAnimationFrame(animate);
}
requestAnimationFrame(animate);4.3 Lip-sync Libraries
5. So sánh tổng hợp
5.1 Theo paradigm
5.2 Theo nguồn avatar
6. Khuyến nghị
Phương án nhanh nhất
TalkingHead + HeadAudio + avatar từ Ready Player Me - Cài đặt: npm install @met4citizen/talkinghead - Tạo avatar: readyplayer.me (2 phút) - Kết nối WebRTC audio → HeadAudio → lip-sync - Toàn bộ client-side, không cần GPU serverPhương án avatar đẹp nhất
Avaturn (photo-realistic từ selfie) hoặc MPFB (parametric trong Blender)
Phương án anime
VRoid Studio → convert VRM → GLB theo hướng dẫn TalkingHead
Phương án nhiều avatar có sẵn
Microsoft RocketBox — 115+ characters, MIT license, free
Tài liệu tham khảo
- TalkingHead GitHub
- HeadAudio GitHub
- HeadTTS GitHub
- TalkingHead npm
- Ready Player Me
- Avaturn
- MPFB
- VRoid Studio
- Microsoft RocketBox
- Awesome Talking Head Generation
<!-- ml-intern-provenance -->
Generated by ML Intern
This dataset repository was generated by ML Intern, an agent for machine learning research and development on the Hugging Face Hub.
- Try ML Intern: https://smolagents-ml-intern.hf.space
- Source code: https://github.com/huggingface/ml-intern
Usage
from datasets import load_dataset
dataset = load_dataset("Kannguyen/avatar-realtime-voice-chat-research")