aTrain, offline interview transcription with speaker separation on your own laptop
A GUI tool for offline transcription of speech recordings, including speaker diarization, utilizing state-of-the-art machine learning models.
At a glance
- What is it?
- aTrain is a desktop application and CLI for transcribing speech recordings entirely offline, using faster-whisper for the text and pyannote.audio for speaker detection, with output that imports into MAXQDA, ATLAS.ti and nVivo. It is AGPL-3.0 licensed, built at the University of Graz, and its current releases are release candidates.
- Who is it for?
- aTrain suits researchers and journalists who must keep interview audio on their own machine, who need each segment attributed to a speaker, and who already work in a qualitative analysis package that expects MAXQDA, ATLAS.ti or nVivo output.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A research tool built around recordings that cannot leave the machine
aTrain transcribes speech recordings with machine learning models and does it without uploading anything. The README is explicit that the processing happens completely offline on your own device and that neither recordings nor transcriptions are sent to the internet, and it frames that as a way to meet data privacy requirements from ethical guidelines or legal rules such as the GDPR.
That constraint is the reason the project exists in its current shape. It was developed by researchers at the Business Analytics and Data Science Center at the University of Graz and tested by researchers from the Know-Center Graz, and the audience is people with sensitive interviews, clinical sessions or journalistic conversations. The tool is a GUI application for people who do not want to touch a command line, with a CLI added later for headless pipelines.
The package layout in the repository shows the split. The aTrain/ directory holds the application and the aTrain_core/ directory holds the engine, so the transcription core can be used on its own, and the README refers to both aTrain-core for capabilities like the list of supported languages and the qualitative analysis output. The project is licensed AGPL-3.0-or-later, and pyproject.toml requires Python 3.11 or newer.
faster-whisper for the text, pyannote.audio for the speaker
The transcription stack is two pieces. The speech to text model is the faster-whisper implementation of OpenAI's Whisper model, and the README points at a published evaluation (Wollin-Giering et al. 2023) for the quality claim. The speaker detection mode is built on pyannote.audio and analyses each text segment to work out which speaker it belongs to, so the output is not a flat transcript but a segmented one with an attribution per segment.
The dependency pins in pyproject.toml are unusually specific, and reading them tells you how much the project depends on exact library behaviour. faster-whisper is pinned to 1.2.1 with an explicit comment that version 1.2.1 calls av.open with a metadata_errors argument that av 19 removed, which is why av is held below 19. CrisperWhisper v2 is included through its Transformers path, and the comment warns against adding its CTranslate2 extra because that is an incompatible fork of the library faster-whisper uses. transformers is pinned to 4.57.3, pandas to 3.0.6, pyannote.audio to 4.0.7, numpy to 2.4.6, typer to 0.27.3, and torch and torchaudio to 2.9.1 with the cu128 build selected on Windows.
Two consequences follow. A dependency bump in either torch or faster-whisper can break the install, so the project is effectively pinned to a known working set. And on Windows the cu128 wheel index has to be selected explicitly, which the README shows in the install command.
Installing the engine from the repository, since it is not on PyPI yet
The installation instructions are explicit that aTrain has not shipped on PyPI, so pip installs from the GitHub repository. The engine only, for CLI usage, is:
pip install "aTrain @ git+https://github.com/aTrainTranscription/aTrain.git"The desktop and browser application needs the gui extras, which pulls the interface stack:
pip install "aTrain[gui] @ git+https://github.com/aTrainTranscription/aTrain.git"On Windows the PyTorch CUDA index has to come first, so the CUDA build of the torch wheel is picked up:
pip install ... --extra-index-url https://download.pytorch.org/whl/cu128The README also notes that on Linux the PyPI torch wheel already bundles CUDA, that macOS is CPU only, and that NVIDIA CUDA support currently covers Windows and Debian-based Linux. There is a practical warning attached to Linux installations on slow disks: if pip install keeps killing the torch wheel collection, retry with --no-cache-dir.
The README is clear that the install command will change once the project reaches PyPI, where it becomes pip install aTrain and pip install 'aTrain[gui]'. Until then, the git URL is the supported path.
For people who prefer a packaged build, aTrain is published on Flathub for Linux and in the Microsoft Store for Windows, with additional download types linked from the University of Graz page. The README also points to a code signing policy document for how release builds are signed.
How long transcription takes, and what the measurements cover
The README includes a benchmark table, and its scope matters. The test material is a conversation between Christine Lagarde and Andrea Enria at the Fifth ECB Forum on Banking Supervision 2023, published on YouTube by the European Central Bank under a Creative Commons licence and downloaded as a 320p MP4 file, with a duration of exactly 22 minutes. Speaker detection was enabled for all runs, and the table reports processing time for three model configurations on six computing devices.
The CPU numbers dominate. A Ryzen 6850U takes 26 minutes 12 seconds for large-v3 and 13 minutes 30 seconds for Distil large-v3, an Apple M1 takes 33 minutes 15 seconds for large-v3, an Intel i9-10940X manages 10 minutes 25 seconds and 4 minutes 36 seconds respectively, and an Intel i7-8750H is listed at 19 minutes 16 seconds for large-v3-turbo. The GPU rows are where the change is dramatic: an RTX 2080 Ti takes 1 minute 44 seconds for large-v3 and 1 minute 6 seconds for Distil large-v3, while an RTX 2070 Max-Q takes 5 minutes 59 seconds for large-v3 and 4 minutes 37 seconds for large-v3-turbo. Several cells are left as question marks in the table, which tells you which combinations were not measured.
The README's summary of the same numbers is that selecting the highest quality model takes roughly three times the audio length on a typical business laptop CPU, and that a CUDA capable NVIDIA GPU reduces transcription time to 20 percent of the audio length on current entry-level gaming notebooks. That is a reasonable expectation to plan around if you have a long interview and no GPU.
Output built for qualitative analysis packages
The feature that distinguishes aTrain from a general transcription tool is the shape of the export. The README states that aTrain-core provides transcription files that import into ATLAS.ti, MAXQDA and nVivo, and that the result lets a researcher play the audio for a text segment by clicking on its timestamp. The timestamps are not decoration; they are the link between the written transcript and the recording, which is the working assumption of most qualitative analysis work.
A tutorial for MAXQDA and nVivo lives in the docs/ directory of the repository. The language coverage is broad as well. The README lists 99 languages that aTrain-core can process, from Afrikaans and Arabic through German, Japanese, Korean, Russian, Vietnamese and Welsh, with a pointer to the Whisper tokenizer for the full list, and it warns that transcription quality varies by language, with word error rates listed in the Whisper repository.
Two smaller capabilities round it out. Nvidia GPU support is optional and needs the CUDA toolkit installed, which is what the benchmark table exercises, and there is a headless mode for servers and scripts. The CLI entry point is aTrain, with aTrain start opening the native desktop app by default and a --no-native flag switching to browser mode, which the README marks as experimental and warns that some browser mode functionality may still be incomplete.
Where aTrain stops, and what the container adds
The limits are worth stating plainly. GPU acceleration is limited to Windows and Debian-based Linux, and macOS is CPU only, so a Mac user trades away the speedup that the benchmark table shows on NVIDIA hardware. The pinned dependency set means security updates in the transitive stack wait on the project. The newest release tags are v1.5.0-rc4 from 2026-10-15, v1.5.0-rc3 from 2026-09-03 and v1.5.0-rc2 from 2026-09-03, so the current line is release candidates rather than a stable tag, and the browser server mode is explicitly experimental.
The alternative to aTrain, in the broad sense, is a cloud transcription service, and the difference in approach is the whole argument for the project: a hosted API sends your audio to someone else's machine, aTrain keeps it local. The price is that you supply the compute, and the benchmark numbers are what that costs.
For development and contributing, the repository ships a docker-compose.yml and a Dockerfile.dev, and the compose file is unusually well commented about a specific problem. It pins platform: linux/amd64 because the locked dependency graph, naming torch with cu128, torchcodec and pyannote.audio, ships x86_64 only wheels, so on an ARM host such as Apple Silicon under OrbStack the container runs under emulation, and without that pin the build defaults to aarch64 where torchcodec has no wheel and the app fails to import pyannote.audio at startup. The service listens on port 8080, and the compose file also documents the data directory mapping to /root/.local/share/aTrain for downloaded models and transcription output.
Editorial conclusion
aTrain suits researchers and journalists who must keep interview audio on their own machine, who need each segment attributed to a speaker, and who already work in a qualitative analysis package that expects MAXQDA, ATLAS.ti or nVivo output. It is the wrong choice for a first time user who wants a stable release, since the newest tags are v1.5.0-rc4, v1.5.0-rc3 and v1.5.0-rc2, and it is the wrong choice on macOS if you need GPU acceleration, which the README restricts to Windows and Debian-based Linux. Before installing, confirm the Python version is 3.11 or newer, check whether a CUDA-capable NVIDIA GPU is present, and read the pip install warning about a slow disk killing the torch wheel download.
Frequently asked questions
How do I install aTrain?
aTrain is not on PyPI yet, so the README installs it from the GitHub repository: pip install "aTrain @ git+https://github.com/aTrainTranscription/aTrain.git" for the CLI engine, and pip install "aTrain[gui] @ git+https://github.com/aTrainTranscription/aTrain.git" for the desktop and browser app. Python 3.11 or newer is required.
Does aTrain send my recordings to a server?
No. The README states that aTrain processes recordings completely offline on your own device and does not send recordings or transcriptions to the internet, which is what allows researchers to meet privacy requirements or comply with the GDPR.
Can aTrain tell speakers apart?
Yes. The speaker detection mode is based on pyannote.audio and analyses each text segment to determine which speaker it belongs to. The benchmark table in the README was produced with speaker detection enabled.
Does aTrain work with an NVIDIA GPU?
It can run on the CPU or on an NVIDIA GPU, with the CUDA toolkit installed. The README states that NVIDIA CUDA support currently covers Windows and Debian-based Linux, and that macOS is CPU only. On Windows the cu128 torch wheel index must be added to pip.
Which qualitative analysis tools can import aTrain output?
The README states that aTrain-core provides transcription files that import into ATLAS.ti, MAXQDA and nVivo, and that you can play the audio for a text segment by clicking its timestamp. A tutorial for MAXQDA and nVivo is in the repository docs.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/atraintranscription-atrain)Was this useful?