An accessibility-focused computer vision project that recognises American Sign Language (ASL) hand signs from a webcam feed and converts them into text in real time.
This repository is a strong fit for GSSoC contributors who want to work on Python, Flask, computer vision, machine learning, UI improvements, documentation, and accessibility-driven open source.
The project uses a webcam, hand detection, and a trained classification model to identify ASL alphabet gestures. The current application serves a Flask interface, streams webcam frames, predicts letters, and builds a word progressively from recognized signs.
Communication barriers still exist for people who rely on sign language in classrooms, workplaces, and everyday interactions. This project aims to reduce that gap by building a practical ASL-to-text interface that is approachable, extendable, and open to community collaboration.
- Real-time ASL alphabet recognition using a webcam
- Flask-based web interface
- Hand detection with
cvzoneand OpenCV - Model inference using a saved Keras classifier
- Automatic letter accumulation into a word buffer
- Manual controls to add, undo, and reset letters
- Dataset collection script for new samples
- Model training script for custom experiments
| Area | Tools |
|---|---|
| Language | Python |
| Backend | Flask |
| Computer Vision | OpenCV, cvzone |
| ML / Deep Learning | TensorFlow, Keras |
| Data Handling | NumPy |
| Deployment Support | Procfile, runtime.txt |
The application follows this pipeline:
- Capture live webcam frames.
- Detect a hand region using
HandDetector. - Normalize the cropped hand image onto a white canvas.
- Run inference through the trained classifier in
Model/. - Display the predicted letter and confidence.
- Append letters into a word after the same sign remains stable for a few seconds.
ASL-Project/
|-- app.py # Flask app and real-time prediction pipeline
|-- dataCollection.py # Utility to capture hand sign images for a class
|-- train_model.py # Model training script
|-- requirements.txt # Python dependencies
|-- Procfile # Deployment process file
|-- runtime.txt # Python runtime version
|-- Data/ # Collected sign image data
|-- Model/ # Trained model files and labels
|-- static/ # CSS, images, frontend static assets
|-- templates/ # HTML templates for Flask UI
|-- README.md
git clone https://github.com/Sant60/ASL-Project.git
cd ASL-ProjectOn Windows:
python -m venv venv
venv\Scripts\activateOn macOS/Linux:
python3 -m venv venv
source venv/bin/activatepip install -r requirements.txtpython app.pyThen open your browser to:
http://127.0.0.1:5000/
Use the collector script to capture hand-sign samples for a target class.
python dataCollection.pyNotes:
- The current script saves images into
Data/Y. - Press
sto save a processed frame. - Make sure the target class folder exists before collecting data.
- A webcam is required.
Train a classification model on your dataset:
python train_model.pyCurrent training behavior:
- The script expects a dataset directory configured in
train_model.py. - It saves
keras_model.h5andlabels.txtafter training. - If you want the Flask app to use the trained files directly, place them inside the
Model/directory or update the paths inapp.py.
- Python 3.8 or above
- Working webcam
- Basic familiarity with Python and Git for contributors
This repo already works as a useful base, but there are several places where contributors can make high-impact improvements:
- Improve prediction accuracy and robustness
- Expand from alphabet recognition to words and sentences
- Add better error handling around webcam and prediction failures
- Improve UI/UX and accessibility of the frontend
- Add tests, linting, and CI workflows
- Refactor scripts for configurability and maintainability
- Improve dataset organization and augmentation
- Add deployment and containerization support
- Document model performance and evaluation metrics
We warmly welcome GSSoC contributors of all experience levels.
- Improve project documentation
- Fix typos, broken instructions, or unclear setup steps
- Add code comments in complex areas
- Clean up Python naming, formatting, or structure
- Improve templates and frontend styling
- Add helpful issue templates or pull request templates
- Add modular utility functions to reduce duplication
- Improve prediction stability logic
- Add keyboard/UI controls for text editing actions
- Improve model-loading and configuration management
- Add dataset validation or augmentation scripts
- Add responsiveness and accessibility improvements to the frontend
- Redesign the recognition pipeline for better accuracy
- Add sentence building, autocorrect, or language modeling
- Support dynamic gestures and not just static alphabets
- Add speech synthesis from predicted text
- Build an evaluation dashboard or benchmark workflow
- Dockerize the project and prepare production-ready deployment
- Fork the repository.
- Clone your fork locally.
- Create a new branch:
git checkout -b feature/your-feature-name- Make your changes.
- Test your work locally.
- Commit with a clear message:
git commit -m "feat: improve webcam prediction stability"- Push your branch:
git push origin feature/your-feature-name- Open a pull request with a clear summary, screenshots if relevant, and testing notes.
Before opening a PR, please make sure:
- Your code runs locally
- You tested the affected flow where possible
- Your changes are focused and easy to review
- Documentation is updated if behavior changed
- Commit messages are meaningful
- New contributors keep PRs small and well-scoped when possible
Maintainers may want to use labels like:
gssocgood first issuebeginner friendlydocumentationbugenhancementhelp wantedmlfrontendbackend
- Follow readable and consistent Python style
- Prefer small, focused functions
- Avoid unnecessary breaking changes
- Keep accessibility and usability in mind
- Document assumptions when changing model or data behaviour
The project does not yet have a formal automated test suite, so contributors should include manual verification notes such as:
- App launches successfully with
python app.py - Webcam feed renders correctly
- Prediction overlay appears without crashing
- Word buffer controls behave as expected
- Training script runs with the intended dataset path
Adding automated tests is a valuable contribution in itself.
- Better model versioning inside
Model/ - Config-driven dataset and model paths
- Safer exception handling in the frame generator
- Prediction smoothing and confidence thresholds
- Multi-hand or multi-sign support
- Sentence suggestions and text-to-speech
- Hosted demo or packaged desktop app
- UI screenshots
- Sample prediction GIFs
- Demo video links
- Model accuracy snapshots
These help contributors understand the expected behavior faster.
If you are preparing this repository for GSSoC, adding the following will make contributions smoother:
- A
LICENSEfile CODE_OF_CONDUCT.mdCONTRIBUTING.md- issue templates
- pull request template
- project board or roadmap
- labels for contributor-friendly tasks
This project builds on the open-source ecosystem around:
- Flask
- OpenCV
- TensorFlow / Keras
- cvzone
- the broader accessibility and sign-language-tech community
// ## License
// No license file is currently added. If you want outside contributors to reuse and contribute confidently, it is strongly recommended that you // add an explicit open-source license.
If you want to contribute but are not sure where to begin:
- Open an issue with your question
- ask to be assigned a beginner-friendly task
- propose documentation, testing, or UI improvements
Contributions that improve usability, accessibility, reliability, and documentation are just as valuable as model improvements.