🎙 Open source · Offline · Desktop + CLI

Turn conversations into
accurate text

A free, fully offline transcriber for your recordings — Spanish, English, and Japanese — with speaker labels and timestamps. Powered by Whisper and pyannote, it runs entirely on your machine. No cloud, no accounts, no per-minute fees.

⬇ Get it on GitHub Read the docs
🔒 100% offline 🗣 ES · EN · JA 👥 Speaker labels 📝 TXT · SRT · VTT · JSON 🐍 Python · faster-whisper
00:00:02
Speaker 1
Hola, ¿cómo estuvo tu fin de semana?es
00:00:05
Speaker 2
It was great — I finally finished editing the recording.en
00:00:09
Speaker 1
すごい!後で聞かせてね。ja
conversation.m4a → transcript.json · 2 speakers · diarized & timestamped

Private, multilingual transcription that just runs

Drop in a recording and get back clean, speaker-labeled text — without sending a single second of audio to the cloud.

🔒

Fully offline & private

Every step — decoding, transcription, and diarization — runs locally. Your conversations never leave your machine, so sensitive recordings stay yours. No accounts, no telemetry, no per-minute cloud bill.

🗣

Spanish, English & Japanese

Transcribe in any of the three — or let Whisper auto-detect the language per file. Japanese comes out as natural, correctly spaced-free text, not forced word splits.

👥

Who said what

Built-in speaker diarization (pyannote) labels each turn — Speaker 1, Speaker 2, … — so conversations read like a script instead of one undifferentiated block of text.

⏱

Word & segment timestamps

Every segment is time-coded, so you can jump straight to a moment in the audio — and export subtitles that line up with the recording.

📝

Four output formats

Export a readable txt, subtitle srt/vtt, or the full structured json (segments, words, speakers, confidence) — all rendered from one canonical transcript.

🖥

CLI and desktop GUI

One reusable core, two ways to drive it: a scriptable command-line tool for batch jobs, and a PySide6 window to drop a file, transcribe, and export with a click.

📂

Batch a whole folder

Point it at a directory and let it transcribe every recording overnight. A failed file is reported and skipped — the batch keeps going.

⚡

Fast Whisper engine

Uses faster-whisper (CTranslate2) with int8 on CPU and float16 on GPU, auto-detected. Pick any model size from tiny to large-v3.

🎵

Any audio or video in

ffmpeg decodes it all — wav, mp3, m4a, flac, ogg, opus, even mp4/mkv — and resamples to what the models expect. No manual conversion first.

From recording to transcript in four steps

No projects to manage, no presets to configure — give it a file and choose how you want the text back.

1

Drop in a recording

Pick a file (or a whole folder) from the CLI or the GUI. ffmpeg handles any common audio or video format.

2

Choose language & model

Spanish, English, Japanese, or auto-detect — and a Whisper model size that fits your hardware and accuracy needs.

3

Transcribe & diarize

Whisper turns speech into text while pyannote figures out who is speaking, then each segment is matched to a speaker.

4

Export

Save a readable transcript, subtitles, or the full JSON — speaker-labeled and timestamped, ready to use.

Tuned for conversations, sized for your machine

Transcription quality and speed scale with the Whisper model you choose. Start with medium; reach for large-v3 for the best accuracy on Japanese and noisy audio.

Whisper modelRelative speedAccuracyGood for
tiny / baseFastestBasicQuick drafts, clean audio
smallFastGoodEveryday CPU use
mediumModerateGreatDefault — balanced
large-v3SlowestBestJapanese, noisy / overlapping speech

Languages: Spanish (es), English (en), Japanese (ja), or auto-detect. Engine: faster-whisper (CTranslate2), int8 on CPU / float16 on GPU. Diarization: pyannote speaker-diarization-3.1 (a one-time Hugging Face model download, then fully offline). Outputs: txt, srt, vtt, json.

Up and running in minutes

Python 3.11+, Linux / macOS / Windows. You'll also need ffmpeg on your PATH.

1

Clone & install

Create a virtual environment and install the core (faster-whisper, pyannote, torch). Add PySide6 for the GUI.

2

Enable speaker labels (once)

Accept the pyannote model terms on Hugging Face and set HF_TOKEN. The weights download once, then diarization runs offline. Skip it with --no-diarize.

3

Transcribe

Run transcribe on a file or folder, or launch the GUI and drop a recording in.

# Clone the repository
git clone https://github.com/mnavas/audio-transcriber.git
cd audio-transcriber

# Install (CPU wheels by default; see README for CUDA)
python3 -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt
pip install -e .

# One-time: speaker labels need a Hugging Face token
export HF_TOKEN=hf_xxxxxxxxxxxxxxxxx

# Transcribe a file…
transcribe interview.m4a --language ja --num-speakers 2 --format srt

# …or a whole folder, every format at once
transcribe ./recordings --format all --output-dir ./out

# …or use the desktop app
python -m gui.app

Full setup (ffmpeg, the Hugging Face step, CUDA, model-size guidance) is in the README, and the design is written up in docs/v0.0.0/plan.md.

Help make it better

audio-transcriber is open source and welcomes contributions of any size.

🐛

Report a bug

Something crash or mis-transcribe? Open an issue with steps to reproduce, the language, and your OS / Python version.

Open an issue →
💡

Suggest a feature

Want another language, live mic input, or a transcript editor? Open a feature request and describe it.

Request a feature →
🔧

Submit a pull request

Fork, branch, and send a PR. Read docs/v0.0.0/analysis.md first — it explains the architecture and the hard parts.

Fork on GitHub →
📖

Improve the docs

Docs are plain Markdown in the docs/ folder — easy to edit and submit.

Browse the docs →

Keep audio-transcriber free and actively maintained

audio-transcriber is built and maintained as a side project. It's free and open source — but development tools, time, and motivation all have a real cost.

If it saves you money and hassle transcribing your recordings, consider chipping in. Every contribution helps keep it maintained and improving.

All contributions go directly to the developer. No company, no VC behind this.

📄 MIT licensed

Free and open source

audio-transcriber is free to use, fork, and modify under the MIT license. No telemetry, no accounts, no cloud — everything runs on your machine.

View on GitHub →