Scriberr
Self-hosted AI audio transcription
Install / Use
/learn @rishikanthc/ScriberrREADME
Update on project status
Hi everyone, It’s been a while since the last update, so I wanted to share what’s been going on with Scriberr.
Recently, I was affected by layoffs at eBay (around 800 roles were impacted), and I unfortunately was one of them. The past few weeks have been a bit overwhelming as I’ve been focused on figuring out next steps and actively searching for new opportunities.
Because of that, I haven’t been able to spend time on Scriberr lately. As much as I’d love to keep pushing it forward, I need to prioritize getting back on my feet first. Development is paused for now, but definitely not abandoned. I still have a lot of ideas and plans I’m excited to come back to.
That said, if anyone in the community is interested in contributing or helping move the project forward during this time, I’d be very open to collaborating. I’d love to see Scriberr continue to evolve even while I’m temporarily away from active development.
I really appreciate all the support, interest, and encouragement this project has received so far. It genuinely means a lot, and I’m looking forward to continuing work on Scriberr once things stabilize on my end. Thanks again for your patience and support, I truly appreciate it.
In the meantime, if you happen to know of any opportunities in AI/ML engineering or research, I’d be incredibly grateful for any referrals or connections. You can find more about my work and experience here: https://rishikanthc.com
Sponsors
Meeting Transcription API
If you're looking for a transcription API for meetings, consider checking out Recall.ai, an API that works with Zoom, Google Meet, Microsoft Teams, and more.
Recall.ai diarizes by pulling the speaker data and seperate audio streams from the meeting platforms, which means 100% accurate speaker diarization with actual speaker names.
Introduction
At its core, Scriberr allows you to transcribe audio and video locally on your machine, ensuring no data is ever sent to a third-party cloud provider. Leveraging state-of-the-art machine learning models (such as NVIDIA Parakeet, and Canary) or the older more popular Whisper models, it delivers high-accuracy text with word-level timing.
Scriberr goes beyond simple transcription and provides various advanced capabilities. It combines powerful under-the-hood AI with a polished, fluid user interface that makes managing your recordings feel effortless. Whether you are sorting through voice notes or analyzing long meetings, Scriberr provides a beautiful environment to get work done:
- Smart Speaker Detection: Scriberr automatically detects different speakers (Diarization) and labels exactly who said what.
- Chat with your Audio: Connect seamlessly with Ollama or OpenAI API compatible providers. You can generate summaries, ask questions, or have a full conversation with your transcripts right inside the app.
- Built for your Workflow: With extensive APIs and Folder Watcher that automatically processes new files in a folder, Scriberr fits right into your existing automations (like n8n).
- Capture & Organize: Use the built-in audio recorder to capture thoughts on the fly, and the integrated note-taking features to annotate your transcripts as you listen.
- Native Experience everywhere: Scriberr supports PWA (Progressive Web App) installation, giving you a native app experience on your desktop or mobile device.
- A Polished UI: I’ve focused on the little UI niceties that make the app feel responsive and satisfying to use.
Why I built this
The inspiration for Scriberr was born out of privacy paranoia and not wanting to pay for subscription. About a year ago, I purchased a Plaud Note for recording voice memos. I loved the device itself; the form factor, microphone quality, and workflow were excellent.
However, transcription was done on their cloud servers. As someone who is paranoid about privacy I wasn't comfortable with uploading my recordings to a third party provider. Moreover I was hit with subscription costs: $100 a year for 20 hours of transcription per month, or $240 a year for unlimited access. As an avid self-hoster with a background in ML and AI, it felt wrong to pay such a premium for a service I knew I could engineer myself.
I decided to build Scriberr to bridge that gap, creating a powerful, private, and free alternative for everyone.
Screenshots
<details> <summary>Click to expand</summary> <p align="center"> <img alt="Transcript view" src="screenshots/transcript-light.png" width="720" /> </p> <p align="center"><em>Transcript reader with playback follow‑along and seek‑from‑text.</em></p> <p align="center"> <img alt="Chat with Audio" src="screenshots/chat.png" width="720" /> </p> <p align="center"><em>Chat with your transcripts using local LLMs or OpenAI.</em></p> <p align="center"> <img alt="Notes and Highlights" src="screenshots/notes.png" width="720" /> </p> <p align="center"><em>Highlight key moments and take notes while listening.</em></p> <p align="center"> <img alt="AI Summaries" src="screenshots/ai-summary.png" width="720" /> </p> <p align="center"><em>Generate comprehensive summaries of your recordings.</em></p> <p align="center"> <strong style="font-size: 1.2em;">Dark Mode</strong> </p> <p align="center"> <img alt="Homepage Dark Mode" src="screenshots/homepage-dark.png" width="720" /> </p> <p align="center"><em>Homepage in Dark Mode.</em></p> <p align="center"> <img alt="Transcript Dark Mode" src="screenshots/transcript-dark.png" width="720" /> </p> <p align="center"><em>Transcript view in Dark Mode.</em></p>Mobile
<p align="center"> <img alt="Mobile Homepage" src="screenshots/homepage-mobile.PNG" width="300" /> <img alt="Mobile Homepage Dark" src="screenshots/homepage-mobile-dark.PNG" width="300" /> </p> <p align="center"><em>PWA mobile app (Light & Dark).</em></p> <p align="center"> <img alt="Mobile Transcript" src="screenshots/transcript-mobile.PNG" width="300" /> <img alt="Mobile Transcript Dark" src="screenshots/transcript-mobile-dark.PNG" width="300" /> </p> <p align="center"><em>Mobile transcript reading experience.</em></p> </details>Installation
Get Scriberr running on your system in a few minutes.
Migrating from v1.1.0
If you are upgrading from v1.1.0, please follow these steps to ensure a smooth transition. Version 1.2.0 introduces a separation between application data (database, uploads) and model data (Python environments).
1. Update Volume Mounts
You will need to update your Docker volume configuration to split your data:
- Application Data: Bind your existing data folder (containing
scriberr.db,jwt_secret,transcripts/, anduploads/) to/app/data. - Model Environment: Create a new, empty folder and bind it to
/app/whisperx-env.
2. Clean Up Old Environments
CRITICAL: You must delete any existing
whisperx-envfolder from your previous installation.
The Python environment and models need to be reinitialized for v1.2.0. If the application detects an old environment, it may attempt to use it, leading to compatibility errors. Starting with a fresh /app/whisperx-env volume ensures the correct dependencies are installed.
Install with Homebrew (macOS & Linux)
The easiest way to install Scriberr is using Homebrew. If you don’t have Homebrew installed, get it here first.
# Add the Scriberr tap
brew tap rishikanthc/scriberr
# Install Scriberr (automatically installs UV dependency)
brew install scriberr
# Start the server
scriberr
Open http://localhost:8080 in your browser.
Configuration
Scriberr works out of the box. However, for Homebrew or manual installations, you can customize the application behavior using environment variables or a .env file placed in the same directory as the binary (or where you run the command from).
Docker Users: You can ignore this section if you are using
docker-compose.yml, as these values are already configured with sane defaults.
Environment Variables
| Variable | Description | Default |
| :--- | :--- | :--- |
| PORT | The port the server listens on. | 8080 |
| HOST | The interface to bind to. | 0.0.0.0 |
| APP_ENV | Application environment (development or production). | development |
| ALLOWED_ORIGINS | CORS allowed origins (comma separated). | http://localhost:5173,http://localhost:8080 |
| DATABASE_PATH | Path to the SQLite database file. | data/scriberr.db |
| UPLOAD_DIR | Directory for storing uploaded files. | data/uploads |
| TRANSCRIPTS_DIR | Directory for storing transcripts. | data/transcripts |
| WHISPERX_ENV | P
