# AnimaSync V3 데이터셋 설명서

이 문서는 AnimaSync V3 학습용 데이터셋의 바디 모션을 기록하시는 디자인팀과 모션 액터분들을 위한 가이드입니다.

Excel 시트 (`dataset_export.xlsx`)를 열고 이 문서를 옆에 두고 작업해 주세요.

---

## 0. 한 줄 요약

각 행에 적힌 **대사 + 감정 + 강도(VAD)** 정보를 보고, 함께 제공되는 **mp3 음성**을 들으면서 그에 어울리는 **바디 모션**을 녹화하시면 됩니다.

---

## 1. AnimaSync가 뭔가요?

- **AnimaSync** = 음성을 입력하면 3D 아바타의 얼굴 표정, 입 모양, 머리 움직임을 자동으로 만들어 주는 엔진입니다.
- 지금 만드는 V3 버전은 여기에 더해 발화의 **감정**까지 정확하게 표현하는 것이 목표입니다.
- 이 데이터셋은 V3 모델이 학습할 정답 데이터를 만들기 위한 재료입니다.
- 얼굴 쪽은 이미 자동 생성 중이고, 디자인팀이 추가로 작업하시는 **바디 모션**은 별도 트랙으로 학습됩니다.

---

## 2. Excel 시트 구조

`dataset_export.xlsx` 파일을 열면 4개 컬럼이 보입니다.

| 컬럼 | 이름 | 설명 |
| --- | --- | --- |
| A | # | 데이터셋 번호 (1 ~ 2,013) |
| B | scenario | 시나리오 ID + 상황 + 말투 |
| C | 내용 | turn 단위 대화. 화자 · 대사 · 감정 · VAD |
| D | mp3 path | turn별 음성 파일 경로 (repo 루트 기준 상대경로) |

### 행 읽는 법

C 컬럼과 D 컬럼은 **줄(turn) 단위로 매칭**됩니다. C의 첫 번째 줄 = D의 첫 번째 줄에 해당하는 mp3 파일.

예시 (1행, daily_003)

C 컬럼:

```
A: 점심 뭐 먹죠   [struggle  V=-0.18 A=+0.01 D=-0.10]
B: 음... 모르겠어요 매일 같은 거 먹어서   [struggle  V=-0.27 A=+0.04 D=-0.20]
A: 새로 생긴 태국 음식점 어때요?   [neutral  V=+0.07 A=+0.01 D=+0.12]
```

D 컬럼:

```
data/audio_preview/daily_003_t0_struggle.mp3   ← A의 첫 대사 음성
data/audio_preview/daily_003_t1_struggle.mp3   ← B의 첫 대사 음성
data/audio_preview/daily_003_t2_neutral.mp3    ← A의 두 번째 대사 음성
```

---

## 3. 시나리오 종류 3가지

| 종류 | 개수 | 화자 수 | turn 수 | 설명 |
| --- | --- | --- | --- | --- |
| solo_ | 253개 | 1명 | 1 turn | 짧은 한 문장. 감정 하나만 표현 |
| daily_ | 1,397개 | 2명 (A·B) | 2~6 turn | 일상 대화. 화자가 교대로 발화 |
| long_ | 363개 | 1명 | 3~4 turn | 모놀로그. 한 화자가 연속 발화하지만, 문장 단위로 turn이 나뉘어 있고 turn마다 감정이 바뀔 수 있음 |

### 시트 맨 위 10행은 솔로(solo) 예시 모음

처음 10개 행은 일부러 **다양한 감정의 1문장 솔로 시나리오**를 모아둔 워밍업/레퍼런스 영역입니다.

