Skip to content

Commit 6ff1f8f

Browse files
jcgglclaude
andcommitted
feat: bump V2 CDN to 0.4.7 with emotion control (FiLM conditioning)
- V2 CDN version 0.4.5 → 0.4.7 (V1 stays at 0.4.5) - Split VERSION into VERSION_V1/VERSION_V2 in comparison example - Add V2 emotion control feature (5-dim: neutral, joy, anger, sadness, surprise) to homepage, comparison table, README, llms docs, and AI discovery configs - Update V2 package description and structured data Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 0045f1f commit 6ff1f8f

File tree

9 files changed

+18
-13
lines changed

9 files changed

+18
-13
lines changed

.well-known/agent-card.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"name": "AnimaSync",
44
"description": "Voice-driven 3D avatar animation engine for the browser. Extracts emotion from speech and generates lip sync, facial expressions, and body motion in real time — entirely client-side via Rust/WASM and ONNX inference.",
55
"url": "https://animasync.quasar.ggls.dev/",
6-
"version": "0.4.5",
6+
"version": "0.4.7",
77
"provider": {
88
"organization": "GoodGang Labs",
99
"url": "https://goodganglabs.com"

.well-known/ai-catalog.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353
},
5454
{
5555
"name": "@goodganglabs/lipsync-wasm-v2",
56-
"description": "V2 engine — 52-dim ARKit blendshapes via student distillation. Lightweight alternative.",
56+
"description": "V2 engine — 52-dim ARKit blendshapes via student distillation with 5-dim emotion control (FiLM conditioning).",
5757
"url": "https://www.npmjs.com/package/@goodganglabs/lipsync-wasm-v2"
5858
}
5959
]

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,9 @@ The production site is available at **[animasync.quasar.ggls.dev](https://animas
172172
| **Expression generation** | Built-in `IdleExpressionGenerator` (blinks + micro-expressions) | Blink injection in post-process |
173173
| **Voice activity** | Built-in `VoiceActivityDetector` (body pose switching) | Not included |
174174
| **ONNX fallback** | Heuristic mode (energy-based) | None (ONNX required) |
175+
| **Emotion control** | Not included | 5-dim FiLM conditioning (`setEmotion([neutral, joy, anger, sadness, surprise])`) |
175176
| **Body motion** | VRMA idle/speaking + VAD auto-switch (LoopPingPong, asymmetric crossfade) | VRMA idle/speaking (LoopPingPong, asymmetric crossfade) |
176-
| **Best for** | Full expression control, custom avatars | Quick integration, lightweight |
177+
| **Best for** | Full expression control, custom avatars | Emotion-aware lip sync, quick integration |
177178

178179
---
179180

agents.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@
150150
},
151151
{
152152
"action": "init-animasync",
153-
"code": "<script type=\"module\">\nconst CDN = 'https://cdn.jsdelivr.net/npm/@goodganglabs/lipsync-wasm-v2@0.4.5';\nconst { LipSyncWasmWrapper } = await import(`${CDN}/lipsync-wasm-wrapper.js`);\nconst lipsync = new LipSyncWasmWrapper({ wasmPath: `${CDN}/lipsync_wasm_v2.js` });\nawait lipsync.init();\n</script>",
153+
"code": "<script type=\"module\">\nconst CDN = 'https://cdn.jsdelivr.net/npm/@goodganglabs/lipsync-wasm-v2@0.4.7';\nconst { LipSyncWasmWrapper } = await import(`${CDN}/lipsync-wasm-wrapper.js`);\nconst lipsync = new LipSyncWasmWrapper({ wasmPath: `${CDN}/lipsync_wasm_v2.js` });\nawait lipsync.init();\n</script>",
154154
"description": "Import and initialize AnimaSync V2 from CDN"
155155
}
156156
]

examples/vanilla-avatar/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ <h2>52 ARKit Blendshapes — V2 Student</h2>
199199
// No 3D avatar, no Three.js. Pure audio → lip sync data (52-dim).
200200
// ================================================================
201201

202-
const VERSION = '0.4.5';
202+
const VERSION = '0.4.7';
203203
const CDN = `https://cdn.jsdelivr.net/npm/@goodganglabs/lipsync-wasm-v2@${VERSION}`;
204204

205205
// ── All 52 ARKit blendshape channels ──

