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.

Scroll to Top