Django-based audio transcription app for Liberia pidgin using Whisper and Celery
# Transcriber Project
## Overview
Web app for uploading audio and generating structured transcripts with a review UI. It supports Liberian local pidgin.
Note: Transcription to Liberian Pidgin is not perfect and may contain mistakes. User review is advised.
The translation pipeline is intentionally designed to allow optional LLM-based semantic normalization in the future. This feature is currently disabled to avoid external dependencies and costs.
This project started as an exploratory, fast-iteration build driven by experimentation and intuition.
## Requirements
- Python 3.11+
- Redis (for Celery broker)
- ffmpeg + ffprobe on PATH
## Setup
1. Create and activate a virtual environment.
2. Install dependencies:
```bash
# For Linux environment
pip install -r requirements.txt
```
```bash
# For Windows Environment
pip install -r requirements_windows.txt
```
3. Set environment variables:
```bash
# Windows (PowerShell)
$env:DJANGO_SECRET_KEY="replace-with-your-secret"
```
```bash
# Linux/macOS (bash/zsh)
export DJANGO_SECRET_KEY="replace-with-your-secret"
```
## Optional LLM Normalization (Disabled by Default)
If you want to enable LLM-based normalization:
1. Set environment variables:
```bash
LLM_API_URL="
api.openai.com"
LLM_API_KEY="your-api-key"
LLM_MODEL="gpt-4o-mini"
```
2. Update the UI to allow translation requests (the current UI shows a disabled message).
This will allow the "Translate to Standard English" button to call the LLM for semantic normalization.
## Run Django
```bash
python manage.py migrate
python manage.py runserver
```
## Run Celery
```bash
celery -A transcriber_project worker --concurrency=3 --pool=prefork -l info
```
## Quickstart
```bash
python -m venv venv
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```
## Project Structure
```
transcriber_project/
settings.py
urls.py
celery.py
transcription/
exports/
services/
templates/
templatetags/
tasks.py
views.py
manage.py
`` …