NewLip sync API

Oculus Lipsync is end-of-life: alternatives for web, Unity and Unreal

Meta has retired the Oculus Lipsync plugin. What it did, Meta's own replacement, and the options for lip sync on the web, in Unity and in Unreal, compared.

3 November 2026 · 3 min read · Lobbyface

For years, Oculus Lipsync (OVRLipSync) was the free default for making characters talk in Unity and Unreal. It listened to audio and produced weights for 15 visemes in real time. Meta's developer documentation now marks the plugin as end-of-life: it will not receive further updates or support (Meta developer docs).

Projects keep working as long as the old plugin builds with your engine version, but it won't follow new engine releases, so it's worth planning a replacement.

What Oculus Lipsync produced

Each frame, a weight for 15 visemes: sil (silence), PP (p, b, m), FF (f, v), TH, DD, kk, CH, SS, nn, RR, aa, E, ih, oh and ou. Meta describes the set as language-agnostic and chosen for the widest range of lip movement. Characters built for it have one blend shape per viseme, often named viseme_PP, viseme_aa and so on.

Meta's own path: the Movement SDK

Meta points developers to its Movement SDK, whose audio-based face tracking delivers the same 15 visemes through the XR_META_face_tracking_visemes OpenXR extension. If your app is built for Quest headsets, this is the closest drop-in. It is tied to Meta's platform, so it doesn't help a website or a non-Meta device.

The alternatives

Option Input Output Runs Good for
Meta Movement SDK Audio 15 visemes Quest (OpenXR) VR apps on Meta headsets
Azure Speech visemes Text (Azure voices) 22 viseme IDs, or 55 blend shapes at 60 fps Azure cloud Projects already using Azure neural voices
Rhubarb Lip Sync Audio (+ optional text) 6 basic + 3 extra mouth shapes Offline, command line Pre-recorded dialogue, 2D and cartoon characters
Web Audio loudness Audio Jaw opening only Browser Prototypes
Lobbyface Lip sync API Text + audio or phoneme timings ARKit curves (Oculus visemes coming) Hosted API Web, Unity and Unreal characters with your own voice

A few details worth knowing:

  • Azure returns visemes or blend shapes only for speech synthesised by Azure's own voices, so it can't animate a recorded actor or another TTS provider.
  • Rhubarb is fast and dependable for scripted lines, but it is offline-first and its mouth set is made for cartoons.

Keeping your viseme characters

You don't have to rebuild your characters to move off Oculus Lipsync:

  • Keep the 15 viseme shapes and switch to a source that outputs the same set (Movement SDK, or an API with an Oculus viseme output).
  • Or add ARKit shapes to the character. ARKit curves describe the mouth as many independent movements rather than one pose per sound, and read more naturally, especially on fast speech.

If you go with ARKit, a rough starting map from visemes helps when testing:

Viseme Main ARKit shapes
PP mouthClose, mouthPressLeft/Right
FF mouthRollLower, mouthUpperUpLeft/Right
aa jawOpen
ou mouthPucker, mouthFunnel, a little jawOpen
oh mouthFunnel, jawOpen
E, ih mouthStretchLeft/Right, a little jawOpen

On the web

None of the classic plugins run in a browser. For three.js, Babylon.js or any WebGL character, you need curves or visemes from a service, then the playback code from our three.js lip sync guide.

Our Lip sync API is built for that case: send the line's text with its audio (any voice) or the phoneme timings your TTS gives you, and get ARKit curves calibrated to your model, with an Oculus viseme output for existing characters coming during early access.

Lip sync API

ARKit mouth curves fitted to your own model, from text and audio. Free trial with 30 minutes of speech.