Lipsync & Blendshape
Drive real-time facial animation on 3D characters using blendshape data streamed alongside the bot's audio.
How it works
Enable lipsync
const client = useConvaiClient({
apiKey: '...',
characterId: '...',
enableLipsync: true,
blendshapeConfig: {
format: 'arkit', // or 'mha' (MetaHuman 251, default)
},
});Reading frames in the render loop
getFrameAtTime(elapsedSeconds)
getFrameWithAlpha(index)
Applying blendshapes to a Three.js mesh
Custom mappers
ARKit name mapper
Direct name-mapped characters (no mapper needed)
Set mapper after connect
BlendshapeQueue API
State checks
Frame access
Consumption
Turn stats
Interruption
Debug
Making lipsync feel natural
Fade the stream in and out
Let procedural systems own their channels
End-of-speech detection
Per-channel gains
Mouth symmetry
Apply after your animation mixer
Buffer tuning
Last updated
Was this helpful?