Recording, transcribing and cleaning up transcripts all locally
Recording, transcribing and cleaning up transcripts all locally
A base for your portfolio piece to land your next AI engineering job. AI-powered voice transcription with Whisper and LLM cleaning. Browser-based recording interface with FastAPI backend.
** Recommended Video Tutorial:** For project structure and API details, watch the full tutorial on YouTube: https://youtu.be/WUo5tKg2lnE
This repository uses checkpoint branches to progressively teach AI engineering concepts:
| Branch | Description | Builds On | Learning Resource |
|---|---|---|---|
main |
Complete transcript app with Whisper + LLM cleaning (runs fully locally, beginner friendly) | — | YouTube Tutorial |
checkpoint-1-fundamentals |
Exercise generation system for learning Python/TypeScript fundamentals | — | Classroom |
checkpoint-agentic-openrouter |
Agentic workflow with autonomous tool selection | main |
Classroom |
checkpoint-pydanticai-openrouter |
PydanticAI framework for structured agent development | checkpoint-agentic-openrouter |
Classroom |
checkpoint-rest-mcp-openrouter |
MCP integration with REST API and GitHub Issues | checkpoint-pydanticai-openrouter |
Classroom |
Why "openrouter" in branch names? These branches use OpenRouter to access powerful cloud models that reliably support tool/function calling. Small local models struggle with agentic workflows.
Switch branches with: git checkout
Features:
Note that the vanilla version uses a smaller language model running on your CPU. This means the AI may not listen to system prompts that well depending on the transcript. The challenge for you is to change this portfolio app to advance the solution and make it your own.
For example:
** Need help and want to learn more?**
Full courses on AI Engineering are available at https://aiengineer.community/join
This project is devcontainer-first. The easiest way to get started:
Cmd/Ctrl+Shift+P → "Dev Containers: Reopen in Container"VS Code automatically:
backend/.env with working defaultsSkip to Running the App.
Don't have a powerful PC? GitHub Codespaces provides cloud-based development environments that work with this project's devcontainer.
The devcontainer automatically configures everything. Once ready:
If you need true localhost access (some code expects localhost:8000):
localhost** Tip:** Stop your Codespace when not in use to conserve free hours. Go to github.com/codespaces to manage active instances.
** Video Guide:** Watch the GitHub Codespaces setup tutorial for a walkthrough.
** Other Platforms:** Any cloud platform supporting devcontainers (Gitpod, DevPod, etc.) can also be used with this repository's
.devcontainerconfiguration.
The devcontainer is the easiest supported setup method for beginners. If you choose to install manually, you'll need:
backend/.env.example to backend/.env and configureuv sync (backend) and npm install (frontend)ollama pull llama3.1:8bFor detailed setup, use the devcontainer above.
Open two terminals and run:
Terminal 1 - Backend:
cd backend
uv sync && uv run uvicorn app:app --reload --host 0.0.0.0 --port 8000 --timeout-keep-alive 600
Note:
uv syncensures dependencies are up-to-date (useful after switching branches).--timeout-keep-alive 600sets a 10-minute timeout for long audio processing.
Terminal 2 - Frontend:
cd frontend
npm install && npm run dev
Note:
npm installensures dependencies are up-to-date (useful after switching branches).
Browser: Open http://localhost:3000
This app is compatible with any OpenAI API-format LLM provider:
The devcontainer automatically creates backend/.env with working Ollama defaults. No configuration needed to get started.
To use a different provider, edit backend/.env:
LLM_BASE_URL - API endpointLLM_API_KEY - API keyLLM_MODEL - Model nameContainer won't start or is very slow:
⚠️ This app runs an LLM on CPU and requires adequate Docker resources.
Configure Docker Desktop resources:
Expected specs: Modern laptop/desktop with 8+ CPU cores and 16GB RAM. More CPU = faster LLM responses.
Microphone not working:
Backend fails to start:
~/.cache/huggingface/LLM errors:
LLM is slow:
LLM_MODEL in backend/.env).env)Cannot access localhost:3000 or localhost:8000 from host machine:
Port already in use:
--port 8001vite.config.js, change port: 3000No open issues yet, or sync has not completed.