
Meet the characters
Make a clip in seconds
Type a line. A character says it.
Every clip is labelled “AI character”.
Works in ChatGPT and Claude
Add bitHuman once. Then ask for a clip or a live talk.
Copy this address
https://mcp.bithuman.ai/mcpAsk: “Show me the bitHuman characters.”
For developers
Build it into your app
Essence 2 and Expression 2 render on the device, inside your app.


.package(url: "https://gitlab.com/bithuman/sdk/homebrew-bithuman", from: "2.22.1")
let engine = try Expression2Engine.create(
avatarContainer: avatarURL, // wise-pup.imx
sharedEngineContainer: sharedEngineURL, // mac-arm64-1.0.0.engine
stagingDir: stagingURL) // any writable directory; keep it between launches
engine.feed(samples) // [Float], 16 kHz mono
engine.flushTail() // end of the reply
for await frame in engine.frames(audioClock: { played() }) {
show(frame.bgr, frame.width, frame.height) // B, G, R bytes
if frame.audioTime == 0 { player.scheduleBuffer(reply, completionHandler: nil); player.play() } // the reply's first frame: start its audio
if frame.endsReply { break } // the reply is over; idle frames follow
}implementation("ai.bithuman:expression2-android:0.6.2")
Expression2Avatar.create(context, model, Expression2Options()).use { avatar ->
val frame = avatar.newFrameBitmap() // 416 x 720, allocate once
avatar.feed(pcm16k)
avatar.flushTail() // end of the utterance
while (true) {
if (avatar.pull(frame) != null) { show(frame); continue }
if (!avatar.hasPendingTail && avatar.queuedFrames == 0) break
Thread.sleep(10) // null means "not ready yet"
}
}The Swift and Android SDKs render: your app passes in 16 kHz mono speech from any voice stack and draws the frames, so the persona, the voice and the language model are yours to choose.










