artlu.ai
100 days. 100 features. Still building.
Just AI and an internet connection.
day 226 · 119 shipped
← all projects
day 124 · jul 19, 2026 · launched

photorealistic talking avatar with ARKit facial animation — Freysa Voice Lab

A photorealistic 3D head that talks — four facial meshes driven across 51 ARKit expression channels, speaking in a Microsoft neural voice, with a chat panel you can type into.

What is it?
A face and a voice for an AI character that otherwise only existed as text. Two builds, one line of work: the first proved a 3D character could speak and lip-sync in a browser, the second replaced it with a photorealistic head and shipped it as a live interactive prototype.

What it does
- A photorealistic 3D head animated across 51 ARKit expression channels over four facial meshes
- Speaks in a Microsoft neural voice, with adjustable speech rate
- A chat panel — type to her, she answers and speaks the answer
- Keeps a memory of the conversation, and a separate history view
- Camera position is adjustable and resettable
- Ships as an embed script that drops into any page

How it works
The earlier build lip-synced a stylized VRM character by reading the energy of the generated audio through a viseme map — no phoneme timeline, so it worked with any voice provider. The current build replaces that with real ARKit blendshape channels, which is what lets a photorealistic face hold an expression rather than just open and close a mouth. It carries a genuine test suite: voice settings, speech rate, emotions, token handling, and memory are each covered, because it was built to be embedded somewhere other than the page it was written on.

Built with
JavaScript and HTML, Three.js, ARKit blendshapes, Microsoft Azure neural TTS with an ElevenLabs adapter, GLM for the replies, deployed on Cloudflare Pages.

stack

JavaScriptHTMLThree.jsARKit blendshapesMicrosoft Azure TTSElevenLabsGLMVRMmatrix-js-sdkCloudflare Pages

screenshots