This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
My friend wanted to learn Korean language from a long time. She started but got overwhelmed. So, I built her a website where she can learn Korean words for English words which she can pair with other learning apps like: Duolingo.
You can record yourself and send it to the bot and voila it will convert it to korean and speak with you.
Demo
Link to my website: https://october-sober.onrender.com/
Code
OCTOBER_SOBER
This is my hackathon project for MLH HacktoberFest.
Korean Tutor Setup
The FastAPI app transcribes Korean speech with Whisper, sends the transcript to a Backboard assistant for document retrieval and Gemini generation, then speaks the reply in Korean. Configure the Google/Gemini provider and a supported model in Backboard before running the app.
- Install dependencies with
pip install -r requirements.txt. - Copy
.env.exampleto.envand set the Backboard API key, assistant ID, and model name. Do not put API keys in source files. - In Backboard, upload curated Korean lesson documents to the configured assistant and wait until each document is indexed.
- Run
uvicorn main:app --reloadand openhttp://127.0.0.1:8000.
To check the Backboard assistant independently, run python test.py after setting
the environment variables. Unit tests for request construction run with
python -m pytest tests -q.
The app does not send a thread ID and sets Backboard memory to…
How I Built It
My project uses the open-weight Whisper Tiny speech-recognition model through faster-whisper, running locally with CTranslate2 on CPU using INT8. The FastAPI backend receives the learner’s English audio, transcribes it, and sends the text to a Backboard assistant, which retrieves relevant lesson material and routes generation to Gemini 3.8 Flash. The Korean response is then converted to speech with gTTS and returned to the learner.
The open-source/local AI component is speech recognition. Gemini is a hosted, proprietary model, and Backboard provides the managed RAG and assistant orchestration; the project does not currently run an open-weight conversational LLM locally.
Why Does Open Innovation Matter?
Open innovation let me build the tutor from interchangeable pieces instead of relying on one all-in-one service. I can run the open-weight Whisper Tiny model locally through faster-whisper for speech recognition, then connect that transcript to Backboard’s RAG and Gemini for lesson-grounded replies, and gTTS for speech. That gives me more control over the transcription model and deployment, and makes it easier to replace or adapt individual components.
It’s a hybrid system, not a fully open-source stack: Backboard and Gemini are hosted services. So learner audio is transcribed locally, but the resulting text is sent to those services; open innovation gives me choice and control at the component level, not complete data independence.
Top comments (0)