| # | 시나리오 | 감정 | 의도 |
| --- | --- | --- | --- |
| 1 | solo_007 | neutral | 가장 평범한 baseline |
| 2 | solo_027 | joy | 차분한 긍정 |
| 3 | solo_011 | sadness | 가라앉는 부정 |
| 4 | solo_037 | anger | 강한 부정 + 외향적 |
| 5 | solo_073 | surprise | 갑작스러운 각성 |
| 6 | solo_045 | excitement | 강한 긍정 + 외향적 |
| 7 | solo_116 | crying | 슬픔의 극단 |
| 8 | solo_052 | laughter | 기쁨의 극단 |
| 9 | solo_020 | shy | 위축된 긍정 |
| 10 | solo_069 | fluster | 당황·긴장 |

이 10개를 먼저 작업해 보시면 감정 → 모션 매핑 감이 잡힙니다. 그 다음 11번부터 본격 데이터(daily/long)로 들어가시면 됩니다.

---

## 4. 같은 시나리오의 변형판 (_p0, _p1)

시트를 보시면 같은 상황의 시나리오가 약간씩 다른 버전으로 여러 번 나옵니다.

```
daily_003       → 원본
daily_003_p0    → 같은 상황을 다른 단어로 표현 (paraphrase 0)
daily_003_p1    → 같은 상황을 또 다른 단어로 표현 (paraphrase 1)
```

### 왜 이렇게 했나요?

같은 상황·감정이라도 사람마다 표현하는 단어가 다릅니다. 모델이 단어 자체가 아니라 **감정과 의미**를 학습하려면 같은 의미의 다른 표현을 보여줘야 하기 때문이에요. 이걸 **데이터 증강(augmentation)**이라고 합니다.

### 작업하실 때 알아두실 점

- daily_003, daily_003_p0, daily_003_p1은 같은 상황의 변형이므로 **거의 비슷한 바디 모션**으로 녹화하셔도 됩니다.
- 단어가 다를 뿐 감정과 VAD 값은 거의 동일하므로 **모션을 매번 새로 고민하실 필요는 없어요.** 같은 감정의 모션 베이스를 재활용하시고 미세한 변화만 주시면 충분합니다.
- 시간이 부족하시면 원본(daily_003)만 정성 들여 녹화하시고, _p0/_p1은 비슷한 톤으로 빠르게 녹화하시는 것도 방법입니다.

---

## 5. 감정 16종 설명

V3는 **5개 베이스 감정 + 11개 세부 감정 = 총 16개**를 다룹니다.

### 5-1. 베이스 감정 (Base, 5종)

| emotion | 한국어 | 핵심 느낌 | 모션 힌트 |
| --- | --- | --- | --- |
| neutral | 평온 | 평소 상태 | 자연스러운 기본 자세, 작고 일상적인 손짓 |
| joy | 기쁨 | 따뜻하고 안정된 긍정 | 어깨 살짝 올라감, 입꼬리, 부드러운 손짓 |
| sadness | 슬픔 | 가라앉음 | 어깨 처짐, 시선 아래로, 동작 느려짐 |
| anger | 분노 | 강한 부정 + 공격성 | 어깨 단단함, 손짓 강하고 빠름, 턱 긴장 |
| surprise | 놀람 | 예상 밖 자극 | 순간 정지, 눈썹 위로, 몸 살짝 뒤로 |

### 5-2. 세부 감정 (Sub, 11종)

| emotion | 한국어 | 핵심 느낌 | 모션 힌트 |
| --- | --- | --- | --- |
| excitement | 흥분/들뜸 | joy의 강한 버전 | 빠른 손짓, 발걸음 가벼움, 자세 확장 |
| laughter | 웃음 | 폭발적 즐거움 | 어깨 들썩, 머리 뒤로, 손으로 입/배 |
| gratitude | 감사 | 긍정 + 상대 향함 | 가벼운 인사, 손 모음, 부드러운 시선 |
| agreement | 동의·수긍 | 긍정 + 호응 | 끄덕임, 손 펼침, 상대 향한 자세 |
| shy | 수줍음 | 긍정인데 위축됨 | 시선 피함, 몸 살짝 움츠림, 손가락 만지기 |
| fluster | 당황 | 갑작스러운 각성 + 통제 잃음 | 손이 허둥댐, 시선 흔들림, 자세 어색 |
| crying | 우는 중 | sadness의 강한 버전 | 어깨 떨림, 얼굴 가림, 몸 작아짐 |
| struggle | 고민·답답함 | 정체된 부정 | 한숨, 머리 짚음, 자세 무너짐 |
| sulk | 삐짐 | 약한 anger + 회피 | 팔짱, 외면, 짧은 호흡 |
| refusal | 거절 | 부정 + 단호함 | 손바닥 들기, 고개 좌우, 거리 두기 |
| apology | 사과 | 위축 + 미안함 | 고개 숙임, 손 모음, 어깨 움츠림 |

