A small web app to practice reading Thai out loud. It shows a sentence in Thai script with its romanization and English translation, records you reading it, sends the audio to a speech-to-text service and scores how close the transcription is to the original sentence.
How it works
- Frontend: plain HTML, CSS and JavaScript that records audio in the browser.
- Backend: FastAPI with two endpoints,
GET /api/exercise(a random sentence from 15 beginner phrases) andPOST /api/submit(audio in, transcription and score out). Thai text is compared with PyThaiNLP. Uploads are size-limited and rate-limited, since every attempt calls a paid speech-to-text API. - Deployment: GitOps. A push to
mainbuilds a container image and pushes it to GHCR. The workflow then commits the new image tag to the Kubernetes manifests, and Argo CD syncs them into a k3s cluster on a VPS. Cloudflare sits in front.