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]
Warning

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.


Tip

Navigation ⬅️ 04-User-Journeys · 🏠 Home · ➡️ 06-Feature-Matrix

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9