# syiyamkumar/isl-sign-language-translator architecture

> Architecture diagram of the GitHub repository syiyamkumar/isl-sign-language-translator, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/syiyamkumar/isl-sign-language-translator
- Repository: https://github.com/syiyamkumar/isl-sign-language-translator

## Overview

This repository builds an ISL gesture-recognition workflow: video frames become 225-dimensional landmark sequences, which can be used to train a BiLSTM and then classify live or uploaded video. The two inference interfaces display labels and confidence; separate training and evaluation scripts support the model lifecycle. Sentence-level data preparation is present, while the documented sentence generation and multilingual translation are downstream aspirations, not implemented runtime stages. Edges reflect the shown calls and reads/writes; unsampled integrations are omitted.

Main entry points: [`app_streamlit.py`](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/app_streamlit.py) (Web Dashboard), [`app_webcam.py`](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/app_webcam.py) (Desktop Inference), [`config.py`](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/config.py) (Runtime Configuration), [`extract_features.py`](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/extract_features.py) (Feature Extraction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_features["Feature Preparation"]
  node_extract["Feature Extraction"]
  node_config["Runtime Configuration<br/>[config.py]"]
end

subgraph group_learning["Model Lifecycle"]
  node_dataset["Dataset Loader<br/>[dataset.py]"]
  node_trainer["Model Training<br/>[train.py]"]
  node_model["BiLSTM Classifier<br/>[model.py]"]
  node_evaluator["Model Evaluation<br/>[evaluate.py]"]
end

subgraph group_inference["Recognition Interfaces"]
  node_webcam_app["Desktop Inference<br/>[app_webcam.py]"]
  node_streamlit_app["Web Dashboard<br/>[app_streamlit.py]"]
end

subgraph group_state["Local Data"]
  node_processed[("Feature Sequences")]
  node_checkpoint[("Model Checkpoint")]
end

node_camera(("Camera"))
node_video_upload(("Video Upload"))
node_holistic["MediaPipe Holistic"]

node_camera -->|"provides frames"| node_webcam_app
node_camera -->|"provides frames"| node_streamlit_app
node_video_upload -->|"provides video"| node_streamlit_app
node_extract -->|"processes frames"| node_holistic
node_extract -->|"uses paths"| node_config
node_extract -->|"writes sequences"| node_processed
node_webcam_app -->|"processes frames"| node_holistic
node_webcam_app -->|"extracts keypoints"| node_extract
node_webcam_app -->|"classifies sequence"| node_model
node_webcam_app -->|"loads weights"| node_checkpoint
node_webcam_app -->|"uses settings"| node_config
node_streamlit_app -->|"processes frames"| node_holistic
node_streamlit_app -->|"extracts keypoints"| node_extract
node_streamlit_app -->|"classifies sequence"| node_model
node_streamlit_app -->|"loads weights"| node_checkpoint
node_streamlit_app -->|"uses settings"| node_config
node_dataset -->|"reads sequences"| node_processed
node_dataset -->|"uses paths"| node_config
node_trainer -->|"loads samples"| node_dataset
node_trainer -->|"trains"| node_model
node_trainer -->|"saves weights"| node_checkpoint
node_trainer -->|"uses settings"| node_config
node_evaluator -->|"loads samples"| node_dataset
node_evaluator -->|"evaluates"| node_model
node_evaluator -->|"loads weights"| node_checkpoint
node_evaluator -->|"uses settings"| node_config

click node_extract "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/extract_features.py"
click node_config "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/config.py"
click node_dataset "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/dataset.py"
click node_trainer "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/train.py"
click node_model "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/model.py"
click node_evaluator "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/evaluate.py"
click node_webcam_app "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/app_webcam.py"
click node_streamlit_app "https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/app_streamlit.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_extract,node_config toneBlue
class node_dataset,node_trainer,node_model,node_evaluator toneAmber
class node_webcam_app,node_streamlit_app,node_holistic toneMint
class node_processed,node_checkpoint toneRose
class node_camera,node_video_upload toneIndigo
```

## Components

### Feature Preparation

- [Feature Extraction](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/extract_features.py): `extract_features.py`
- [Runtime Configuration](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/config.py): `config.py`

### Model Lifecycle

- [Dataset Loader](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/dataset.py): `dataset.py`
- [Model Training](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/train.py): `train.py`
- [BiLSTM Classifier](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/model.py): `model.py`
- [Model Evaluation](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/evaluate.py): `evaluate.py`

### Recognition Interfaces

- [Desktop Inference](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/app_webcam.py): `app_webcam.py`
- [Web Dashboard](https://github.com/syiyamkumar/isl-sign-language-translator/blob/main/app_streamlit.py): `app_streamlit.py`

### Local Data

- **Feature Sequences**
- **Model Checkpoint**

### Other components

- **Camera**
- **Video Upload**
- **MediaPipe Holistic**

## Connections

- Camera → Desktop Inference: provides frames (evidence: `app_webcam.py`)
- Camera → Web Dashboard: provides frames (evidence: `app_streamlit.py`)
- Video Upload → Web Dashboard: provides video (evidence: `app_streamlit.py`)
- Feature Extraction → MediaPipe Holistic: processes frames (evidence: `extract_features.py`)
- Feature Extraction → Runtime Configuration: uses paths (evidence: `extract_features.py`)
- Feature Extraction → Feature Sequences: writes sequences (evidence: `extract_features.py`)
- Desktop Inference → MediaPipe Holistic: processes frames (evidence: `app_webcam.py`)
- Desktop Inference → Feature Extraction: extracts keypoints (evidence: `app_webcam.py`)
- Desktop Inference → BiLSTM Classifier: classifies sequence (evidence: `app_webcam.py`)
- Desktop Inference → Model Checkpoint: loads weights (evidence: `app_webcam.py`)
- Desktop Inference → Runtime Configuration: uses settings (evidence: `app_webcam.py`)
- Web Dashboard → MediaPipe Holistic: processes frames (evidence: `app_streamlit.py`)
- Web Dashboard → Feature Extraction: extracts keypoints (evidence: `app_streamlit.py`)
- Web Dashboard → BiLSTM Classifier: classifies sequence (evidence: `app_streamlit.py`)
- Web Dashboard → Model Checkpoint: loads weights (evidence: `app_streamlit.py`)
- Web Dashboard → Runtime Configuration: uses settings (evidence: `app_streamlit.py`)
- Dataset Loader → Feature Sequences: reads sequences (evidence: `dataset.py`)
- Dataset Loader → Runtime Configuration: uses paths (evidence: `dataset.py`)
- Model Training → Dataset Loader: loads samples (evidence: `train.py`)
- Model Training → BiLSTM Classifier: trains (evidence: `train.py`)
- Model Training → Model Checkpoint: saves weights (evidence: `train.py`)
- Model Training → Runtime Configuration: uses settings (evidence: `train.py`)
- Model Evaluation → Dataset Loader: loads samples (evidence: `evaluate.py`)
- Model Evaluation → BiLSTM Classifier: evaluates (evidence: `evaluate.py`)
- Model Evaluation → Model Checkpoint: loads weights (evidence: `evaluate.py`)
- Model Evaluation → Runtime Configuration: uses settings (evidence: `evaluate.py`)
