Blame
|
1 | --- |
||||||
| 2 | title: Avatars & Companions |
|||||||
| 3 | aliases: [Companions, Netra the Owl, Voice Personas] |
|||||||
| 4 | tags: [3netra/wiki, avatars, companions, tts] |
|||||||
| 5 | product: 3netra Meta Android App |
|||||||
| 6 | source_repository: 3Netra-ai/3n_meta_android |
|||||||
| 7 | source_ref: origin/prod |
|||||||
| 8 | source_revision: b48aada8fd5427b5db0c02945569963c4ae543c8 |
|||||||
| 9 | last_verified: 2026-08-06 |
|||||||
| 10 | up: "[[Home]]" |
|||||||
| 11 | --- |
|||||||
| 12 | ||||||||
| 13 | # Avatars & Companions |
|||||||
| 14 | ||||||||
| 15 | 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. |
|||||||
| 16 | ||||||||
| 17 | ## Companion Roster (CompanionSelectScreen) |
|||||||
| 18 | ||||||||
| 19 | | id | Avatar | Name | Personality | Accent color | Voice sample | |
|||||||
| 20 | |---|---|---|---|---|---| |
|||||||
| 21 | | `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!" | |
|||||||
| 22 | | `cosmo` | ๐ค | **Cosmo the Bot** | Upbeat and energetic | LavenderPurple | "Cosmo here! Ready to zoom through your classroom at the speed of light? Let's go!" | |
|||||||
| 23 | | `sage` | ๐ฟ | **Sage the Panda** | Calm and peaceful | FriendlyGreen | "Hello, friend. Sage here. Let's explore together, one gentle step at a time." | |
|||||||
| 24 | | `ripple` | ๐ฌ | **Ripple** | Playful and friendly | MintTeal | "Wheee! It's Ripple! I see SO many cool things around you. Want to hear all about them?" | |
|||||||
| 25 | ||||||||
| 26 | 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?"). |
|||||||
| 27 | ||||||||
| 28 | **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!"). |
|||||||
| 29 | ||||||||
| 30 | ## Voice Persona Machinery |
|||||||
| 31 | ||||||||
| 32 | | Component | Role | |
|||||||
| 33 | |---|---| |
|||||||
| 34 | | `ChildVoicePersonaManager` | Active Scene screen helper: Android TTS with legacy Kโ6 vocabulary replacement and pitch/rate controls | |
|||||||
| 35 | | `StudentOnboardingWizard` | Unwired calibration screen using the same child-voice helper | |
|||||||
| 36 | | Companion selection | Local `companion_id`/nickname presentation state; no verified TTS or backend mapping | |
|||||||
| 37 | | `student_settings` fields | Client payload fields only; no committed DDL proves defaults or persistence | |
|||||||
| 38 | | Speaking speed | Settings writes `tts_speed`; `BluetoothService.speak()` reads it. Scene screen uses its separate child-voice helper | |
|||||||
| 39 | ||||||||
| 40 | ## TTS Pipeline (all spoken output) |
|||||||
| 41 | ||||||||
| 42 | ```mermaid |
|||||||
| 43 | flowchart LR |
|||||||
| 44 | TXT[Screen/chat text] --> PATH{Call site} |
|||||||
| 45 | PATH -->|Scene screen| ATTS[ChildVoicePersonaManager / Android TTS] |
|||||||
| 46 | PATH -->|BluetoothService| LANG{settings language} |
|||||||
| 47 | LANG -->|conditional| SAR[Sarvam client] |
|||||||
| 48 | LANG -->|otherwise| BTTS[Android TTS] |
|||||||
| 49 | ``` |
|||||||
| 50 | ||||||||
| 51 | > [!warning] Implementation mismatch |
|||||||
| 52 | > 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. |
|||||||
| 53 | ||||||||
| 54 | --- |
|||||||
| 55 | ||||||||
| 56 | > [!tip] Navigation |
|||||||
| 57 | > โฌ
๏ธ [[04-User-Journeys|User Journeys]] ยท ๐ [[Home]] ยท โก๏ธ [[06-Feature-Matrix|Feature Matrix]] |
|||||||
