Properties
title: Avatars & Companions aliases: [Companions, Netra the Owl, Voice Personas] tags: [3netra/wiki, avatars, companions, tts] product: 3netra Meta Android App source_repository: 3Netra-ai/3n_meta_android source_ref: origin/prod source_revision: b48aada8fd5427b5db0c02945569963c4ae543c8 last_verified: 2026-08-06 up: "[[Home]]"
Avatars & Companions
3netra's UI exposes four companion cards. companion_id and nickname are saved in preferences; the selection does not currently alter prompts, model routing, or a voice tag.
Companion Roster (CompanionSelectScreen)
| id | Avatar | Name | Personality | Accent color | Voice sample |
|---|---|---|---|---|---|
owl (default) |
🦉 | Netra the Owl | Wise and warm | SkyCyan | "Hi! I'm Netra. I'm watching over you and I'll describe every wonderful thing I see!" |
cosmo |
🤖 | Cosmo the Bot | Upbeat and energetic | LavenderPurple | "Cosmo here! Ready to zoom through your classroom at the speed of light? Let's go!" |
sage |
🌿 | Sage the Panda | Calm and peaceful | FriendlyGreen | "Hello, friend. Sage here. Let's explore together, one gentle step at a time." |
ripple |
🐬 | Ripple | Playful and friendly | MintTeal | "Wheee! It's Ripple! I see SO many cool things around you. Want to hear all about them?" |
Each card offers "Hear my voice 🔊" preview (speaks the sample through the standard TTS path). Selection screen also captures the student's nickname ("What should Netra call you?").
Netra the Owl is the brand mascot and appears across: onboarding welcome ("Hi! I'm Netra."), Home hero card (🦉), grade-selection quote bubbles ("I'll talk just like your class does!"), permission screen, and pairing success ("Amazing! I can see through your glasses now!").
Voice Persona Machinery
| Component | Role |
|---|---|
ChildVoicePersonaManager |
Active Scene screen helper: Android TTS with legacy K–6 vocabulary replacement and pitch/rate controls |
StudentOnboardingWizard |
Unwired calibration screen using the same child-voice helper |
| Companion selection | Local companion_id/nickname presentation state; no verified TTS or backend mapping |
student_settings fields |
Client payload fields only; no committed DDL proves defaults or persistence |
| Speaking speed | Settings writes tts_speed; BluetoothService.speak() reads it. Scene screen uses its separate child-voice helper |
TTS Pipeline (all spoken output)
flowchart LR
TXT[Screen/chat text] --> PATH{Call site}
PATH -->|Scene screen| ATTS[ChildVoicePersonaManager / Android TTS]
PATH -->|BluetoothService| LANG{settings language}
LANG -->|conditional| SAR[Sarvam client]
LANG -->|otherwise| BTTS[Android TTS]
Implementation mismatch
The reviewed source still calls the active helper ChildVoicePersonaManager and contains child/K–6 filtering. This is not an implementation of the higher-education voice policy documented elsewhere; it must be changed in source, not inferred from companion copy.
Navigation ⬅️ 04-User-Journeys · 🏠 Home · ➡️ 06-Feature-Matrix
