A full-stack system for creating a 150+ hour Vietnamese-English code-switching speech translation dataset, featuring an annotation workbench and model training infrastructure.
0
stars
1
commits
Jupyter Notebook
primary language
Jun 9, 2026
updated
A full-stack system for creating a 150+ hour Vietnamese-English code-switching speech translation dataset, featuring an annotation workbench and model training infrastructure.
┌─────────────────────────────────────────────────────────────────────────┐
│ DATA FACTORY │
├─────────────────────────────────────────────────────────────────────────┤
│ Ingestion → Processing → Annotation → Export → Training │
│ (yt-dlp) (FFmpeg+AI) (React UI) (JSONL) (Wav2Vec2/Whisper) │
└─────────────────────────────────────────────────────────────────────────┘
| Layer | Technology | Description |
|---|---|---|
| Frontend | React + Vite + Wavesurfer.js | Waveform annotation workbench |
| Backend | FastAPI + SQLModel | REST API with PostgreSQL |
| Processing | FFmpeg + Gemini AI | Audio chunking and transcription |
| Training | PyTorch + HuggingFace | Wav2Vec2+mBART E2E, Whisper fine-tuning |
| Storage | PostgreSQL + DVC | Metadata and versioned audio data |
CREATE DATABASE speech_translation_db;
cp .env.example .env
# Edit .env with your PostgreSQL credentials and Gemini API keys
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python scripts/init_db.py
uvicorn backend.main:app --reload --port 8000
cd frontend
npm install
npm run dev
The training module is isolated with its own environment for GPU-intensive model training.
cd training
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Training configs are in training/configs/:
dev_e2e.yaml - Local development (RTX 2050, 25min data)prod_e2e.yaml - Production training (H100, full dataset)Post-training analysis is available in training/training_analysis.ipynb.
├── backend/
│ ├── db/ # SQLModel models, database engine
│ ├── routers/ # FastAPI endpoints (videos, chunks, segments)
│ ├── processing/ # FFmpeg chunking, Gemini transcription
│ ├── operations/ # DeepFilterNet denoising, export
│ └── auth/ # X-User-ID authentication
├── frontend/
│ └── src/
│ ├── components/ # WaveformViewer, SegmentTable
│ └── pages/ # Dashboard, Annotation, Settings
├── training/
│ ├── configs/ # YAML training configurations
│ ├── models/ # E2E and Whisper model definitions
│ ├── scripts/ # Training and evaluation scripts
│ └── outputs/ # Checkpoints and results (gitignored)
├── scripts/
│ ├── init_db.py # Database initialization
│ └── start_dev.ps1 # Development startup script
├── docs/
│ ├── 02_system-design.md
│ ├── 03_workflow.md
│ └── 05_model-training.md
└── data/ # Audio files (gitignored, DVC-tracked)
├── raw/ # Original downloads
└── chunks/ # 5-min WAV segments
ingest_gui.py or APImanifest.tsv for model trainingDetailed documentation is available in the docs/ directory:
See .env.example for all configuration options including:
1 commits
Jupyter Notebook
62.7%
Python
22.3%
TypeScript
12.2%
CSS
1.2%
A full-stack system for creating a 150+ hour Vietnamese-English code-switching speech translation dataset, featuring an annotation workbench and model training infrastructure.
0
stars
1
commits
Jupyter Notebook
primary language
Jun 9, 2026
updated
A full-stack system for creating a 150+ hour Vietnamese-English code-switching speech translation dataset, featuring an annotation workbench and model training infrastructure.
┌─────────────────────────────────────────────────────────────────────────┐
│ DATA FACTORY │
├─────────────────────────────────────────────────────────────────────────┤
│ Ingestion → Processing → Annotation → Export → Training │
│ (yt-dlp) (FFmpeg+AI) (React UI) (JSONL) (Wav2Vec2/Whisper) │
└─────────────────────────────────────────────────────────────────────────┘
| Layer | Technology | Description |
|---|---|---|
| Frontend | React + Vite + Wavesurfer.js | Waveform annotation workbench |
| Backend | FastAPI + SQLModel | REST API with PostgreSQL |
| Processing | FFmpeg + Gemini AI | Audio chunking and transcription |
| Training | PyTorch + HuggingFace | Wav2Vec2+mBART E2E, Whisper fine-tuning |
| Storage | PostgreSQL + DVC | Metadata and versioned audio data |
CREATE DATABASE speech_translation_db;
cp .env.example .env
# Edit .env with your PostgreSQL credentials and Gemini API keys
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python scripts/init_db.py
uvicorn backend.main:app --reload --port 8000
cd frontend
npm install
npm run dev
The training module is isolated with its own environment for GPU-intensive model training.
cd training
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Training configs are in training/configs/:
dev_e2e.yaml - Local development (RTX 2050, 25min data)prod_e2e.yaml - Production training (H100, full dataset)Post-training analysis is available in training/training_analysis.ipynb.
├── backend/
│ ├── db/ # SQLModel models, database engine
│ ├── routers/ # FastAPI endpoints (videos, chunks, segments)
│ ├── processing/ # FFmpeg chunking, Gemini transcription
│ ├── operations/ # DeepFilterNet denoising, export
│ └── auth/ # X-User-ID authentication
├── frontend/
│ └── src/
│ ├── components/ # WaveformViewer, SegmentTable
│ └── pages/ # Dashboard, Annotation, Settings
├── training/
│ ├── configs/ # YAML training configurations
│ ├── models/ # E2E and Whisper model definitions
│ ├── scripts/ # Training and evaluation scripts
│ └── outputs/ # Checkpoints and results (gitignored)
├── scripts/
│ ├── init_db.py # Database initialization
│ └── start_dev.ps1 # Development startup script
├── docs/
│ ├── 02_system-design.md
│ ├── 03_workflow.md
│ └── 05_model-training.md
└── data/ # Audio files (gitignored, DVC-tracked)
├── raw/ # Original downloads
└── chunks/ # 5-min WAV segments
ingest_gui.py or APImanifest.tsv for model trainingDetailed documentation is available in the docs/ directory:
See .env.example for all configuration options including:
1 commits
Jupyter Notebook
62.7%
Python
22.3%
TypeScript
12.2%
CSS
1.2%