← BACK TO SYSTEM MAP

SYSTEM R&D / 07

R&D · v0.1

KulAI Language Tutor

Local AI voice tutor for mixed Polish-English speaking practice.

Local AI voice tutor for Polish speakers learning English. The learner can speak English and insert Polish words when vocabulary is missing. The system reconstructs the full English sentence, explains corrections and continues the conversation.

KotlinJetpack ComposeFastAPIPostgreSQLfaster-whisperOllamaQwenAndroid TTSLocal AI

SYSTEM IDENTITY

STATUSR&D

VERSION0.1

TYPEWorking proof of concept

DEVELOPMENTPaused after validation

01 / PROBLEM

The problem

When learning to speak English, stopping the conversation every time a single word is missing breaks fluency and confidence.

The idea behind KulAI Language Tutor was to allow the learner to keep speaking English and temporarily insert Polish words without interrupting the conversation.

02 / PROTOTYPE

Prototype

Voice input goes through three Whisper recognition passes for mixed Polish / English speech. Deterministic processing selects a canonical transcription, and the verbatim recognised learner message is kept in the conversation history, separate from the corrected English sentence.

Local voice tutor pipeline

  1. Voice input
  2. Three Whisper passes (PL/EN)
  3. Canonical transcription selection
  4. Teacher LLM
  1. Better version + Polish Why
  2. Conversation LLM
  3. Persisted conversation
  4. Language-aware Android TTS

The Teacher LLM reconstructs the full English sentence as a Better version and explains the corrections in Polish in a separate Why section. The Conversation LLM has a different responsibility: continuing the dialogue using the conversation history.

The conversation is persisted in PostgreSQL. Replies are split into Polish and English segments for language-aware Android TextToSpeech. The learner can replay both the tutor reply and the Better version.

03 / LESSONS

What I learned

  1. One LLM call doing transcription selection, correction, explanation and conversation was too unstable.
  2. Splitting responsibilities into deterministic processing, Teacher LLM and Conversation LLM significantly improved reliability.
  3. Structured output validity does not equal language quality. A model can return perfectly valid JSON while giving a poor or incorrect grammatical explanation.
  4. Smaller local models were fast enough, but teaching quality was insufficient.
  5. The larger local model produced much better results, but inference latency on the available hardware was too high for a truly natural real-time voice conversation.

04 / CONCLUSION

R&D conclusion

The prototype successfully validated the complete local voice tutor pipeline.

The larger model delivered substantially better teaching quality, but its latency on the current hardware made natural real-time conversation impractical.

Further UI and prompt improvements were possible, but they would not solve the main performance bottleneck.

Development was therefore intentionally paused at v0.1. The project remains a working R&D proof of concept and a technical experiment rather than a production product.

For day-to-day English speaking practice I returned to ChatGPT, while keeping the project as a foundation for future experiments with faster local models and stronger hardware.

05 / VIDEO DEMO

Video demo

Working v0.1 prototype on a physical Android device.

06 / STACK

Tech stack

  • Kotlin / Jetpack Compose
  • FastAPI
  • PostgreSQL
  • faster-whisper
  • Ollama
  • Qwen
  • Android TextToSpeech