How hemanthreddykunduru/locally-runnable-3d-character- works
This is a small Flask-backed VRM speech-avatar app. A user submits text to the speak API; the server converts it to IPA and speech, analyzes the generated audio, and returns audio plus timed phoneme/viseme cues for a client to animate an avatar. The source also exposes routes for the home page, VRM model, and vendor assets. The tree omits those served assets and the browser implementation, so their internal behavior and wiring cannot be mapped; relationships below follow only the sampled server code.
Main entry points: app.py Speak API · package.json Three.js VRM
Components 16
HTTP interface
- Speak API
app.py - Site and asset routes
app.py - Speech response
app.py - VRM model route
app.py - Vendor asset route
app.py
Speech processing
- IPA conversion
- Phoneme parsing
app.py - Speech synthesis
app.py
Audio animation
- WAV decoding
app.py - Audio envelope
app.py - Viseme cue timing
app.py - Emotion detection
app.py
Other components
- User
- System TTS engine
- Avatar client
- Three.js VRM
package.json
Connections 16
- User → Speak API: submits text
- Speak API → IPA conversion: converts text
- Speak API → Phoneme parsing: parses IPA
- Speak API → Speech synthesis: requests speech
- Speech synthesis → System TTS engine: synthesizes audio
- Speech synthesis → WAV decoding: decodes WAV
- Speak API → Audio envelope: analyzes samples
- Speak API → Viseme cue timing: builds cues
- Speak API → Emotion detection: detects emotion
- Speak API → Speech response: returns JSON
- Speech response → User: delivers audio and cues
- User → Site and asset routes: requests assets
- Site and asset routes → Avatar client: serves home page
- User → VRM model route: requests model
- User → Vendor asset route: requests vendor files
- Avatar client → Three.js VRM: uses integration