Kid English Reading
A family-first English pronunciation practice app that helps children listen, read aloud, receive word-level feedback, and improve at their own pace.
Inspiration
My child did well on his final exams, so I decided to reward him with something special.
Before I had even decided what the reward should be, my wife said that she wanted him to practice his English pronunciation more often. At that exact moment, our two requirements unexpectedly aligned. We laughed—and Kid English Reading was born.
Instead of giving him more homework disguised as a reward, I wanted to make the practice itself feel rewarding: simple enough for a child to use independently, encouraging rather than intimidating, and transparent enough for parents to understand what actually happened.
What It Does
Kid English Reading creates a complete family learning loop:
- A parent creates a lesson or imports content from a textbook PDF.
- The lesson is organized into units, vocabulary, sentences, and reading passages.
- The child listens to a reference voice and reads the content aloud.
- The app records and evaluates the reading, then provides word-level feedback.
- If the child passes, the app continues automatically. If not, it pauses and gives the child another chance.
- Parents can review progress, valid best scores, previous recordings, and detailed diagnostics.
The child sees a warm, storybook-style interface with very few controls. The parent sees the deeper information needed to understand progress and investigate inaccurate assessments.
How I Built It
The frontend is a responsive PWA built with React, Vite, and strict TypeScript. The backend uses Node.js, Express, WebSocket, and SQLite.
The browser captures 16 kHz mono audio through AudioWorklet. Voice activity detection identifies when the child starts and finishes speaking, while a streaming pipeline sends small PCM packets to the backend for pronunciation assessment. If streaming fails, the system reuses the captured audio for a single fallback attempt instead of repeatedly calling multiple services.
Assessment results are normalized into one internal format containing overall scores, word-level accuracy, completeness, fluency, missed words, and misread words. Passing is intentionally stricter than simply accepting a high average score:
$$
\mathrm{Pass}
V \land C \land \left(\min_i a_i \ge \tau_w\right) \land \left(S \ge \tau_s\right) $$
Here, (V) means the audio is valid, (C) means the required content is complete, (a_i) is the accuracy of word (i), (\tau_w) is the minimum word threshold, and (S) is the overall score. This prevents a high average from hiding a missed required word.
The project also includes PDF layout analysis and OCR-assisted review, household-level data isolation, parent and child-device authentication, recording playback, course management, and 144 automated tests.
Codex was my main engineering partner while building and refining the project. I used it to translate family requirements into architecture, implement features across the frontend and backend, migrate the codebase to strict TypeScript, diagnose audio and WebSocket timing problems, strengthen security boundaries, and create regression tests. My workflow was iterative: define the expected behavior, inspect the existing system, implement a small change, test it, and then refine it using real family feedback.
Challenges
The hardest challenge was making pronunciation scoring fair for a child. A single score is not enough: silence can produce misleading results, one missed word can be hidden by a good average, and background noise can affect both recording and assessment. I learned to treat scoring as a policy decision supported by multiple signals rather than blindly trusting one provider response.
Browser audio was another major challenge. Reference playback, microphone preparation, voice detection, streaming, stopping, scoring, and fallback behavior must happen in the correct order. Safari and mobile browsers add additional restrictions around audio playback and microphone permissions.
Importing real textbooks was also much harder than extracting plain text. PDFs can contain overlapping text layers, broken contractions, mixed Chinese and English content, dialogue bubbles, and reading passages whose order depends on page coordinates. The final workflow combines deterministic parsing, OCR comparison, quality reports, and human review instead of allowing OCR to silently overwrite the source.
Finally, I had to balance two very different experiences: the child needs simplicity and encouragement, while the parent needs evidence, diagnostics, control, and privacy.
What I Learned
I learned that educational AI is not only about producing a score. It must create a feedback loop that children can understand and parents can trust.
I also learned that a family product must be designed around real routines: short practice sessions, shared devices, imperfect microphones, noisy rooms, and parents who do not want to become system administrators.
Most importantly, I learned that the best product ideas can begin with a very small family conversation—and sometimes a child's reward and a parent's learning goal really can become the same thing.
Built With
- family-learning
- gpt-5.6
- learning
- open-source
- openai-codex
- privacy-first
- web-audio-api
Log in or sign up for Devpost to join the conversation.