Your sign-in changed

The previous session is closed. Reload to continue with the current account. Saved lessons and drafts stay with their original learner.

{{ learningData ? 'Welcome back, ' + learningData.user.name.split(' ')[0] + '.' : 'Welcome to LingoMitra.' }}

{{ studioResume ? 'A little time for your language.' : 'Listen. Think. Make it yours.' }}

{{ studioResume.lang.name }} {{ studioResume.number ? 'Lesson ' + studioResume.number : 'Introduction' }}

{{ studioResume.title }}

{{ studioResume.reading ? 'Your written recap is saved.' : studioResume.complete ? 'Lesson complete. Listen again whenever you like.' : 'Saved at part ' + (studioResume.step + 1) + (studioResume.time ? ' · ' + audioClock(studioResume.time) + ' into this recording' : '') }}

Written recap

Hear a useful idea. Pause to build a sentence. Then listen to the reasoning and try it again.

Choose your language

An opening recording from the course. AI-generated voice.

{{ studioSampleError }}

Checking for a listening sample…

Sign in to check listening samples. Written recaps are available now.

A listening sample is not available here yet. Course recaps are ready to explore.

Find your next language.

Choose a course. Your lesson will do the teaching.

Courses

{{ filteredLanguages.length }} {{ filteredLanguages.length === 1 ? 'language' : 'languages' }}

{{ courseFilter === 'started' && !courseQuery.trim() ? 'No courses started yet' : 'No matching language' }}

{{ courseFilter === 'started' && !courseQuery.trim() ? 'Open a course and it will appear here, with your place saved.' : 'Try another name or clear your filters to browse the full catalogue.' }}

{{ draftCourseCount }} courses are new foundation drafts. Fluent-speaker review is pending. Courses marked “Roman transcription” have native-script lessons pending.

Availability refers to each course’s opening lesson. Further lessons may need preparation. No course is labelled as fluent-speaker reviewed.

A second look helps it stay.

Your written recaps and practice, together.

{{ (languages.find(l => l.code === lesson.languageCode) || {}).name }} · {{ lesson.number ? 'Lesson ' + lesson.number : 'Introduction' }}

{{ lesson.title || 'Your saved lesson' }}

Start with something to remember.

Open a lesson and its recap will be easy to find here. Practice reuses the words and patterns from your course.

Explore courses
Back to Today

{{ learningPanel === 'account' ? 'Profile & settings' : 'Learning history' }}

{{ learningData.user.name }}

A little progress, saved for you.

Sign in to keep your learning streak, daily goal and lesson history together.

Sign in with ChatGPT

Loading your learning history…

Conversation partner settings

LingoMitra on your device

{{ installStandalone ? 'You’re listening in the app.' : installComplete ? 'Added to your device. Open LingoMitra from your app launcher.' : 'Open your listening space straight from your home screen.' }}

{{ language ? language.name : 'Your course' }}

{{ learningSignedOut ? 'Sign in to listen' : error ? 'Your course could not open' : comingSoon ? 'This course is unavailable' : 'Opening your lesson…' }}

Loading the written course and lesson details.

{{ errorDetail }}

Sign in

{{ language ? language.name : '' }} {{ lessonEyebrow }}

{{ audioScript ? (audioScript.readingTitle || audioScript.title) : currentLesson ? currentLesson.title : 'Opening your lesson…' }}

Opening the course…

Your listening space

One idea at a time.

Listen, then try a sentence in your own time. Each pause gives you space to think.

{{ studioReady[language.code] && studioReady[language.code].scriptAvailable ? 'Prepared audio is reused. Your place is saved as you go.' : 'Audio is prepared on first play when a recording is not available.' }}

Lesson complete

One thought at a time.

{{ audioCorrectCount }} answered correctly · {{ audioRevealedCount }} explored with an explanation

{{ audioBusy ? audioBusyText : audioBuffering ? 'Buffering audio…' : '' }}

About this lesson

{{ currentLesson.title }}

AI-generated voice · {{ audioSpeechProvider === 'sarvam' ? 'Sarvam' : 'OpenAI' }} backup. Teaching drafts await fluent-speaker review.

Experimental voice for {{ language.name }}. Pronunciation may be unreliable.

Written recap
{{ lessonEyebrow }} Read

{{ currentLesson.title }}

Draft course · Fluent-speaker review pending.

{{ language.formatNote }}

{{ sections.length }} sections {{ readingMinutes }} min read

Loading {{ pendingName }} lessons

{{ errorTitle }}

{{ errorBody }}

{{ errorDetail }}

{{ language.name }} isn’t written yet

This course is still being written. The others are ready whenever you are.

Practice · {{ language.name }}

Practice · {{ language.name }}

{{ practiceIndex + 1 }} / {{ practiceSet.length }}

Draft course · Fluent-speaker review pending. {{ language.formatNote }}

Lesson {{ currentItem.lessonNumber }}

{{ currentItem.prompt }}

{{ currentItem.hint }}

{{ heard || 'Listening…' }}

Your browser handles speech recognition, which may send audio to its provider.

{{ verdictHeadline }}

{{ verdictNote }}

You
Course {{ currentItem.answer }} {{ currentItem.roman }}
{{ second.acceptable ? 'Yours works too' : 'Worth another look' }}

{{ second.why }}

{{ second.from }} · the course’s answer stands where they disagree
Asking whether yours also works

{{ voiceNote }}

Time well spent

Session done

Every sentence is another chance to learn.

{{ practiceResults.filter(r => r.status === 'correct').length }} matched the course {{ practiceReview.length }} worth another look

Compare these again

{{ r.item.answer }}

{{ r.item.prompt }}

Conversation · {{ language.name }}

{{ language.name }} · lessons 1–{{ talkUpTo }}

{{ tutorState.local ? 'On this machine' : 'Your key' }}

Try a conversation

Use the patterns you have learned.

Draft course · Fluent-speaker review pending. {{ language.formatNote }}

The model did not answer

{{ talkError }}

{{ heard || 'Listening\u2026' }}

Your browser handles speech recognition, which may send audio to its provider.

Thinking…

Conversation partner

The lessons and the practice engine work on their own. This is only for the conversation view and for second opinions on a practice answer.

Your key is used only in this tab

Guided audio uses LingoMitra’s server connection. This optional conversation partner uses your own provider account. A key you enter is held only in this tab’s memory and sent directly to that provider after checking your sign-in. It is cleared on sign-out, account change or leaving the page. Saved keys from older versions are removed. Your endpoint and model preferences are kept.

Sign in with ChatGPT before connecting a hosted partner. Local models still work without sign-in.

Start from

Ollama and LM Studio run the model on this machine — no key, no account, and nothing leaves the device. The rest are hosted and need a key.

Details

An OpenAI-compatible base URL. Ollama serves one at localhost:11434/v1, LM Studio at localhost:1234/v1.

Whatever name your runtime or provider uses. A 7–8B instruct model is enough for conversation at this level.

From console.anthropic.com. Requests go from this page to Anthropic and are billed to your account.

Ollama and LM Studio ignore this. Hosted providers need it.

{{ tutorTest.title }}

{{ tutorTest.body }}

Second opinion in practice

When your answer differs from the course’s, LingoMitra can ask the model whether yours also works. It sees both sentences, so it is comparing rather than inventing — which is why a small local model can do it. The course always wins where they disagree, and this is never asked for Kannada.

Contents {{ readProgress }}%

This lesson has no sub-sections.


{{ installIsInstalled ? 'LingoMitra is ready' : 'Add LingoMitra' }}

LingoMitra fox wearing headphones
LingoMitraYour listening studio

Open from your home screen and give your lesson its own space.

{{ installMessage }}

Audio and answer feedback need internet. Previously opened written lessons and practice remain available offline.

Use your usual account for saved lesson progress. You may need to sign in again.