The Besra window: waveform, spectrogram, pitch, formants and amplitude above four annotation tiers, with the interval list on the right.

Speech annotation that lives in Python

Lovingly made by Humans in Bavaria 🥨

Besra is an open source desktop application for editing and analysing time-aligned speech annotation. It reads and writes the files Praat and ELAN already use, and plugins are ordinary Python files.

git clone https://codeberg.org/besra/besra
cd besra
python -m pip install -e .
besra

Runs on macOS, Linux, and Windows. Requires Python 3.12 or later.

Cite

van Dam KP, Snee D, List JM, Goderich A, Ciucci L, Meloni CY, Thaam K, Muheim N, Bocklage K and Rubehn A. Besra: An interactive tool for speech annotation, phonetic analysis, and computer-assisted fieldwork. Open Research Europe 2026, 6:420. https://doi.org/10.12688/openreseurope.25173.1

What it does

Written in Python

The annotation model, the readers and writers, and the signal analysis are all in the core. Scripts and plugins call it directly, in the same interpreter.

Plugins

A plugin is a single Python file with one top-level function, run in the host interpreter. It can import anything you have installed with pip.

Praat and ELAN files

Besra opens and saves Praat TextGrid, ELAN .eaf, and a documented five-column TSV. You can use it for one stage of a project and keep the rest in Praat or ELAN.

Quality and surprisal lanes

A per-interval recording quality score and an n-gram surprisal heatmap are drawn as lanes under the annotation, while the speaker is still there to record the interval again.

One time axis

Waveform, spectrogram, pitch, formants, and amplitude share a time axis and a selection. Pitch and formant estimation offer several methods each.

Local models

Models are downloaded once and run on your own hardware. Audio and annotations stay on the machine, so Besra can be used on recordings that cannot be sent to a hosted transcription service.

Model-assisted fieldwork

Plugins run in the same Python process as the editor, so a recogniser or classifier can run over the recordings during a session. You can train a model on what you have annotated so far, apply it to the rest, and check the output while you are still at the field site. You do the work, machine learning just helps it go quicker.

The results are saved as ordinary TextGrid or EAF files and open in Praat or ELAN as usual.

  • 1 October 2026

    Besra 0.9 beta release

    Today we're releasing the v0.9 beta version of Besra. This is nearly the completed app, aside from upcoming features. Some bugs may remain, and some performance improvements are still needed.