This project is an AI-powered American Sign Language (ASL) translator that converts sign language gestures into natural, conversational text and speech in real time. It addresses a common challenge for deaf and hard of hearing individuals: word-for-word translation tools often produce awkward or out-of-context output. This system instead:
- Captures video from your webcam
- Detects ASL hand signs using computer vision (YOLO)
- Translates letter sequences into coherent, grammatically correct sentences using a large language model (Gemma)
- Displays the result as natural text and inferred emotion
The frontend streams frames to the backend, which runs YOLO for sign detection and Ollama & Gemma for language refinement.
| Layer | Technology |
|---|---|
| Backend | FastAPI, CORSMiddleware |
| Computer Vision | YOLO11L (Ultralytics) |
| LLM | Gemma 3 via Ollama |
| Frontend | Next.js, React, Tailwind CSS |
- Python 3.12.7
- Node.js 18+ and npm
- Ollama (for running Gemma locally)
- Webcam (for sign language input)
- Audio Output Device (i.e speakers)
Download and install Ollama, then pull the Gemma model:
In the terminal or Git Bash, do:
ollama pull gemma3In the terminal or Git Bash, do:
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install fastapi uvicorn numpy opencv-python ultralytics ollamaStart the backend server:
In the terminal or Git Bash, do:
uvicorn main:app --reload --host 127.0.0.1 --port 8000The API will be available at http://127.0.0.1:8000. The first request may take a few seconds while the camera/YOLO model initializes.
In a separate terminal or Git Bash:
cd frontend
npm install
npm run devThe app will be available at http://localhost:3000.
- Ensure Ollama is running (
ollama serveor the Ollama app) - Start the backend (port 8000)
- Start the frontend (port 3000)
- Open
http://localhost:3000in your browser - Allow camera access and sign in front of the webcam
accessibility-project/
├── backend/
│ ├── main.py # FastAPI app, /interpret endpoint
│ ├── computer_vision/
│ │ ├── live_asl.py # YOLO ASL detection & frame buffering
│ │ └── yolo11l.pt # YOLO11L model weights
│ └── llm/
│ └── llm_processing.py # Gemma-based sentence & emotion refinement
├── frontend/
│ └── src/
│ └── app/
│ ├── page.tsx # Main page layout
│ └── components/
│ ├── VideoLLM.tsx # Webcam capture & API calls
│ └── TextToScreen.tsx # Transcript display
└── README.md
| Endpoint | Method | Description |
|---|---|---|
/interpret |
POST | Accepts an image file (multipart/form-data). Returns detected sign sequence refined into a sentence and emotion. |
- The YOLO model recognizes ASL letters; some letters (J, Z) are excluded by default due to signing difficulty.
- Frames are buffered and processed in batches to improve detection stability.
- The LLM expands common abbreviations (e.g., "hbu" → "how about you") and infers emotion from the text.
- Originally CORSMiddleware was to be used for cross-domain.