Speech researchers get squeezed from both sides. Commercial annotation suites quote per-seat prices that eat an entire grant line, while generic audio libraries give you a spectrogram and wish you luck with the rest. Three open tools cover almost every real workflow — Praat, openSMILE and audioFlux — but they were built for genuinely different jobs, and using the wrong one costs weeks.

Here is what each actually does well, backed by live repository data and commands taken from the projects’ own documentation.

Quick Verdict (TL;DR)

  • Use Praat when the deliverable is a human judgement: phonetic annotation, segment boundaries, pitch and formant measurement you will defend in a paper. It is the reference tool of the field and it has been for decades.
  • Use openSMILE when you need standardized acoustic feature sets at scale — eGeMAPS, GeMAPS, ComParE — extracted reproducibly over thousands of files from a command line.
  • Use audioFlux when you are building a Python or C pipeline and need the time-frequency transforms and pitch algorithms as composable code inside your own process, not as a separate program.
  • Do not force one tool to do all three. The mature research setups use Praat for annotation, openSMILE or audioFlux for features, and a stats stack downstream.

Live Comparison (October 2026)

ToolGitHub starsLast commitLanguageInterfaceLicencePrimary output
Praat≈2.0K (official mirror)activeC/C++Interactive GUI + scriptingFree, University of AmsterdamTextGrid annotations, measurements, graphics
openSMILE8552026-01-26C++CLI + librariesaudEERING source-available licenceFeature CSV/ARFF, configurable sets
audioFlux3,3712026-03-06C + PythonPython/C libraryPermissive (see repo)Numeric arrays for downstream pipelines

The star counts mislead here. Praat has the smallest GitHub footprint and the largest installed base in phonetics departments, because its development lives at the University of Amsterdam rather than on a social coding platform. Judge these tools by workflow fit, not popularity.

Decision Matrix

Your taskBest toolWhy
Annotate word and phone boundaries for a corpusPraatPurpose-built TextGrid editor, keyboard-driven, fast for hours of labelling
Measure F0, formants, jitter and shimmer for one speakerPraatStandard, defensible measurement procedures and a scripting language
Extract eGeMAPS features for 10,000 recordingsopenSMILEStandardized configs, single binary, batch-friendly
Reproduce a published feature set exactlyopenSMILENamed config files (GeMAPS v01b, ComParE 2016) rather than ad-hoc code
Build pitch tracking into a product pipelineaudioFluxMultiple pitch algorithms callable from Python with no external process
Real-time stream analysis on a deviceopenSMILE or audioFluxopenSMILE ships mobile and embedded builds; audioFlux is C-backed

Praat: The Annotation Standard

Praat — “Doing Phonetics By Computer” — is an interactive analysis program with a scripting language bolted on, and that ordering matters. You open a recording, look at the waveform and spectrogram, and draw boundaries by hand. For the parts of the job that are measurement rather than judgement, you script it.

A minimal annotation workflow looks like this in Praat script:

1
2
3
4
5
Read from file: "recording.wav"
To TextGrid: "words phones", "words"
# annotate the interval tier in the editor, then save alongside the audio
selectObject: "TextGrid recording"
Save as text file: "recording.TextGrid"

Praat screenshot from the official project site

Three things keep Praat dominant. The TextGrid format is the de facto interchange standard for annotated speech corpora — every corpus tool reads it. The scripting language can automate measurements across folders without leaving the program. Pitch, formant, intensity and voice-quality analyses follow documented procedures that reviewers accept without a fight. If you are publishing phonetic measurements, arguing against Praat means arguing against the field’s baseline.

The honest limits: it is a desktop application, not a service. There is no headless API for your CI pipeline, and its visual style has barely moved in twenty years. Teams that need unattended batch processing use openSMILE or audioFlux instead and reserve Praat for the annotation passes a human must do.

openSMILE: Standardized Features at Scale

openSMILE is a C++ toolkit — the name expands to open-source Speech and Music Interpretation by Large-space Extraction — targeted at audio analysis, processing and classification for speech and music tasks: automatic speech recognition, speaker identification, emotion recognition, beat tracking and chord detection among them. It ships builds for Linux, Windows, macOS, Android, iOS and Raspberry Pi, which is unusual and useful if part of your pipeline runs on a device.

Feature extraction is config-driven. You name a configuration, point it at audio, and get a feature file — the reproducibility argument in one line:

1
2
3
# GeMAPS v01b feature set (config path verified in the official repository)
SMILExtract -C config/gemaps/v01b/GeMAPSv01b.conf \
            -I sample.wav -O features.csv

The config tree is the real product. Alongside gemaps/v01b you will find egemaps, compare16 (ComParE 2016), emobase, is09-13, mfcc, chroma, prosody, spectrum and audspec — a decade of shared feature-set conventions maintained as files rather than blog snippets. When a reviewer asks which feature set you used, you answer with a path, and the result is reproducible on any machine.

