Logo Lanfrica

19bk/nfc-ml-learner

Domaine:

educationnatural language processing

Type de record:

softwareproject
Créateur:
19bk
Hôte:
This project is an offline edge ML learning device built for classrooms in rural Kenya and refugee camp settings. Children tap NFC tagged cards, hear the target word spoken aloud, and say it back while the device checks the response locally using on device speech recognition. It is designed for places where internet access is unreliable and privacy # NFC-ML-Learner Offline edge ML vocabulary learning device for rural Kenya and refugee camp classrooms. This project helps children practice vocabulary with NFC tagged cards, offline speech recognition, and spoken feedback that runs on the device itself. It is built for classrooms where internet access is unreliable and the hardware needs to stay affordable, portable, and easy to use. ## Why Edge ML The device processes speech on the hardware itself instead of sending audio to the cloud. That makes it a better fit for schools and learning spaces where connectivity is limited and the system still needs to work every day. ## What It Does A child taps an NFC tagged card, for example a picture of a lion, against the device. The system looks up the tag, says the word aloud, spells it letter by letter, and gives audio reinforcement. The child can then **say the word back** and the on device keyword spotter listens for the correct answer in real time. The full pipeline runs offline on low cost hardware. It is designed for early literacy practice, small group learning, and bilingual content such as English and Kiswahili. ## Tech Stack | Layer | Technology | |------------------|-----------------------------------------| | Keyword Spotting | Picovoice Porcupine (TinyML, on-device) | | Text-to-Speech | pyttsx3 (offline WAV generation) | | Audio I/O | PyAudio (real-time mic capture) | | NFC Simulation | JSON tag-to-word mapping | | Target Hardware | ESP32 / Raspberry Pi | | Language | Python 3.13 | ## Architecture ``` NFC Tag Scan | v nfc_word_map.json -- maps tag IDs to vocabulary words | v generate_tts.py -- pre-generates " . . Great job!" WAV files | v data/audio/*.wav -- cached audio, no runtime TTS needed | v keyword_spotting.py -- Porcupine listens for the child to repeat the word | v Audio feedback -- plays …