Use URL-based logos, env-based WebGUI title, apstrom.ca link, update README
Mirror and run GitLab CI / build (push) Has been cancelled
Ruff / ruff (push) Has been cancelled

This commit is contained in:
admin
2026-06-14 15:35:16 +00:00
parent fb1dc3324d
commit dc20e9cff0
5 changed files with 129 additions and 36 deletions
+92 -10
View File
@@ -1,28 +1,42 @@
# ScrAIbe LocalAI-Backed Transcription and Summarization
ScrAIbe is a lightweight transcription and summarization client that:
ScrAIbe is a transcription and summarization service that:
- Sends audio to a LocalAI server running vibevoice.cpp for transcription and speaker diarization.
- Optionally uses a second LLM to generate a detailed, structured summary of the conversation.
- Optionally uses a second LLM to generate a detailed, structured summary.
- Provides:
- A web GUI for uploading audio and receiving transcripts via email.
- A CLI and Python API for direct integration.
No local speech models or heavy dependencies are required. ScrAIbe is designed to be run as a thin client in front of your own AI services.
No local speech models or heavy dependencies are required. ScrAIbe is designed as a thin client in front of your own AI services.
For more information: https://apstrom.ca
## Features
- Transcription with speaker diarization via LocalAI:
- Uses the `/v1/audio/diarization` endpoint.
- Uses the /v1/audio/diarization endpoint.
- Compatible with vibevoice.cpp and other diarization-capable backends.
- Optional AI-powered summarization:
- Task: `transcript_and_summarize`
- Chunks long transcripts, summarizes each chunk, then generates a final comprehensive summary.
- Summary highlights:
- Task: transcript_and_summarize
- Highlights:
- Main topics and discussion points
- Key decisions and outcomes
- Action items and responsibilities
- Open issues and risks
- Async web GUI:
- Upload audio via browser.
- Jobs are queued and processed in the background (Celery + Redis).
- Emails:
- Immediate confirmation with queue position.
- Final transcript (TXT + JSON) when ready.
- Summary as MD file (if requested).
- Error notification if processing fails.
- Customizable branding:
- Web GUI title, logo, and email logo via environment variables.
- CLI and Python API:
- Simple command-line interface.
- Drop-in `Scraibe` class for integration into other tools.
- Drop-in Scraibe class for integration into other tools.
- Docker-ready:
- Lightweight container, configured via environment variables.
@@ -38,6 +52,31 @@ No local speech models or heavy dependencies are required. ScrAIbe is designed t
- Transcript assembly
- Chunked summarization
- Output formatting (e.g., .md with transcript + summary)
- Runs:
- Web GUI (Gradio)
- Celery worker (async processing)
- Redis (in-container by default)
## Quick Start (Web GUI in Docker)
Run the container with your LocalAI and summarizer endpoints:
- docker run -d \
-p 7860:7860 \
-e LOCALAI_API_URL=http://localai:8080 \
-e SUMMARIZER_API_URL=http://llm:8080 \
-e EMAIL_SMTP_HOST=smtp.your-domain.com \
-e EMAIL_SMTP_PORT=587 \
-e EMAIL_SMTP_USER=transcribe@your-domain.com \
-e EMAIL_SMTP_PASSWORD=your_password \
-e EMAIL_FROM_ADDRESS="ScrAIbe <transcribe@your-domain.com>" \
-e EMAIL_CONTACT_ADDRESS=support@your-domain.com \
-e WEBUI_TITLE="Your Transcription Service" \
-e WEBUI_LOGO_URL="https://your-domain.com/logo.png" \
-e EMAIL_LOGO_URL="https://your-domain.com/logo.png" \
scraibe:latest
Then open: http://<host>:7860
## Quick Start (CLI)
@@ -101,7 +140,7 @@ Other options (e.g., --language, --num-speakers) are accepted and forwarded wher
ScrAIbe is designed to run in Docker as a client to your LocalAI and summarizer LLM.
### Basic run (transcribe)
### Basic run (transcribe via CLI)
- docker run -it \
-e LOCALAI_API_URL=http://localai:8080 \
@@ -109,7 +148,7 @@ ScrAIbe is designed to run in Docker as a client to your LocalAI and summarizer
scraibe:latest \
-f /audio/meeting.wav -o /audio/output -of txt
### Basic run (transcribe + summarize)
### Basic run (transcribe + summarize via CLI)
- docker run -it \
-e LOCALAI_API_URL=http://localai:8080 \
@@ -148,6 +187,46 @@ Summarization LLM:
- Optional (default: llama-3.1-8b-instruct).
- Model name used for summarization.
Web GUI and branding:
- WEBUI_TITLE:
- Title shown in the web GUI (default: A.P.Strom Transcription).
- WEBUI_LOGO_URL:
- URL of the logo displayed in the web GUI header.
- Example: https://your-domain.com/logo.png
Async processing (Celery + Redis):
- CELERY_BROKER_URL:
- Redis broker URL (default: redis://localhost:6379/0).
- CELERY_RESULT_BACKEND:
- Redis backend URL (default: redis://localhost:6379/0).
- SCRAIBE_UPLOAD_DIR:
- Directory where uploaded audio is stored (default: /tmp/scraibe_uploads).
Email configuration:
- EMAIL_SMTP_HOST:
- SMTP server host.
- EMAIL_SMTP_PORT:
- SMTP server port (e.g., 587).
- EMAIL_SMTP_USER:
- SMTP username.
- EMAIL_SMTP_PASSWORD:
- SMTP password.
- EMAIL_SMTP_USE_TLS:
- Use TLS (true/false; default: true).
- EMAIL_FROM_ADDRESS:
- Sender address (e.g., "ScrAIbe <transcribe@your-domain.com>").
- EMAIL_CONTACT_ADDRESS:
- Support contact address shown in email templates.
- EMAIL_LOGO_URL:
- URL of the logo used in emails (preferred).
- EMAIL_LOGO_PATH:
- Fallback local path for email logo (default: /app/src/misc/logo1.png).
- EMAIL_CSS_PATH:
- Path to the CSS used in emails (default: /app/src/misc/mail_style.css).
All of these can also be overridden from the CLI when needed (e.g., --localai-api-url, --summarizer-api-url).
## Dependencies
@@ -158,6 +237,9 @@ Core runtime dependencies:
- httpx
- numpy
- tqdm
- gradio
- celery[redis]
- redis
- ffmpeg (for audio preprocessing)
No local Whisper, PyTorch, or Pyannote models are required.