openSMILE feature extraction pipeline from the official project page

Two cautions. First, the licence is audEERING’s own source-available terms, not a standard OSI licence — read the LICENSE file before shipping anything commercial; academic use is the well-trodden path. Second, the naming is not intuitive for newcomers: egemaps, gemaps and compare16 are different generations of the same idea, and choosing between them is a scientific decision about comparability with prior work, not a technical one.

audioFlux: Transforms and Pitch as Library Code

audioFlux is a C and Python library for audio and music analysis and feature extraction — the tool you pick when the analysis belongs inside your program rather than beside it. Installation is two commands:

1
2
pip install audioflux
# or: conda install -c tanky25 -c conda-forge audioflux

It exposes dozens of time-frequency transform methods and hundreds of corresponding time-domain and frequency-domain feature combinations, with the numeric work done in C. The pitch algorithms are the standout: recent releases added YIN, CEP, PEF, NCF, HPS, LHS, STFT and FFP methods, plus PitchShift, TimeStretch and a TuneTrack algorithm for instrument tuning. If your question is “which pitch estimator survives my noisy field recordings”, audioFlux lets you swap estimators and compare on the same array — a genuinely different workflow from reconfiguring a binary.

Choose it for streaming and embedded work as well: the C core targets real-time computation on audio streams, and it can run on mobile-class hardware. Choose something else if your deliverable is a publication-grade phonetic measurement (use Praat) or a standardized feature file that a reviewer expects to recognize (use openSMILE).

Pitfalls, Migration and Accuracy Traps

Never mix feature sets across pipeline stages. eGeMAPS and ComParE are not interchangeable, and a model trained on one will not transfer cleanly to the other. Record the config path in your experiment log at extraction time — reconstructing it later is guesswork.

Annotation format is a real dependency. Praat TextGrids round-trip through most corpus tools, but ad-hoc CSV exports lose tier structure and boundary precision. Keep TextGrids as the source of truth and derive everything else.

Check licences before you publish code, not after. openSMILE’s source-available terms are fine for research and require attention for products; audioFlux and Praat sit on easier ground. A licence audit costs an hour; a re-licensing rewrite costs a release.

Beware of sample-rate assumptions. Pitch and formant estimates differ between 16 kHz and 44.1 kHz pipelines, and some configs expect specific rates. Standardize on one rate for the whole corpus and document it.

Do not use a spectrogram as evidence of a measurement. Screenshots are illustrative; numbers come from the analysis functions. Reviewers increasingly ask for the script, so write the Praat script or the Python cell that produced the figure.

For adjacent reading, see our guide to self-hosted acoustic monitoring platforms, the Python audio processing libraries comparison, and, if you capture your own recordings, the audio DSP pipeline guide.

FAQ

Is Praat still the right choice in 2026, or is it outdated?

Still the right choice for annotation and phonetic measurement. TextGrid interoperability, documented analysis procedures and decades of teaching material mean reviewers and collaborators already trust it. It is a mature desktop tool rather than a fast-moving project, which is exactly what you want for a measurement standard.

Can openSMILE extract features without a graphical interface?

Yes — that is its primary mode. The SMILExtract binary reads a config file and writes a feature file, so it fits naturally into batch scripts and pipelines. A separate Python wrapper package exists for teams that prefer calling it from Python.

Which feature set should I use with openSMILE?

Use GeMAPS v01b or its extended variant for general purpose paralinguistic work, and ComParE 2016 for the larger standardized set. The deciding factor should be comparability with previous research in your subfield, not feature count — check what the papers you compare against used.

Is audioFlux a replacement for Praat?

No. audioFlux is library code for transforms and feature extraction inside your own Python or C process, with no annotation editor. Use it to build analysis pipelines and products; use Praat for human annotation and for measurements you need to defend in review.

Can these tools handle thousands of files unattended?

openSMILE and audioFlux can, comfortably — both are command-line and library based and scale with your batch harness. Praat can automate many tasks through its scripting language, but the workflow assumes an interactive session, so plan for a supervised run rather than a fully headless one.

What is the biggest source of irreproducible results in speech analysis?

Unrecorded preprocessing choices: sample rate, filter settings, and which feature configuration was used. Store the config path, the script and the audio checksums with every result set, and reproducibility becomes a five-minute job instead of a rewrite.


💰 想测试你的市场判断力?我用 Polymarket 做预测市场交易——这是全球最大的预测市场平台,从大选结果到技术监管时间线,什么都可以押注。和赌博不同,这是真正的信息市场:你懂的信息越多,胜率越高。我靠预测技术相关事件的走向已经赚了不少。用我的邀请链接注册:Polymarket.com