# South African Language Video Transcript POC
A proof-of-concept that takes a South African legal/courtroom-style video
in **Tswana** or **Zulu**, transcribes it, optionally identifies speaker
turns, translates the speech into English, displays it as a chronological
script alongside the video, and exports the result as a Word document.
## 1. Problem statement
Legal/courtroom videos in South African languages need to be reviewed by
English-speaking stakeholders. This POC demonstrates an end-to-end
pipeline — video in, timestamped English transcript out — without manual
transcription or translation.
## 2. Architecture
```
Video --(FFmpeg)--> Mono 16kHz WAV --(Sunbird Whisper ASR)--> Timestamped segments
|
+--------------+--------------+
| |
(optional) pyannote diarization Azure Translator
| |
+--------------+--------------+
|
Transcript builder
|
+--------------------+--------------------+
| |
Gradio UI (video + script view) python-docx export
```
Single Python application. No microservices, no database, no persistent
cloud storage — everything runs in a local per-session temp folder.
## 3. Technologies and why
| Component | Technology | Why |
|---|---|---|
| UI | Gradio | Single-file browser demo, minimal frontend work |
| Audio | FFmpeg | Reliable, universal video->WAV conversion |
| ASR | `Sunbird/asr-whisper-51-african-languages` | Whisper Large v3 fine-tune with confirmed Tswana + Zulu support; general ASR services (Azure Speech, etc.) were tested earlier and found not to cover these languages adequately |
| Diarization (optional) | `pyannote/speaker-diarization-3.1` | Generic speaker-turn detection; gated model, optional so the POC still works without it |
| Translation | Azure Translator (F0 tier) | Confirmed to support Setswana (`tn`) and Zulu (`zu`) -> English; free tier suitable for a POC |
| Export | python-docx | Programmatic, structured Word …