First attempt at building a Visual Speech Recognition (VSR) system for Gujarati language using the SyncVSR framework.
This project implements the SyncVSR (Synchronize Visual Speech Recognition) framework for Gujarati — a language with no existing lip reading datasets or benchmarks.
Video Frames → AV-HuBERT (frozen) → Conformer Encoder → Classification Head → Word
↓
Sync Head → Audio Token Prediction (training only)
Loss = L_classification + λ × L_sync
├── gujarati_vsr/ # Core code
│ ├── lightning_phase2_train.py # Sentence-level SyncVSR training
│ ├── word_level_syncvsr.py # Word-level experiments + ablation
│ └── ... # Supporting scripts
│
├── docs/ # Documentation
│ ├── dataset_protocol.md # Gu-LRW recording protocol
│ └── syncvsr_explained.md # Paper walkthrough
│
├── SyncVSR/ # Original SyncVSR repo (reference)
└── auto_avsr/ # Auto-AVSR repo (reference)
| Epoch | Train Loss | Val Loss | Status |
|---|---|---|---|
| 1 | 6.49 | 5.69 | Learning Gujarati patterns |
| 22 | 4.86 | 5.08 | Best model (early stop at 29) |
Finding: 5K samples insufficient for sentence-level VSR. Model learns language patterns but not lip-to-text mapping.
| Model | Top-1 Acc | Top-3 Acc |
|---|---|---|
| Features Only (baseline) | TBD | TBD |
| + Conformer | TBD | TBD |
| + Conformer + SyncVSR | TBD | TBD |
| Model | Purpose | Source |
|---|---|---|
| AV-HuBERT Large | Visual feature extraction | fairseq |
| MMS-300m | Audio tokenization (1400 languages incl. Gujarati) | facebook/mms-300m |
IT549 — Advanced Machine Learning, Course Project
9 commits
Python
100.0%
First attempt at building a Visual Speech Recognition (VSR) system for Gujarati language using the SyncVSR framework.
This project implements the SyncVSR (Synchronize Visual Speech Recognition) framework for Gujarati — a language with no existing lip reading datasets or benchmarks.
Video Frames → AV-HuBERT (frozen) → Conformer Encoder → Classification Head → Word
↓
Sync Head → Audio Token Prediction (training only)
Loss = L_classification + λ × L_sync
├── gujarati_vsr/ # Core code
│ ├── lightning_phase2_train.py # Sentence-level SyncVSR training
│ ├── word_level_syncvsr.py # Word-level experiments + ablation
│ └── ... # Supporting scripts
│
├── docs/ # Documentation
│ ├── dataset_protocol.md # Gu-LRW recording protocol
│ └── syncvsr_explained.md # Paper walkthrough
│
├── SyncVSR/ # Original SyncVSR repo (reference)
└── auto_avsr/ # Auto-AVSR repo (reference)
| Epoch | Train Loss | Val Loss | Status |
|---|---|---|---|
| 1 | 6.49 | 5.69 | Learning Gujarati patterns |
| 22 | 4.86 | 5.08 | Best model (early stop at 29) |
Finding: 5K samples insufficient for sentence-level VSR. Model learns language patterns but not lip-to-text mapping.
| Model | Top-1 Acc | Top-3 Acc |
|---|---|---|
| Features Only (baseline) | TBD | TBD |
| + Conformer | TBD | TBD |
| + Conformer + SyncVSR | TBD | TBD |
| Model | Purpose | Source |
|---|---|---|
| AV-HuBERT Large | Visual feature extraction | fairseq |
| MMS-300m | Audio tokenization (1400 languages incl. Gujarati) | facebook/mms-300m |
IT549 — Advanced Machine Learning, Course Project
9 commits
Python
100.0%