# hemanthreddykunduru/talkingface-android-studio architecture

> Architecture diagram of the GitHub repository hemanthreddykunduru/talkingface-android-studio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hemanthreddykunduru/talkingface-android-studio
- Repository: https://github.com/hemanthreddykunduru/talkingface-android-studio

## Overview

TalkingFace is an Android-hosted web experience for an animated talking avatar. The demonstrated workflow is launching the app, loading its bundled web page in a WebView, and serving requests for bundled assets. The asset tree indicates avatar, animation, lip-sync, and audio-playback components, but the README is only a title and their source was not sampled, so their runtime wiring is uncertain.

Main entry points: [`app/src/main/java/com/talkinghead/app/MainActivity.kt`](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/java/com/talkinghead/app/MainActivity.kt) (Main activity), [`app/src/main/assets/index.html`](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/index.html) (Web entry page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_host["Android host"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_webview["WebView<br/>[MainActivity.kt]"]
  node_assetloader["Asset loader<br/>[MainActivity.kt]"]
end

subgraph group_web["Web experience"]
  node_page["Web entry page<br/>[index.html]"]
  node_talkinghead["Avatar runtime<br/>[talkinghead.mjs]"]
  node_lipsync["English lip sync<br/>[lipsync-en.mjs]"]
  node_bones["Dynamic bones<br/>[dynamicbones.mjs]"]
  node_playback["Audio playback worklet"]
end

subgraph group_content["Avatar assets"]
  node_avatar["Brunette avatar<br/>[brunette.glb]"]
  node_walking["Walking animation<br/>[walking.fbx]"]
  node_dance["Dance pose asset<br/>[dance.fbx]"]
end

node_user(("App user"))

node_user -->|"launches"| node_activity
node_activity -->|"creates"| node_webview
node_activity -->|"loads"| node_page
node_webview -->|"requests assets"| node_assetloader

click node_activity "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/java/com/talkinghead/app/MainActivity.kt"
click node_webview "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/java/com/talkinghead/app/MainActivity.kt"
click node_assetloader "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/java/com/talkinghead/app/MainActivity.kt"
click node_page "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/index.html"
click node_talkinghead "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/talkinghead.mjs"
click node_lipsync "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/lipsync-en.mjs"
click node_bones "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/dynamicbones.mjs"
click node_playback "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/playback-worklet.js"
click node_avatar "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/avatars/brunette.glb"
click node_walking "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/animations/walking.fbx"
click node_dance "https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/poses/dance.fbx"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_activity,node_webview,node_assetloader,node_user toneBlue
class node_page,node_talkinghead,node_lipsync,node_bones,node_playback toneAmber
class node_avatar,node_walking,node_dance toneMint
```

## Components

### Android host

- [Main activity](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/java/com/talkinghead/app/MainActivity.kt): `app/src/main/java/com/talkinghead/app/MainActivity.kt`
- [WebView](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/java/com/talkinghead/app/MainActivity.kt): `app/src/main/java/com/talkinghead/app/MainActivity.kt`
- [Asset loader](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/java/com/talkinghead/app/MainActivity.kt): `app/src/main/java/com/talkinghead/app/MainActivity.kt`

### Web experience

- [Web entry page](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/index.html): `app/src/main/assets/index.html`
- [Avatar runtime](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/talkinghead.mjs): `app/src/main/assets/modules/talkinghead.mjs`
- [English lip sync](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/lipsync-en.mjs): `app/src/main/assets/modules/lipsync-en.mjs`
- [Dynamic bones](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/dynamicbones.mjs): `app/src/main/assets/modules/dynamicbones.mjs`
- [Audio playback worklet](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/modules/playback-worklet.js): `app/src/main/assets/modules/playback-worklet.js`

### Avatar assets

- [Brunette avatar](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/avatars/brunette.glb): `app/src/main/assets/avatars/brunette.glb`
- [Walking animation](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/animations/walking.fbx): `app/src/main/assets/animations/walking.fbx`
- [Dance pose asset](https://github.com/hemanthreddykunduru/talkingface-android-studio/blob/main/app/src/main/assets/poses/dance.fbx): `app/src/main/assets/poses/dance.fbx`

### Other components

- **App user**

## Connections

- App user → Main activity: launches
- Main activity → WebView: creates
- Main activity → Web entry page: loads
- WebView → Asset loader: requests assets
