Docs / SDK /Reference

Performance

Frames per second for Expression 2 and Essence 2 on reference hardware — every platform in one table.

PlatformReference hardwareExpression 2Essence 2
Cloud GPUNVIDIA RTX 4090290 · hosted main-4863fb011105 · hosted cdf5fa3a3
macOSApple M4158 · cli-v2.6.1882 · cli-v2.6.14
macOS · PythonApple M4157 · bithuman 3.1.8not measured on 3.1.8 (2026-09-14)
LinuxIntel Core i7-13700F44 · cli-v2.6.1729 · cli-v2.6.17
Linux · PythonIntel Core i7-13700F49 · bithuman 3.1.427 · bithuman 3.1.6
iOSiPhone 15118 measured, no recorded way to re-run it53 · essence2-v1.7.0
AndroidGalaxy S25+58 · expression2-android 0.3.150 · essence2-android 0.5.6
WebChrome on M430 · bithuman-ui 021a6f6not yet real time in a browser

Rows marked · Python are the Python library (pip install bithuman), a separate product measured the same way on the same machine. Everything else is the CLI, the platform SDK, or the hosted API.

How to read a row. Expression 2 plays at 20 frames per second, Essence 2 at 25. A number at or above its model’s own rate holds a live, two-way conversation on that hardware.

What follows each number is the artifact it was measured on — a CLI release, a wheel, a Maven artifact, a Swift package tag. A frame rate you cannot tie to a version is not reproducible, so every cell names its own, and the two cells on a row often name different things: on macOS, Expression 2 was measured on cli-v2.6.18 and Essence 2 on cli-v2.6.14. hosted means there is no artifact to fetch — the number came from a service we run, so you cannot reproduce it on your own hardware at all. A name is the version the measurement was taken on, which is deliberately not always the newest one published; for what to install today, see the page for your platform.

A cell with no number says what is missing instead.

What each number includes, row by row

The Expression 2 Cloud GPU number already includes saving the video file.

The Essence 2 Cloud GPU number is how fast a finished 1920x1080 video file is delivered, including encoding it. The GPU itself renders Essence 2 at roughly 190 to 210 frames per second when the card is not busy with other work; the published figure is lower because it also includes encoding the video file. Cloud GPU is a hosted service rather than an SDK on your own hardware; a live hosted conversation plays at the model’s own rate, 20 frames per second for Expression 2 and 25 for Essence 2, and never faster: the headroom above that rate shortens a file render and lets one card carry more sessions at once, rather than putting more frames on screen.

The iPhone Essence 2 number is what a phone does with no pause between renders: the published figure is the worst of three runs, and the slowest of them was the one taken straight after another with no cooldown. An iPhone 15 stayed above 53 frames per second in all three — more than twice the 25 Essence 2 plays at, so a conversation stays real time.

The Android Expression 2 number is what a cool phone does. Under continuous rendering a Galaxy S25+ warms up and settles at about 40 frames per second after a few minutes — still twice the 20 frames per second Expression 2 plays at, so a conversation stays real time.

The Essence 2 Web cell does not carry a number today. The engine computes about 27 frames per second in Chrome on an M4 when it is driven on its own, but that measurement stops the page’s own display loop and detaches the live audio. On the page a visitor actually opens, with the voice playing and the picture being drawn on the same browser thread, Essence 2 delivered about 11 frames per second on 2026-09-15 — well under the 25 it plays at, so the face barely moves while the voice continues. Expression 2 in the same browser delivers its full 20 frames per second, because it does its work on a background thread and leaves the display loop free. This is a limitation of the Essence 2 web build, not of the hardware.

The Linux numbers come from an Intel Core i7-13700F desktop with nothing else running. Earlier Linux numbers (37 and 13) came from a different machine, an AMD Threadripper PRO 5955WX server that was also running production work, so the change reflects the machine, not a software update.

The Linux Essence 2 number is how fast the CLI renders a file, not the rate a conversation plays at. Essence 2 plays at 25 frames per second on every platform, and headroom above that shortens a render and absorbs a busy machine rather than putting more frames on screen. Essence 2 on Linux also varies more from run to run than any other row here: on the same desktop, the same release and the same clip, repeated renders at the stock settings measured between 25 and 33 frames per second on 2026-09-17, with the slowest and the fastest both taken on an idle machine. Expression 2 measured in the same session on the same desktop stayed inside 2 per cent, so this is something about Essence 2 rather than about the machine.

Measured audio in to frame out, once the model has loaded. Loading the model the first time adds to the total.

Setup for each platform is on its own page — pick a platform.

Measured September 2026.