Bournemouth Forced Aligner¶
Find where every phoneme and word starts and ends in a recording, in 82 languages.
BFA is a multilingual forced aligner. Given speech audio and its transcript, it returns start and end times for every phoneme and word, exported as Praat TextGrids or JSON. Pronunciations come from a neural grapheme-to-phoneme model, so no pronunciation dictionary and no training on your data are needed.
pip install bournemouth-forced-aligner
balign recording.wav "the words spoken in the recording" --preset=en-us --textgrid=recording.TextGrid
Check and correct the result in the browser with balign --web: every phoneme over the
spectrogram, its boundaries draggable, and the model's alternatives ranked by probability.

Documentation¶
-
Getting started
Install, align one recording, a long interview, or many files at once, from the command line or from Python.
-
Language support
The 82 languages, the model each one uses, and what to know about tone, stress and word segmentation.
-
Web interface
balign --web: align, transcribe and hand-correct phoneme timestamps in the browser. -
Phoneme guides
Every phoneme token of each language group, with example words and where its boundaries go.
-
About the models
How the acoustic models are built and trained, and how a boundary is read off them.
-
Evaluation
Boundary accuracy and speed on TIMIT and Buckeye, against the Montreal Forced Aligner.
-
Developer guide
The full API and command-line reference, the output format, and how to extend BFA.
-
Changelog
What changed in each release, including the move from 1.x to 2.0.
What's inside¶
| Speed | 6-20× faster than real time on a CPU, 100-500× with a GPU |
| Resolution | 5 ms frames, with each boundary placed between frames |
| Languages | 82 with the default phoneme set, including Mandarin, Cantonese, Japanese, Korean, Vietnamese, Thai, Arabic, Persian, Hindi and Greek; 80+ through espeak-ng (ph66) |
| Output | Praat TextGrid; JSON with phoneme, word and phoneme-group times, plus tone, stress and length; phoneme embeddings |
| Runs on | Linux, macOS, Windows |
Accuracy¶
Phoneme-boundary F1 on two hand-labelled English corpora (TIMIT, 6,300 read sentences; Buckeye, 255 conversational recordings), against the Montreal Forced Aligner (MFA):
| TIMIT, within 10 ms | TIMIT, within 25 ms | Buckeye, within 25 ms | |
|---|---|---|---|
BFA CUPE-3-en (ph66, English) |
58.7 | 76.8 | 74.2 |
BFA mbfa-latin (default, 36 languages) |
53.7 | 72.6 | 68.4 |
MFA english_us_arpa (English model + dictionary) |
55.2 | 80.9 | 84.3 |
BFA's boundaries are more precise (better within 10 ms, lower median error), MFA has fewer large misses, and one BFA model covers 36 languages with no dictionary. Speed, robustness to transcript errors and the full analysis are on the evaluation page.