Projects video2text

video2text

v1.0.1 · MIT

A fully local, speaker-diarized transcription app. It turns mp4 video/audio files into text organized by speaker, and no file ever leaves your machine.

Transcription Speaker Diarization Whisper macOS Apple Silicon Privacy Local AI

Quick Install

Download (macOS, Apple Silicon)
curl -LO https://github.com/neurosamAI/video2text/releases/latest/download/video2text-v1.0.1-macos-arm64.zip
Build from source
git clone https://github.com/neurosamAI/video2text && cd video2text && ./build.sh

Key Features

Fully Local Processing

Both speech recognition and speaker diarization run entirely on Apple Silicon. Meeting content and voices are never sent to an external server.

Automatic Voice Matching

Compares registered voice profiles against the diarization output using SpeechBrain speaker embeddings, and automatically matches names.

Rematch / Relabel

If a speaker match is wrong or you add a profile later, you can rerun just the matching or manually fix the labels — without rerunning speech recognition and diarization from scratch.

Self-Contained App Bundle

Bundles the Python runtime, ffmpeg, and torch/mlx-whisper/pyannote dependencies all in one — just copy it to another Apple Silicon Mac and it works as-is.

3 Export Formats

Download results as TXT (an easy-to-read transcript), SRT (video subtitles), or JSON (raw per-speaker blocks with timestamps).

Native Desktop UI

Convert files by drag-and-drop in a native macOS window built with pywebview, with progress shown in real time.

Overview

Quick Start

video2text is a fully local app: feed it an mp4 file (typically a video-conference recording) or an audio file, and it produces a speaker-diarized transcript. Whether it’s an online meeting (split screen) or an in-person meeting recorded with a single camera and mixed audio, the same problem applies — multiple speakers are mixed into one audio track — so both cases go through the same pipeline (audio-based speaker diarization).

Basic Workflow

No build required: grab video2text-v1.0.1-macos-arm64.zip from the latest release, unzip it, and double-click video2text.app.

To build it from source instead:

# Clone the repo & build the app bundle
git clone https://github.com/neurosamAI/video2text
cd video2text
./build.sh

# Run the desktop app (double-click video2text.app)
# Or run it as a web server from the terminal
./run.sh   # http://127.0.0.1:8765

Usage Flow

  1. Register your voice profile (optional, recommended) — enter your name and either record a short prompt or upload existing audio/video
  2. Convert an mp4 — drag in a file or select one, check which profiles to match, and start the conversion
  3. Check progress — extract audio → diarize → transcribe → match speakers → done
  4. Download the results — choose from TXT / SRT / JSON formats

Components

ComponentRole
pyannote/speaker-diarization-3.1Speaker diarization
mlx-community/whisper-large-v3-turboSpeech recognition (Apple Silicon Metal acceleration)
speechbrain/spkrec-ecapa-voxcelebSpeaker embedding (automatic voice matching)
FastAPI + pywebviewLocal web server + native macOS desktop shell

The first run downloads each model’s weights once from HuggingFace / Apple (mlx-community). After that, it runs completely offline.

Comparison

video2textOtter.aiWhisper APIZoom AI Companion
Processing locationFully local (on-device)CloudCloudCloud
File uploadNot requiredRequiredRequiredRequired
Speaker diarization✓ (built-in)Requires manual implementation
Automatic voice matching✓ (account-based)
Rematch/relabel✓ (no pipeline rerun)
CostFree (open source)SubscriptionUsage-based billingSubscription add-on
Offline use
Supported platformsmacOS (Apple Silicon)Web/mobileAPIWeb/app

Try it out

Feedback and contributions are welcome — open an issue or send a PR on GitHub.