Two engines. A clearer record.
Offline transcription with speaker labels, for recordings that will be relied on.
Two open engines run over every recording on an ordinary laptop, with no network connection and no administrator rights. One writes the transcript. The other is never shown: it marks every span where it heard speech and the first heard nothing, and those marks are the review list. Verification becomes targeted listening instead of a read-through.
Download for Windows Source on GitHub
twinscribe-win64.zip from the Releases page; the models are fetched on first start.
Early, and a pre-release. Windows 10 or 11 on x86-64; Linux and macOS from source.
Two engines that fail in opposite directions
Open transcription engines come in two families, and the tool runs one of each.
Published
The transducer
NVIDIA Parakeet TDT 0.6B v2, through sherpa-onnx
Can only emit a word while consuming audio, so it cannot write into silence. On hard audio it produces nothing. Its transcript is the one published, and nothing is ever added to it.
Checking
The Whisper engine
Whisper large-v3-turbo, through CTranslate2
Predicts each word partly from the words it has already written, so it always produces something; on hard or silent audio it can write fluent text that was never said. Its words are never shown. It has one job: to mark every span where it heard speech and the published engine heard nothing.
Those marks are the review list. On public telephone recordings they landed on real missed speech 61 times out of 62, covering 92 per cent of the words the published engine had dropped, for 18 per cent of the audio listened to.
- Marks on real missed speech
- 61 of 62
- Of the dropped words covered
- 92%
- Of the audio listened to
- 18%
Silence, music and background noise are marked rather than filled, so a gap in the text is explained. Speakers are labelled by clustering, with the count given when it is known, and each speaker's share of the words is stated at the top of the transcript, because a participant can vanish from a transcript while the overall accuracy looks normal.
The record, as the window shows it
The first chapter of a public-domain audiobook, read for LibriVox, dropped into the window as it came: one reader, 10 min 54 s, mono MP3 at 22 kHz.
Timestamps, the speaker, the published engine's words; a stretch of silence marked rather than filled; and a mark where the second engine heard two words the transcript lacks. The two words it heard were That book, and the book reads That book was made by Mr. Mark Twain. The published line is missing exactly those two, and the mark says where to listen.
What it produces, per recording
Beside the recording, named by its stem:
.docxand.txt- Timestamped and speaker-labelled, with a speaker summary at the top giving the word count assigned to each speaker; stretches of silence, music and background noise marked where nothing is said.
.srt- A subtitle file, so the transcript plays against the recording line by line in any player, with
[music]and[background noise]cues where nothing is said. .review.json- The review list, with a screen for working through it with the audio at each mark.
.run.json- The run record: engines and versions, settings, the file's digest, when it ran, how long it took, and any failure and why.
The application
One window, in the manner of a media player. Drop recordings or folders in, choose a quality level, press Transcribe; each recording plays at once, and the ones that have been transcribed show their transcript following the audio.
Four quality levels: Quick, Standard and Careful differ in the checking engine; Laptop keeps the Standard engines but checks only where the published engine fell silent, for machines without a graphics device. An NVIDIA device is used for the checking engine when present; everything runs on the processor without one, more slowly. History lists every recording transcribed on the machine, and Export writes the outputs again in chosen formats to a chosen folder. The command line does the same work without the window.
Installing
Three ways, from the least effort to the most. All three run offline once the models are in place; none needs administrator rights.
-
The executables Windows
Download
twinscribe-win64.zip, unzip it anywhere and double-clicktwinscribe\twinscribe-app.exe;twinscribe.exeis the command line. The folder carries every library, the CUDA runtime packages and the media decoder. On first start the window offers to fetch the models of the Standard level (about 2.4 GB) into amodelsfolder beside the executables, recording every file's digest; after that nothing in the program reaches the network. The executables are not signed, so Windows may warn that they come from an unknown publisher. -
The portable folder Windows
Assembled from a checkout with the models inside, because it is larger than a release asset may be. It holds its own interpreter, every library, the decoder, the models and a
homefolder for settings and records, so nothing is installed and two copies never share state. -
From source Windows, Linux, macOS
Python 3.11 or later, then:
pip install .[engines,app,ffmpeg] python -m twinscribe fetch-models python -m twinscribe app
What this is not yet
Early. The design is measured and the bench reproduces its accuracy tables on public corpora, but speed is a property of the machine and the speaker labelling can split a voice it cannot separate. A transcript is a draft until it has been verified against the recording; the tool makes that verification targeted, it does not remove it.
Test material is public research audio under CC BY 4.0; no private recording of any kind is used in development or testing.
Components and licences
Engines and models are open and run on the processor: faster-whisper and CTranslate2 (MIT), Whisper weights (MIT), sherpa-onnx (Apache-2.0), NVIDIA Parakeet TDT 0.6B v2 and TitaNet (CC BY 4.0), Silero VAD (MIT), pyannote segmentation-3.0 (MIT), the CED audio tagger (Apache-2.0) with the AudioSet class labels (CC BY 4.0). The interface is PySide6 (LGPL-3.0). Attributions are in NOTICE.
TwinScribe is released under the Apache License 2.0.