The Lana icon: the waveform and formant tracks of the word Lana

Lana is an open workbench for phonetic analysis.

Praat's measurements, with word, phone and speaker tiers filled by speech recognition and exported as a TextGrid.

Version 0.1 preview, for macOS (Apple Silicon), Windows 11 and Linux. Free and open source.
Lana — de-vinson.wav
Lana analysing a German recording: waveform, intensity and a spectrogram with pitch and formant tracks, above word, phone and speaker tiers

The demo runs Praat in this page and replays what real models returned for two readings of one sentence, in German and Georgian.

Phones from the signal

The phone tier is read off the acoustics by an IPA recogniser, with no pronunciation dictionary in the way. The word tier comes from a separate model.

So ანტარქტიკის comes out as ɑ n tʼ ɑ r kʼ tʼ i kʼ i s, ejectives and all, and the method works for languages that have no dictionary.

A Georgian recording in Lana: spectrogram, the word ანტარქტიკის in Mkhedruli from MMS, and IPA phones underneath

Praat underneath, in plain sight

Pitch, formants, intensity and the spectrogram are Praat's own, compiled to WebAssembly. Every argument is a field you can edit, and the page prints the commands it ran.

The analysis panel: spectrogram, pitch and formant settings as editable fields, with the literal Praat commands beneath
The recognition panel: one model for the word tier, one for the phone tier, and a speaker diarizer

Tiers fill as it runs

Each tier has its own model, and results appear while the job is still going. A lane that is still being computed looks different from one that is empty.

A long recording with the word tier filled and the phone tier still being computed

Who is speaking

A speaker tier keys on the voice, not the words, so it needs no language code and runs alongside the recogniser.

Here the speaker changes from S1 to S2 at 6.04 s, and the silence between them is left unassigned.

Three tiers: words, phones, and a speaker tier showing a change of voice from S1 to S2

Offline, on a laptop

The desktop app has recognition built in. Download a model once and the recording never leaves the computer.

This Dargwa sentence was transcribed in under six seconds on a laptop CPU: words by MMS, phones by ZIPA.

Lana desktop with a Dargwa sentence: MMS words in Cyrillic and ZIPA phones in IPA under the spectrogram

Models, stated plainly

Each model shows its tier, size and licence before anything downloads, and the files are checked against published checksums.

The settings screen listing built-in models with sizes, licences and notes

Three ways to run it

Every version supports hand annotation, TextGrid import from Praat or ELAN, and recording from a microphone. Annotations save as you work.

In this browser

Praat runs in the page, and the demo replays recorded results from real models. To analyse your own audio, open a file. It stays on your computer.

Open the demo

Desktop app

Built-in, offline recognition for words, IPA phones and speakers. API keys for online providers go in the system keychain.

macOS · Apple SiliconWindows 11Debian / UbuntuAppImage
Download

Your own server

Connect the browser version to a GPU server you run, or to a provider such as OpenAI or Cloudflare. Keys stay on the server.

python3 web/serve.py Read the setup

The installers are not signed with Apple or Microsoft certificates yet, so both systems warn you before the first launch. The install notes explain how to continue.

Built-in recognition

At least one model per tier runs on an ordinary laptop. Which word model to use depends more on the language than on model size. MMS loads an adapter for each language, so it gets the script right where Omnilingual has to guess.

ModelTierDownloadLicence
Whisper base, small, large-v3 turbowords142–547 MBMIT
Omnilingual ASR 300M, 1Bwords365 MB, 1 GBApache 2.0
MMS-1b-all, 1,150+ languageswords1 GB, then ~9 MB a languageCC BY-NC 4.0
ZIPA small, largeIPA phones71 MB, 310 MBCC BY 4.0
Speakers (pyannote segmentation + embedding)speakers36 MBMIT, CC BY 4.0

On 40 held-out Common Voice recordings each, MMS made 10.1% character errors on Dargwa and 12.1% on Ossetian. Omnilingual made 38–85% errors on the same recordings, mostly because it wrote them in the wrong script.

Takes and gives standard files

Export the tiers to Praat, subtitle tools or a spreadsheet, or open an existing annotation next to the recording and correct it in place.

TextGridLana fileSRTASSVTTTSV

Linguistic ANAlysis.

Machine labels are a first pass. Check them against the spectrogram.