> For clean Markdown of any page, append `.md` to the page URL. > For a complete documentation index, see https://docs.sarvam.ai/llms.txt. > For full documentation content in one file, see https://docs.sarvam.ai/llms-full.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.sarvam.ai/_mcp/server. # EdTech Voice Tutors > Architecture, model configuration, and pitfalls for building voice-based tutoring agents with Sarvam AI. A voice tutor has different priorities than a contact-center bot. Clarity and patience matter more than shaving milliseconds off every turn, and factual accuracy matters more than in almost any other vertical: a hallucinated collections policy is annoying, but a hallucinated math step teaches a student the wrong thing. This guide covers the architecture and tuning common to EdTech voice agents, then walks through the [Tutor Agent](/api/cookbook/example-voice-agents/tutor-agent) example as the concrete implementation. > **Tip** > > **In short:** slow the TTS down, let the LLM reason through step-by-step problems, and verify factual material against trusted course content before presenting it to students. ## Architecture ``` Student Audio → STT (streaming) → Context Aggregator → LLM (reasoning-friendly) → TTS (streaming, slower pace) → Student ``` This is the standard voice-agent pipeline with a few deliberate changes from a latency-first setup like IVR: #### Keep conversation context across the whole session Unlike a single-intent contact-center call, a tutoring session builds on itself. A student's question 10 turns in often references something explained earlier, so keep the full session in context (within the model's context window) rather than resetting per question. #### Let the LLM think for step-by-step problems Math and science explanations benefit from the model actually reasoning through steps before answering. This is a case where the latency cost of `reasoning_effort` is worth paying, unlike routine conversational turns elsewhere. #### Slow the TTS down Set `pace` below the 1.0 conversational default. Students need time to process spoken explanations, especially numbers and multi-step instructions. #### Verify factual answers For history, science, and general-knowledge questions, provide trusted course material in the prompt or verify the generated answer before presenting it instead of relying solely on the model's parametric knowledge. ## Recommended models & params | Layer | Setting | Why | | ------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | STT | `saaras:v3`, `mode="transcribe"`, `language="unknown"` | Students code-mix (Hinglish, Tanglish) constantly, especially when discussing technical terms in English within a regional-language conversation | | LLM | `sarvam-105b`; raise `reasoning_effort` for problem-solving and explanations, `reasoning_effort=None` for quick fact lookups | Step-by-step math/science reasoning benefits from deeper reasoning, and session pacing is more forgiving of latency here than in a live phone call | | TTS | `bulbul:v3`, WebSocket streaming, `pace=0.9`, `temperature=0.6` | Matches the "EdTech Narration" preset in [TTS Best Practices](/api/api-guides-tutorials/text-to-speech/best-practices#11-use-case-quick-reference): slightly slower than the conversational default, natural enough to hold a young learner's attention | | Speaker | A clear, articulate voice (e.g. `ishita`) rather than one optimized purely for warmth | Intelligibility matters more than personality when the content is instructional | ## Latency targets > **Note** > > EdTech is more tolerant of latency than telephony IVR. A 1–2 second pause while `sarvam-105b` reasons through a step-by-step explanation reads as "thinking," not as a dropped connection, especially in an app UI where you can show a typing/thinking indicator. * Don't let it drift too far, though: still use streaming STT and streaming TTS so the student hears the first words of a response quickly, even while the full explanation is still generating. * For quick factual lookups (definitions, quick facts) that don't need deep reasoning, set `reasoning_effort=None` to keep the interaction snappy. Save the extra latency budget for genuinely hard problems. ## Pitfalls #### Hallucinated facts An EdTech bot that confidently states something wrong is worse than one that admits uncertainty. Supply trusted course material as context, require citations to that material, and verify high-stakes answers rather than trusting the model's parametric memory unconditionally. #### Pace too fast for the content The 1.0 conversational default is tuned for natural dialogue, not for a student parsing a multi-step algebra explanation for the first time. Use `pace=0.9` (or slower) as the default for instructional content specifically. #### No check for understanding The [Tutor Agent](/api/cookbook/example-voice-agents/tutor-agent) system prompt explicitly instructs the model to "ask questions to check understanding" and adapt explanations. Don't skip this in your own prompt: a tutor that only lectures isn't actually tutoring. #### Reasoning mode left on for every turn `reasoning_effort` (and the default "low" thinking mode) adds latency and cost. That's fine for problem-solving but wasted on "good job, next question" style turns. Consider disabling it (`reasoning_effort=None`) for short acknowledgement or encouragement turns. #### Ignoring the student's level A single generic system prompt won't serve a 6th grader and a 12th grader equally well. Pass grade level and subject as session context rather than baking one difficulty level into the prompt. ## Full example The [Tutor Agent](/api/cookbook/example-voice-agents/tutor-agent) guide has the complete, runnable code (Pipecat-based). The teaching-approach portion of the system prompt: ```python messages = [ { "role": "system", "content": """You are an expert tutor designed to help students understand and excel in their studies. ... Teaching approach: - Start with the basics and build up to complex concepts - Use real-world examples and analogies to explain abstract concepts - Break down complex problems into smaller, manageable steps - Encourage students and praise their efforts - Ask questions to check understanding - Adapt your explanations based on the student's level """, }, ] ``` TTS tuned for instructional pacing: ```python tts = SarvamTTSService( api_key=os.getenv("SARVAM_API_KEY"), language_code="en-IN", model="bulbul:v3", speaker="ishita", pace=0.9, # Slightly slower for better understanding ) ``` > Architecture, model configuration, and pitfalls for building voice-based tutoring agents with Sarvam AI.