An AI-powered audio transcription API. Upload any audio file and get a full transcript, automatic summary, sentiment analysis, and speaker detection — all running locally with no API keys needed.
- 🎙️ Transcription — Local speech-to-text via OpenAI Whisper
- 📝 Summarization — Auto-summary via Ollama (llama3)
- 😊 Sentiment Analysis — Positive / Negative / Neutral scoring
- 🗣️ Speaker Detection — Detects multiple speakers
- 📁 File Support — mp3, mp4, wav, m4a, ogg, flac, webm (max 50MB)
- 🐘 PostgreSQL — Stores all transcriptions
- 🐳 Docker — One command to run everything
- ✅ CI — GitHub Actions lint and tests
- Upload an audio file to
POST /transcriptions/ - API saves it instantly and returns
status: processing - In the background: Whisper transcribes → Ollama summarizes → Ollama analyzes sentiment
- Poll
GET /transcriptions/{id}to get the completed result
| Layer | Technology |
|---|---|
| API Framework | FastAPI 0.115 (async) |
| Transcription | OpenAI Whisper (local) |
| Summarization + Sentiment | Ollama + llama3 (local) |
| Database | PostgreSQL 16 + SQLAlchemy 2 |
| Containerization | Docker + Docker Compose |
| Testing | pytest + pytest-asyncio |
| CI | GitHub Actions |
git clone https://github.com/JeffiN11/JeffiN11-audio-text-app.git
cd JeffiN11-audio-text-app
docker compose up --buildAPI: http://localhost:8000 Docs: http://localhost:8000/docs
| Method | Endpoint | Description |
|---|---|---|
| GET | / | Health check |
| POST | /transcriptions/ | Upload audio file |
| GET | /transcriptions/ | List all transcriptions |
| GET | /transcriptions/{id} | Get single transcription |
| DELETE | /transcriptions/{id} | Delete transcription |
curl -X POST http://localhost:8000/transcriptions/ \
-F "file=@meeting.mp3"Response:
{
"id": 1,
"filename": "meeting.mp3",
"status": "processing",
"transcript": null,
"summary": null,
"sentiment": "pending"
}After processing:
{
"id": 1,
"filename": "meeting.mp3",
"status": "completed",
"transcript": "Good morning everyone, let us get started with the weekly sync...",
"summary": "A weekly team sync discussing project progress and upcoming deadlines.",
"sentiment": "positive",
"sentiment_score": 0.82,
"speakers_detected": 3,
"language": "en",
"duration": 342.5
}pip install -r requirements-dev.txt
pip install fastapi uvicorn sqlalchemy asyncpg pydantic httpx python-dotenv python-multipart alembic
pytest -v