위 모션 힌트는 어디까지나 **출발점 가이드**입니다. 실제 발화 내용과 mp3의 톤을 들어보시고 자연스럽게 표현해 주세요.

---

## 6. VAD가 뭔가요? (가장 중요한 섹션)

각 turn에는 [감정  V=±0.00 A=±0.00 D=±0.00] 형태로 3개의 숫자가 붙어 있습니다. 이걸 **VAD**라고 합니다.

같은 감정이어도 강도와 색깔이 다른데, 그 차이를 -1 ~ +1 범위의 **3개 축**으로 표현한 게 VAD입니다.

### 6-1. 3개 축의 의미

| 축 | 풀네임 | 의미 |
| --- | --- | --- |
| V | Valence | 긍정/부정 |
| A | Arousal | 활성도/에너지 |
| D | Dominance | 주도성/통제력 |

### 6-2. 각 축의 값 범위

| 값 | V (Valence) | A (Arousal) | D (Dominance) |
| --- | --- | --- | --- |
| -1 (낮음) | 매우 부정적 | 매우 차분, 졸림 | 위축, 통제 받는 입장 |
| 0 (중간) | 중립 | 평상시 | 중립 |
| +1 (높음) | 매우 긍정적 | 매우 격렬, 흥분 | 자신감, 통제하는 입장 |

### 6-3. 모션 액터를 위한 VAD 활용 팁

| 축 | 모션에 미치는 영향 |
| --- | --- |
| V (긍정/부정) | 자세의 **개방성** — V가 높으면 자세 열림(어깨 펴짐), 낮으면 자세 닫힘(어깨 말림) |
| A (에너지) | 동작의 **속도와 크기** — A가 높으면 빠르고 큼, 낮으면 느리고 작음 |
| D (주도성) | **공간 점유** — D가 높으면 가슴 펴고 손짓 크게, 낮으면 몸 작아지고 손 모음 |

### 6-4. 같은 감정이라도 VAD가 다르면 모션이 달라집니다

예시: 둘 다 sadness 감정인데 VAD가 다른 경우

- sadness  V=-0.45  A=-0.38  D=-0.23 → 차분히 가라앉은 슬픔 (조용히 한숨)
- sadness  V=-0.78  A=-0.61  D=-0.34 → 더 깊고 무력한 슬픔 (어깨 더 처지고 시선 바닥)

→ **VAD 값의 절댓값이 클수록 더 강하게 표현**해 주세요.

---

## 7. MP3 파일 안내

### 7-1. 파일 위치

```
/dataset/AnimaSync-mic-fix/data/audio_preview/
```

시트의 D 컬럼에 적힌 경로(예: data/audio_preview/daily_003_t0_struggle.mp3)가 그대로 파일명입니다.

### 7-2. 파일명 규칙

```
{시나리오ID}_t{turn번호}_{감정}.mp3
```

예시

- daily_003_t0_struggle.mp3 → daily_003 시나리오, 0번째 turn, struggle 감정
- solo_073_t0_surprise.mp3 → solo_073 시나리오, 0번째 turn, surprise 감정
- long_001_t2_anger.mp3 → long_001 시나리오, 2번째 turn, anger 감정

### 7-3. 음성 특징

- TTS(Text-to-Speech)로 생성된 합성 음성입니다 (ElevenLabs).
- 대본의 감정에 맞춰 톤·속도·강세가 조절되어 있습니다.
- **mp3를 먼저 들어보시고** 모션을 결정하시는 것을 권장합니다. 같은 텍스트라도 음성의 강세에 따라 자연스러운 모션이 달라지니까요.

