Kovati Docs

FaceForge

Turn spoken audio into facial animation — solve, retarget, bake.

Documented in depthFaceForge0.2.2Open sourceFaceForgeMetaHuman0.2.1Open sourceFaceForgeACE0.2.2Free, closed source

Turns spoken audio into facial animation: solves a sound wave to face-control curves, retargets those curves into whatever vocabulary a character's face understands, and bakes the result to an animation sequence and a montage.

It knows nothing about any particular solver, and nothing about any gameplay framework. It ships with no solvers of its own.

FaceForge in context — the video covers all three plugins, because a face starts as somebody else's audio.

FaceForge is the last third of the dialogue pipeline. It never asks where its audio came from, which is precisely why a synthesised line and a recorded performance reach it the same way.

PluginRoleLicenceVersion
FaceForge sourcecoreThe subsystem. Install this one.Open0.2.2
FaceForgeACEproviderA route to a generator — a vendor API, or a container on your own GPU.Free0.2.2
FaceForgeACEToolset sourcetoolsetThe same subsystem as typed MCP tools, for an agent. Adds nothing of its own.Open0.1.1
FaceForgeMetaHuman sourceadapterBridges the core into a framework you already build on.Open0.2.1
FaceForgeToolset sourcetoolsetThe same subsystem as typed MCP tools, for an agent. Adds nothing of its own.Open0.2.2

Solve and bake are separate, deliberately

StageCostBound to
Solve — audio to curvesSlowThe provider
Bake — curves to an animation a character can playMillisecondsThe character

Clips keep their solved curves permanently. So pointing a second character at the same audio is a re-bake, not a re-solve.

This is the single most useful property of the set. Face solving is character-agnostic — the solve is a function from audio to named floats, and only the vocabulary those names are in is character-specific.

A line solved once can dress every character who says it.

Layers

Several whole solves kept side by side on one clip, merged by a recipe stored as data on the clip: the first layer as a base, later layers laid over it at their own weight.

Merging is milliseconds and repeatable.

That is what makes the interesting combinations possible — a raw video solve as the base with a mouth-only overlay on top, A/B-proven to change the bake as the overlay's weight changes.

That combination is the one recorded performances take. In the demo scene, the two lines that were performed on camera read "Video + Mouth" in the Face Bank panel's Layers column and name both sources — the video take and its audio — in "Solved from". The other five, generated from text, have no layers at all.

See the panel.

Hand correction, without losing the solve

An animator's fix and a re-solve are usually mutually exclusive. Here they are not:

Build a correction sequence

A Level Sequence with the solve keyed on an absolute base section and an empty additive section on top.

Key only the additive section

The animator works normally. The base is read-only underneath.

Snapshot it back

The additive section is read back as offsets into a Corrective layer.

The base solve can now be re-run underneath the hand fix without discarding it. Verified frame-exact.

See correction.

Graduation

Two axes — status and origin — the same shape as SpeechForge. Anything whose origin is not Generated is left alone by the pipeline.

Where to go next

Release notes

Every version of every plugin in this set.

On this page