Speakr is a self-hosted web application for transcribing audio recordings, generating AI-powered summaries and titles, and interacting with transcripts via chat. It uses a Flask (Python) backend and Vue.js frontend, and supports OpenAI-compatible APIs like Whisper and OpenRouter.
✅ Requirements
- Linux server (Ubuntu 20.04/22.04 or compatible)
- SSH access with
sudo
privileges - Python 3.8+ and
venv
git
,curl
,wget
- API keys for:
- Transcription service (OpenAI Whisper, local instance, etc.)
- Language model (e.g., OpenRouter or GPT-4o)
1. Install system dependencies
sudo apt update && sudo apt install -y git python3 python3-venv python3-pip curl
2. Clone the Speakr repository
git clone https://github.com/murtaza-nasir/speakr.git
cd speakr
3. Create a Python virtual environment
python3 -m venv venv
source venv/bin/activate
4. Install Python dependencies
pip install --upgrade pip
pip install -r requirements.txt
5. Configure your environment
Copy the example environment file:
cp .env.example .env
nano .env
Fill in your credentials and configuration:
# --- Summarization/Chat ---
OPENROUTER_API_KEY=your_openrouter_key
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_MODEL_NAME=openai/gpt-4o-mini
# --- Transcription ---
TRANSCRIPTION_API_KEY=cant-be-empty
TRANSCRIPTION_BASE_URL=http://127.0.0.1:8787/v1/
WHISPER_MODEL=Systran/faster-distil-whisper-large-v3
# --- Flask Security ---
SECRET_KEY=$(python3 -c 'import secrets; print(secrets.token_hex(32))')
# --- User registration ---
ALLOW_REGISTRATION=true
6. Initialize the database
python reset_db.py
7. Create an admin user
python create_admin.py
Follow the prompts to set up your first admin account.
8. Run the application
Development mode (Flask):
flask run --host=0.0.0.0 --port=8899
Production mode (Gunicorn):
gunicorn --workers 3 --bind 0.0.0.0:8899 --timeout 600 app:app
9. Access the web app
In your browser, go to:
http://YOUR_SERVER_IP:8899
🔁 Optional: Deploy with systemd
A setup script is included for automated deployment:
chmod +x deployment/setup.sh
sudo bash deployment/setup.sh
This will:
- Install Speakr in
/opt/transcription-app
- Set up a virtual environment
- Configure systemd with
transcription.service
Check service status:
sudo systemctl status transcription.service
🔐 Security tips
- Use Nginx as a reverse proxy with HTTPS
- Protect the app with a firewall (UFW) and fail2ban
- Set
ALLOW_REGISTRATION=false
to restrict user access
✅ Final checks
Admin panel:
http://YOUR_SERVER_IP:8899/admin
From here, you can manage users, monitor usage, and interact with uploaded recordings.