---

## 8. 작업 흐름 권장 순서

1. **시트 1~10행 (solo 워밍업)부터 시작**
    - 다양한 감정을 한 문장으로 빠르게 경험
    - VAD 값과 실제 모션의 대응 감각 익히기
2. **그 다음 daily 시나리오 (11~)**
    - 화자 A·B 교대 → 두 명이 녹화하거나 한 명이 두 역할 하시면 됩니다
    - 같은 시나리오의 _p0, _p1은 비슷한 모션으로 빠르게 처리
3. **마지막에 long 시나리오 (모놀로그)**
    - 한 화자가 여러 문장 → turn마다 감정이 바뀌는 경우 많음
    - 감정 전환 구간의 자연스러운 transition이 중요

---

## 9. 자주 묻는 질문 (FAQ)

### Q1. 시나리오마다 매번 새로 모션을 만들어야 하나요?

아니에요. 같은 시나리오의 _p0, _p1 변형판은 거의 비슷한 모션으로 처리하셔도 됩니다. 같은 감정 + 비슷한 VAD를 가진 다른 시나리오들도 모션 베이스를 재활용하시면 시간 절약됩니다.

### Q2. 화자 A와 B의 모션을 다르게 해야 하나요?

네. 두 명의 다른 사람이라고 생각하시고 자세·습관을 약간씩 다르게 가져가시면 좋습니다. 같은 시나리오 안에서는 두 화자의 모션이 일관되게 유지되어야 합니다 (A는 끝까지 A의 스타일).

### Q3. VAD 숫자가 너무 작으면 (예: V=+0.05) 어떻게 표현하나요?

절댓값이 0.2 이하면 거의 중립에 가까운 신호입니다. 모션도 절제되고 작게 표현해 주세요. 절댓값이 0.5 이상이면 명확하게 강하게 표현해 주세요.

### Q4. 16개 감정이 너무 많아요. 비슷한 감정끼리 묶어도 되나요?

작업 효율을 위해서는 OK입니다. 예: joy, gratitude, agreement는 비슷한 긍정 톤이라 모션 베이스를 공유해도 자연스럽습니다. 단, **VAD 값이 크게 다른 경우엔 강도를 꼭 구분**해 주세요 (예: joy V=+0.3 vs excitement V=+0.7).

### Q5. mp3가 없거나 재생이 안 돼요.

D 컬럼에 (missing) 표시가 붙어 있으면 해당 파일이 누락된 것입니다. 엔지니어링팀에 알려주세요. 재생만 안 되면 일반 mp3 플레이어로 열어보시거나 VLC를 권장합니다.

### Q6. 같은 시나리오의 paraphrase 버전(_p0, _p1)이 너무 많아 보여요. 다 작업해야 하나요?

이상적으로는 모두, 현실적으로는 원본만 정성 들여, paraphrase는 간단한 변형으로 해주셔도 됩니다. 모델 입장에선 같은 감정·의미의 약간 다른 모션 샘플이 학습 다양성을 높여주지만, 시간 제약이 있으시면 원본 우선으로 가셔도 무방합니다.

---

## 10. 데이터셋 통계 요약

| 항목 | 수치 |
| --- | --- |
| 총 시나리오 수 | 2,013개 |
| solo (1문장) | 253개 (12.6%) |
| daily (다중 화자 대화) | 1,397개 (69.4%) |
| long (모놀로그) | 363개 (18.0%) |
| 총 turn 수 (mp3 개수) | 약 6,800개 |
| 감정 종류 | 16개 |
| VAD 차원 | 3축 (V/A/D), 각 -1 ~ +1 |

---

## 문의

데이터 누락, 파일 깨짐, mp3 재생 문제, 또는 이 문서에 없는 사례가 발견되면 **이승은 (seungeun@goodganglabs.com)** 에게 알려주세요.