examples/vanilla-comparison/index.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,10 @@ <h1>Anima<span>Sync</span></h1>
253253
// ================================================================
254254
// Config
255255
// ================================================================
256-
const VERSION = '0.4.5';
257-
const CDN_V1 = `https://cdn.jsdelivr.net/npm/@goodganglabs/lipsync-wasm-v1@${VERSION}`;
258-
const CDN_V2 = `https://cdn.jsdelivr.net/npm/@goodganglabs/lipsync-wasm-v2@${VERSION}`;
256+
const VERSION_V1 = '0.4.5';
257+
const VERSION_V2 = '0.4.7';
258+
const CDN_V1 = `https://cdn.jsdelivr.net/npm/@goodganglabs/lipsync-wasm-v1@${VERSION_V1}`;
259+
const CDN_V2 = `https://cdn.jsdelivr.net/npm/@goodganglabs/lipsync-wasm-v2@${VERSION_V2}`;
259260

260261
const ARKIT_52 = [
261262
'browDownLeft','browDownRight','browInnerUp','browOuterUpLeft','browOuterUpRight',

index.html

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"Facial expression generation",
6363
"Stochastic eye blink animation",
6464
"VRMA body motion with idle/speaking crossfade",
65+
"5-dim emotion control via FiLM conditioning (V2)",
6566
"VRM avatar support via Three.js",
6667
"AudioWorklet microphone streaming",
6768
"Runs entirely in the browser (no server needed)"
@@ -672,10 +673,10 @@ <h2 class="section-title">Install from npm</h2>
672673
<div class="pkg-name">@goodganglabs/lipsync-wasm-v2</div>
673674
<span class="pkg-tag pkg-tag-full">Lightweight</span>
674675
</div>
675-
<p class="pkg-desc">Student distillation model &mdash; direct 52-dim ARKit blendshape prediction. Simpler post-processing, faster integration.</p>
676+
<p class="pkg-desc">Student distillation model &mdash; direct 52-dim ARKit blendshape prediction with 5-dim emotion control (FiLM conditioning).</p>
676677
<div class="pkg-meta">
677678
<div class="pkg-meta-item">Output: <span>52-dim</span> ARKit</div>
678-
<div class="pkg-meta-item">Post: <span>crisp_mouth</span> + fade + blink</div>
679+
<div class="pkg-meta-item">Emotion: <span>5-dim</span> FiLM conditioning</div>
679680
<div class="pkg-meta-item">Peer: <span>onnxruntime-web</span></div>
680681
</div>
681682
<div class="pkg-install"><span class="dollar">$</span> npm install @goodganglabs/lipsync-wasm-v2</div>
@@ -750,7 +751,8 @@ <h2 class="section-title">Choose your engine</h2>
750751
<tr><td>Post-processing</td><td>OneEuroFilter + anatomical constraints</td><td>crisp_mouth + fade + auto-blink</td></tr>
751752
<tr><td>Idle expressions</td><td>Built-in IdleExpressionGenerator</td><td>Blink injection in post-process</td></tr>
752753
<tr><td>Voice activity</td><td>Built-in VoiceActivityDetector</td><td>&mdash;</td></tr>
753-
<tr><td>Best for</td><td>Full expression control, custom avatars</td><td>Quick integration, lightweight</td></tr>
754+
<tr><td>Emotion control</td><td>&mdash;</td><td>5-dim FiLM conditioning (neutral, joy, anger, sadness, surprise)</td></tr>
755+
<tr><td>Best for</td><td>Full expression control, custom avatars</td><td>Emotion-aware lip sync, quick integration</td></tr>
754756
</tbody>
755757
</table>
756758
</section>

llms-full.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,9 @@ interface ProcessResult {
159159
| VRM mode | getVrmFrame() + convert_arkit_to_vrm() for VRM 18-dim | getFrame() only (52-dim ARKit) |
160160
| Voice activity | Built-in VoiceActivityDetector | Not included |
161161
| ONNX fallback | Heuristic mode (energy-based) | None (ONNX required) |
162+
| Emotion control | Not included | 5-dim FiLM conditioning (neutral, joy, anger, sadness, surprise) via setEmotion()/getEmotion() |
162163
| Body motion | VRMA idle/speaking + VAD auto-switch (LoopPingPong, asymmetric crossfade) | VRMA idle/speaking (LoopPingPong, asymmetric crossfade 0.8s/1.0s) |
163-
| Best for | Full expression control, custom avatars | Quick integration, lightweight |
164+
| Best for | Full expression control, custom avatars | Emotion-aware lip sync, quick integration |
164165

165166
---
166167

llms.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ AnimaSync extracts emotion from speech and generates lip sync, facial expression
1414
## Two Engine Versions
1515

1616
- **V1 (Recommended)**: Phoneme classification, 111-dim ARKit output, built-in VAD
17-
- **V2 (Lightweight)**: Student distillation model, 52-dim ARKit output, direct prediction
17+
- **V2 (Lightweight)**: Student distillation model, 52-dim ARKit output, direct prediction, 5-dim emotion control (FiLM conditioning)
1818

1919
## Quick Start
2020

0 commit comments

Comments
 (0)