IOS / AI / OSS · CASE STUDY

CharaTalk.

The joy of having a character in the conversation.

Text from an LLM becomes speech, which drives a VRM character's expressions and mouth movements. An iOS project that takes AI conversation beyond typing.

Swift / iOSRealityKit / VRMspeech.cpp / MetalOn-device TTS
PROMO VIDEO / 35 SECA roughly 35-second overview of CharaTalk (in Japanese). Press play to watch.
01 / PROBLEM FRAMING

What problem does it solve?

Can we create the sense of presence and closeness with a character that chat alone can't convey? I'm working on connecting speech synthesis, 3D rendering, and a conversation model on the iPhone.

02 / DESIGN DECISIONS

What I chose, and how I built it.

DESIGN NOTE / 01

Generate the voice on-device

On-device speech synthesis using Irodori TTS and speech.cpp (Metal).

DESIGN NOTE / 02

Link voice and expression

Analyze the volume of playback audio and map it to the VRM model's mouth movements.

DESIGN NOTE / 03

Choose your model

Designed to work with local LLMs or external compatible APIs.

DESIGN NOTE / 04

Keep 3D rendering independent

Avatars are rendered with RealityKit / VRMKit, with support for loading VRM files.

03 / HOW IT WORKS

The big picture.

Type a message→The LLM responds→Speech is synthesized and played→The avatar syncs
A simplified concept diagram for clarity. See the source code for exact implementation details.

For technical details, the README and source code in the public repository are the primary source.

Read the README and code on GitHub ↗
04 / STATUS & LIMITATIONS

Status and caveats.

The README on GitHub explicitly asks users to mind the rights and commercial-use terms of third-party models, avatars, and assets. This page does not guarantee on-device performance or indicate App Store availability.

Want to try it?

This page is an introduction. Installation steps, requirements, license, and the latest status are in the public repository.

Check out CharaTalk on GitHub ↗