A FastAPI-based backend service for audio transcription using OpenAI's Whisper model with API key authentication.
- Admin Authentication: Single admin user with JWT-based authentication
- API Key Management: Admin can create/revoke API keys for clients
- Audio Transcription: Upload audio files or stream audio for transcription
- Whisper Integration: Uses OpenAI Whisper for accurate transcription
- RESTful API: Clean API design for easy integration
- Create virtual environment:
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate- Install dependencies:
uv pip install -e .- Create
.envfile:
cp .env.example .env
# Edit .env with your settings- Generate a secret key:
openssl rand -hex 32
# Add to .env as SECRET_KEY- Run the server:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000POST /api/admin/login- Admin login (returns JWT token)POST /api/admin/api-keys- Create new API keyGET /api/admin/api-keys- List all API keysDELETE /api/admin/api-keys/{key_id}- Revoke API keyGET /api/admin/transcriptions- List all transcriptions
POST /api/transcribe/upload- Upload audio file for transcriptionPOST /api/transcribe/stream- Stream audio for real-time transcriptionGET /api/transcribe/{transcription_id}- Get transcription resultGET /api/transcribe- List user's transcriptions
curl -X POST http://localhost:8000/api/admin/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "your_password"}'curl -X POST http://localhost:8000/api/admin/api-keys \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Client App", "description": "Mobile app API key"}'curl -X POST http://localhost:8000/api/transcribe/upload \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@audio.mp3"py-whisper-be/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI application
│ ├── config.py # Configuration settings
│ ├── database.py # Database setup
│ ├── models.py # SQLAlchemy models
│ ├── schemas.py # Pydantic schemas
│ ├── auth.py # Authentication logic
│ ├── dependencies.py # FastAPI dependencies
│ └── routers/
│ ├── __init__.py
│ ├── admin.py # Admin endpoints
│ └── transcribe.py # Transcription endpoints
├── .env # Environment variables (not in git)
├── .env.example # Environment template
├── .gitignore
├── pyproject.toml
└── README.md
MIT