Kovati Docs

Providers

The engine's own solver, and NVIDIA Audio2Face-3D.

Documented in depthFaceForgeMetaHuman0.2.1Open sourceFaceForgeACE0.2.2Free, closed source
Engine solverAudio2Face-3D
RunsIn-process, CPUA container on your GPU, or a rented one
CostFreeFree beyond hardware
Emits81 MetaHuman board curvesARKit-52 natively
DeterministicYes
EmotionRead from audioRead from audio and taken as explicit input
Head poseOptional track
Licence tierOpen sourceFree, closed source

The engine's own solver

Registers UE 5.8's audio-driven animation solver with FaceForge as a free, local, offline provider. Audio in, 81 MetaHuman face-board control curves out, plus an optional head-pose track.

Despite the name, no MetaHuman asset is required anywhere. The solver is a pure function from audio to named floats; only the vocabulary those names are in is MetaHuman-specific.

Deterministic, and why that matters

Same audio and settings give the same curves.

That makes the clip's content hash a real cache key rather than an approximation — a genuine difference from hosted speech-model solvers, where identical input can produce a slightly different solve and every clip therefore reads as changed.

Two ONNX models ship with the engine: a Whisper-derived audio encoder of about 91 MB, and an animation model. FaceForge.ReleaseModels drops them — about 310 MB.

It ships a second module for video-driven solving, which is not audio-driven at all.

NVIDIA Audio2Face-3D

Runs in a container on your own GPU or a rented one.

The plugin links nothing vendor-specific — no CUDA, no TensorRT, no SDK. Everything GPU-bound lives in the container, which the plugin builds and drives over HTTP.

That is also what lets a team of laptops solve against one workstation with a real card. The container is a network service; the machine running the editor needs nothing but the ability to make a request.

The Audio2Face Runner panel

Everything about hosting the model yourself lives on one page, and it answers "why is it not working" before you have to ask.

The Audio2Face Runner panel on its This machine tab. A status strip reads 'Not answering yet (0s)' with the note 'The runner container exists but is not running. Start it - there is nothing to build and nothing to download.', beside a Refresh button. Under a heading WHERE IT RUNS, a two-way switch offers This machine and Rented GPU, with This machine selected. A panel reports Docker: 'the runner container is stopped' and Image: 'built from different files (unknown, expected 496c2a9c047f)', followed in amber by 'The image was built from different runner files than the ones this plugin ships. It will start, answer and solve - in the way an older version did, which is the confusing kind of wrong. Rebuild fixes it.' Buttons: Start, a greyed Stop, and Rebuild the image. Below, WHAT THE CONTAINER SAID with a Fetch the log button, and a footer noting Runpod and Hugging Face are shared accounts across every Automation Forge plugin, with a Keys link.
A status line that names the state and the fix in the same sentence, and two facts under it — whether the container is running, and whether the image matches the plugin. Neither is a thing you would think to check.

"It will start, answer and solve — in the way an older version did, which is the confusing kind of wrong."

This is the failure worth knowing about, because it does not look like a failure. A stale image runs, responds and produces curves; they are simply the previous version's curves. The panel compares the built image against the runner files this plugin ships and says so, with Rebuild the image beside it.

Renting, and when not to

The second tab is the rented route, and it opens by talking you out of it:

The Audio2Face Runner panel on its Rented GPU tab, status reading 'Not answering yet (10s)'. The panel says: 'Nothing rented. A face solve is a fraction of a second, so an hour of finished dialogue is about four GPU-minutes while a cold pod is five to fifteen - renting is for a machine with no NVIDIA card, or a whole-game batch, and never a way to make one solve faster.' A 'Rent a GPU...' button sits below, above WHAT THE CONTAINER SAID with Fetch the log, and the same shared-accounts footer with a Keys link.
The arithmetic, stated where the money would be spent: about four GPU-minutes for an hour of finished dialogue, against five to fifteen minutes of cold start. Renting is for a machine with no card, or a whole-game batch — never for making one solve faster.

The cold pod costs more than the work. That is the unusual shape of this particular provider, and it is the opposite of the mesh and speech routes, where renting is often the sensible answer. A face solve is fast enough that the machine spends nearly all its life idle.

The same footer appears on both tabs: Runpod and Hugging Face are accounts a person has, shared across every Automation Forge plugin, so a key entered once is entered for all. See keys.

ARKit-52 natively

No mapping at all for authored, CC5, Reallusion, Daz or Ready Player Me heads.

A MetaHuman still needs a conversion — see vocabularies.

Emotion as an input

Ten named emotions, mixed, taken as an explicit input alongside whatever the audio reads.

That is the substantive difference from the in-engine solver, which reads emotion passively. When a line needs to be delivered angrily and the words do not carry it, this is the control that exists.

Licensing, precisely

  • The four lip-sync models are ungated and baked into the image, under NVIDIA's Open Model License.
  • Only the optional emotion detector is gated, and it is excluded from the default image.

So the common path needs no grant. Only the optional extra does.

First run builds an engine

The TensorRT engine is treated as first-class per-GPU-architecture, per-TensorRT-version state: built on first use onto a persistent volume.

Measured at about 40 seconds on an RTX 5080, against the model metadata's own 150-second estimate — and reported as preparing rather than as a hang, which is the difference between waiting and restarting.

The process stays resident

The solver stays up across clips rather than spinning up per request.

That was measured, not assumed: a fresh process per clip made this provider slower than the CPU in-engine solver.

Measuring solve speed honestly

A measurement names its route. A face-solve ratio measured end to end against a GPU provider is not the figure for the local CPU route — the latter is roughly 1:2, the former roughly 1:4 under its own conditions.

Quoting one against the other's description is the defect, even though both numbers are real.

Gated models need access, not just a key

Where a route does need a gated model, remember that a token is not a grant. Access is requested from the model's own page, approved by a human at the vendor, and can take days.

FaceForge.Providers lists solvers and says whether each is ready — and why not — which is the fastest way to find out you are waiting on an approval rather than a bug.

On this page