facial-and-lipsync

Generate viseme-driven BlendShape lip sync animations from voice-over audio in Summer Engine.

66|4|Updated Feb 26, 2026
One-click install
npx skills add https://github.com/SummerEngine/summer --skill facial-and-lipsync-summerengine
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: facial-and-lipsync
Source: https://github.com/SummerEngine/summer/tree/main/library/skills/facial-and-lipsync
Command: npx skills add https://github.com/SummerEngine/summer --skill facial-and-lipsync-summerengine

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Characters with voice-over dialogue look lifeless when their mouths don't move with the words. This Skill turns an audio file into a replayable, sample-accurate lip sync animation by extracting phonemes, mapping them to visemes, and baking BlendShape tracks into the engine's Animation system. ## Core Features & Use Cases - Phoneme-to-viseme pipeline: Run Rhubarb Lip Sync (or a Whisper-phoneme cloud fallback) on VO audio, then bake the mouth cues into an Animation resource with one BlendShape track per ARKit viseme. - AnimationTree integration: Wire the baked clip into a OneShot node so lipsync fires in sync with AudioStreamPlayer3D playback from your dialogue system. - Emotional expression layer: Add authored BlendShape expressions (smile, surprise, brow raises) on an additive layer orthogonal to lipsync, driven by gameplay events. - Use Case: An NPC says "Welcome to the village, traveler." Generate the line with text-to-speech, extract mouth cues with Rhubarb, bake the viseme animation, and the character's mouth moves in sync with the audio. ## Quick Start Ask your agent to make the NPC's mouth move with a voice line by extracting phonemes from the audio and baking a viseme BlendShape animation onto the character's head mesh.

Frequently Asked Questions about facial-and-lipsync

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make a game character's mouth move with voice-over audio?

Extract phonemes from the audio with Rhubarb Lip Sync, map the mouth cues to ARKit visemes, and bake them into a BlendShape Animation resource. Play it through an AnimationTree OneShot node fired on the same frame as the audio playback.

What tool should I use for phoneme extraction for game lipsync?

Rhubarb Lip Sync is the recommended open-source CLI for game-dev lipsync, outputting JSON mouth cues that map cleanly to visemes. Alternatives include Whisper-phoneme models on Replicate or Hugging Face, which are more accurate on noisy audio but cost per minute.

Does lipsync work if my character mesh has no BlendShapes?

No. Facial animation requires shape keys on the head mesh, and generation pipelines cannot add them retroactively. Options are authoring shape keys in Blender and re-importing, using an ARKit-52 source mesh, or falling back to body-language animation instead.

Why does my lipsync drift behind the audio?

Audio output latency on some platforms runs 30-60ms, and firing audio and animation on different frames adds ~16ms drift. Start both in the same function on the same frame, or pre-shift the animation by the platform's known latency.

Can I use Rhubarb Lip Sync for non-English or sung dialogue?

Rhubarb works best on English; for other languages pass --recognizer phonetic or use a multilingual Whisper-phoneme model. For singing, manually keyframe consonants and let extracted vowels fill in, since consonant timing is loose.

Why do visemes pop on and off instead of blending smoothly?

The animation tracks are using nearest-neighbor interpolation instead of linear. Set each track's interpolation to Animation.INTERPOLATION_LINEAR so viseme weights ramp smoothly between keyframes.