An interactive conversational sketch-and-tell system designed especially for kids aged 5–10 years.
Children draws based on the given prompt, the system recognizes it, asks a follow-up, and responds with speech — making drawing fun, educational, and interactive.
- Kid-Friendly Interaction: Designed for children ages 5–10, combining drawing with storytelling.
- Speech-Enabled Conversations: System responds with natural TTS after recognizing drawings or speech.
- AI-Powered Dialogue: CV integration for generating playful and age-appropriate follow-up questions based on the image.
- Model Flexibility: Switch between ASR, TTS, and CV backends via configuration.
- Fallback & Recovery: Graceful fallback to alternative models with kid-friendly retry prompts.
- Python 3.8+
- Tensorflow 2.14.0
- opencv
- ffmpeg
-
Navigate to the backend directory:
cd draw-and-tell/backend -
Create and activate a virtual environment:
python3 -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Navigate to the frontend directory:
cd draw-and-tell/frontend/kid_app -
Install dependencies:
npm install
-
Navigate to the frontend directory:
cd draw-and-tell/frontend/parent_dashboard -
Install dependencies:
npm install
From the draw-and-tell/backend directory:
python3 main.pyThe backend will start on http://localhost:8000
From the draw-and-tell/frontend/kids_app directory:
npm run devThe kids frontend will start on http://localhost:5173
From the draw-and-tell/frontend/parent_dashboard directory:
npm run devThe parents frontend will start on http://localhost:5174
- Prompt page: receive a drawing topic
- draw page: upload the drawing
- followup page: system analyzes drawing, asks a question, and waits for the answer
- Acknowledgement page: system responds via audio
- dashboard: view all drawings submitted by their children
GET /prompt- generate promptPOST /analyze-drawing- Feed the drawing to an CV model for analysis and generate a questionPOST /transcribe-answer- convert kids audio answer to a textGET /sessions- Fetch all sessions for the parentGET /session/{session_id}- Fetch a specifc session for the parentGET /recap/{session_id}- Fetch the recap for a specific drawingGET /image/{drawing_id}- fetch the drawing image to show parents
- CV - Salesforce/blip-image-captioning-base
- ASR - Openai/whisper-small
- TTS - sjdata/speecht5_finetuned_single_speaker_de_small_librivox
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request