AI HUB에서 받은 음성 기반 3D 발화 얼굴 데이터 자료 정리
| 대상 | 항목 | 제공형식 | 개수 |
|---|---|---|---|
| 원청데이터 | 오디오 데이터 | wav | 5000 |
| 라벨데이터 | 3D 메쉬 데이터 | Obj | 57만 개 이상 |
| 라벨데이터 | 메타 데이터 | Json | 57만 개 이상 |
| 라벨데이터 | 텍스처 데이터 | Png | 10개 |
Code
AI 학습모델 파일
도커 이미지
1.stage1_vocaset.py
주요 클래스
1. VQAutoEncoder – 전체 모델 클래스
입력된 3D 얼굴 모션을 인코딩 -> 양자화-> 디코딩을 통한 재구성
2. TransformerEncoder
3D 정점 정보를 Transformar 입력에 맞게 변환 후 인코딩 수행
구성 요소별 역할 요약
Wav2Vec2 기반 오디오 인코더
원시 오디오(raw waveform)를 프레임 단위의 feature 시퀀스로 변환
사전학습된 Wav2Vec2Model을 사용
출력은 [batch, frame, feature_dim] 형태의 시계열 특징
스타일 임베딩 (Style Embedding)
one-hot으로 입력된 화자 정보 → 학습 가능한 벡터로 변환
스타일 간 선형 보간(one_hot2, weight)도 지원
Transformer 디코더
음성 특징을 memory로 사용하고, 과거의 정점 시퀀스를 입력으로 받아다음 프레임 예측
시계열 예측을 위한 attention mask(biased_mask)와 enc-dec cross attention 사용
정점 시퀀스 매핑 및 위치 인코딩
이전에 생성된 정점(혹은 ground-truth)을 latent feature로 매핑
주기 기반 위치 인코딩(PeriodicPositionalEncoding) 적용
VQ-AutoEncoder 호출 (Stage1)
stage1_vocaset.py에서 정의된 VQAutoEncoder 사용
Transformer 출력 → quantize → decode를 통해 3D 정점 시퀀스 복원
전체 흐름
[ Audio ]
↓ wav2vec2
[ Audio Feature ] ←──┐
│
[ Style Embedding ] ─┼──> Transformer Decoder (Auto-regressive)
[ Prev Vertices ] ───┘
↓
[ Latent Feature ]
↓ VQ
[ Quantized Feature ]
↓ VQ Decoder (Stage1)
[ Predicted 3D Vertices ]
↓ + Template
[ Final Output ]
-> 일시적 해결방안
CodeTalker에서 제공하는 test용 가중치 사용
정확한 출력을 기대하긴 힘듬
기능적으로 테스트 하는데는 문제가 없을 것으로 예상