Skip to content

IELTS speaking & reading trainer with on-device Whisper ASR#2

Merged
rockerritesh merged 1 commit into
mainfrom
feature/ielts-speaking-trainer
May 29, 2026
Merged

IELTS speaking & reading trainer with on-device Whisper ASR#2
rockerritesh merged 1 commit into
mainfrom
feature/ielts-speaking-trainer

Conversation

@rockerritesh

Copy link
Copy Markdown
Owner

Transforms the TTS app into an IELTS English trainer (TTS retained as Voice Studio). Three tabs: Reading, Speaking, Voice Studio.

Features

  • Reading: 200 graded passages (bands 4.5–9, 15 topics) → record & read aloud → Word Error Rate + word-level highlighting + IELTS band estimate. "Listen" reuses KittenTTS.
  • Speaking: IELTS prompts (Parts 1–3) → free spoken answer → all four official criteria (Task Response, Fluency & Coherence, Lexical Resource, Grammatical Range) from the candidate's own words, with pace/pause/filler analysis and prompt-coverage feedback.
  • ASR: quantized whisper-tiny.en ONNX (encoder+decoder) bundled in assets/asr (~41 MB, LFS), greedy decode over 30 s windows, fully offline.

Validation

  • Mel spectrogram is bit-exact vs HuggingFace WhisperFeatureExtractor.
  • End-to-end transcription verified on real speech.
  • CI Build Debug APK passes (all new Kotlin compiles).

Tooling

  • tools/download_whisper_onnx.py fetches the pre-converted quantized model (no PyTorch).

🤖 Generated with Claude Code

Transform the TTS app into an IELTS English trainer (TTS retained as
"Voice Studio"). Three tabs via Navigation Compose: Reading, Speaking,
Voice Studio.

ASR (on-device, offline):
- WhisperAsrEngine: quantized whisper-tiny.en ONNX (encoder+decoder),
  greedy decode over 30s windows, bundled in assets/asr (~41 MB, LFS).
- MelSpectrogram (80-bin log-mel) validated bit-exact vs HF feature
  extractor; byte-level BPE WhisperTokenizer; AudioRecorder (16 kHz).
- Shared via AsrEngineProvider across both scored features.

Reading practice:
- 200 graded passages (bands 4.5-9, 15 topics) in assets/ielts.
- WerScorer: Word Error Rate + word-level alignment/highlighting.
- IeltsScorer: read-aloud four-criteria band estimate.
- Listen button reuses KittenTTS to read the passage.

Free speaking practice:
- IELTS prompts (Parts 1-3) in assets/ielts/speaking_prompts.json.
- FluencyAnalyzer: pace, long pauses, fillers from the audio.
- FreeSpeechScorer: full four-criteria band estimate (Task Response,
  Fluency & Coherence, Lexical Resource, Grammatical Range) from the
  candidate's own words, with prompt-coverage feedback.

Tooling:
- tools/download_whisper_onnx.py: fetch pre-converted quantized model
  (no PyTorch); tools/export_whisper_onnx.py for optimum<2.0 export.
- RECORD_AUDIO permission; navigation-compose dependency.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@rockerritesh
rockerritesh merged commit 08e2dea into main May 29, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant