Acoustic Features Batch Extraction — User Guide

Batch extraction of nine acoustic descriptors from selected Praat Sound objects, with fixed-band spectral analysis, explicit missing-value rules, and an optional comparative z-score visualization.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 0.2 (2026) License: MIT License Category: Acoustic Analysis & Feature Extraction
Contents:

Overview

The script processes one or more selected Sound objects and writes one row per Sound to Table AudioTools_Results. Each row contains the Sound object name, duration, analysis channel, and nine acoustic descriptors. The Table keeps raw measurements in their native units; the optional picture is a separate comparative display.

What is a batch acoustic descriptor? A descriptor is a numerical summary of a defined property of a sound. In this script, each descriptor is computed over the complete selected Sound rather than over a time series of short windows. Batch mode applies the same definitions to every selected Sound and stores the results in one Table for comparison or export.

The nine acoustic descriptors

IntensityMean_dB — mean Praat intensity over the Sound.

HarmonicityMean_dB — mean cross-correlation harmonicity.

JitterLocal_percent — local period-to-period jitter from periodic pulse detection.

RollOff85_Hz — 85% power roll-off within the fixed 20–8000 Hz region.

SpectralCentroid_80_5000_Hz — power-weighted spectral centre within 80–5000 Hz.

SpectralSpread_80_5000_Hz — power-weighted spread around that centroid.

Flatness_80_5000 — geometric/arithmetic mean ratio of 20-Hz band powers.

SpectralJaggedness_dB — local irregularity of the 20-Hz log-power profile.

SPR_50_2000_vs_2000_4000_dB — integrated low-band/high-band power ratio in dB.

Whole-Sound summaries: These are global descriptors. They do not describe how a feature changes within a phrase or recording. For temporal trajectories, divide a longer Sound into windows or segments and analyse those objects separately.

Quick start

  1. In Praat, select one or more Sound objects.
  2. Run Acoustic_Features_Batch_Extraction.praat.
  3. Set the periodicity range if needed. Defaults are 75 Hz floor and 600 Hz ceiling.
  4. Leave Draw visualization enabled if you want the comparative picture.
  5. Click OK. The Info window reports progress and the raw results remain in Table AudioTools_Results.
  6. Export the Table from Praat if you need CSV or downstream statistical analysis.

Form parameters

ParameterDefaultCode-enforced ruleUsed by
Pitch_floor_Hz75Must be positiveIntensity, harmonicity, periodic pulse detection, jitter period ceiling
Pitch_ceiling_Hz600Must be greater than the pitch floorPeriodic pulse detection and jitter period floor
Draw_visualizationEnabledBooleanPicture-window summary only; does not change Table values
Do not normalize automatically before analysis. Peak normalization changes level-dependent measurements such as IntensityMean_dB. Normalize only when that transformation is part of the intended experimental protocol.

Feature descriptions

1. Intensity mean

IntensityMean_dB

The selected analysis channel is converted with To Intensity: Pitch_floor_Hz, 0, "yes". The stored value is Get mean: 0, 0, "energy" over the complete Sound.

Units: dB. Dependency: changing the pitch floor changes the intensity analysis settings.

2. Harmonicity mean

HarmonicityMean_dB

The script uses To Harmonicity (cc) with a 10-ms time step, the selected pitch floor, silence threshold 0.1, and one period per window, then takes the mean over the complete Harmonicity object.

Units: dB. Higher values indicate a stronger periodic component relative to noise under this analysis; the script does not apply clinical thresholds.

3. Local jitter

JitterLocal_percent

The Sound is converted to a periodic PointProcess with To PointProcess (periodic, cc) using the selected pitch floor and ceiling. Local jitter is then computed with period limits 1 / Pitch_ceiling_Hz and 1 / Pitch_floor_Hz, maximum period factor 1.3, and converted from ratio to percent.

Interpretation: cycle-to-cycle period variability for material in which stable periodic pulses can be detected. Non-periodic or unstable material may return NA.

4. Roll-off 85%

RollOff85_Hz

Spectrum power is accumulated into fixed 20-Hz bands. Within the fixed 20–8000 Hz region, the script finds the first band centre at which cumulative power reaches 85% of the total power in that region.

Availability rule: NA when Nyquist is below 8000 Hz, so files with different sample rates are not silently compared over different roll-off ranges.

5. Spectral centroid

SpectralCentroid_80_5000_Hz

Power-weighted mean frequency of the fixed 20-Hz descriptor bands from 80 to 5000 Hz.

centroid = Σ(f_band × P_band) / Σ(P_band)

Availability rule: NA when Nyquist is below 5000 Hz or when the analysis region has no usable power.

6. Spectral spread

SpectralSpread_80_5000_Hz

Power-weighted standard deviation of the same 80–5000 Hz band distribution around its centroid.

spread = sqrt[ Σ((f_band - centroid)² × P_band) / Σ(P_band) ]

Units: Hz. The same 5000-Hz Nyquist requirement as the centroid applies.

7. Spectral flatness

Flatness_80_5000

The script computes the geometric mean divided by the arithmetic mean of 20-Hz band powers from 80 to 5000 Hz. A relative floor is applied only inside the logarithm to avoid taking ln(0).

flatness = geometric_mean(P_band) / arithmetic_mean(P_band)

This is a band-aggregated whole-Sound flatness measure, not a frame-by-frame MPEG-style feature.

8. Spectral jaggedness

SpectralJaggedness_dB

For each interior 20-Hz band in 80–5000 Hz, the script converts neighbouring band powers to dB and measures the absolute deviation of the centre band from the mean of its two neighbours. The descriptor is the mean of those deviations.

baseline_i = (dB_(i-1) + dB_(i+1)) / 2
jaggedness = mean( |dB_i - baseline_i| )

Important: this is a local spectral-irregularity descriptor. It is intentionally not called psychoacoustic roughness and should not be interpreted as a critical-band roughness model.

9. Spectral power ratio

SPR_50_2000_vs_2000_4000_dB

The script integrates spectrum power in two fixed regions: 50–2000 Hz and 2000–4000 Hz. It stores their ratio in dB.

SPR = 10 × log10( P_50–2000 / P_2000–4000 )

Positive values mean greater integrated power in the lower band; negative values mean greater integrated power in the higher band. The result is NA when Nyquist is below 4000 Hz or either integrated band has effectively zero power.

Analysis methodology

Representative-channel selection

What happens to multichannel Sounds? The script measures RMS separately for every channel and analyses the channel with the highest RMS. It does not average the channels. This avoids phase cancellation that could occur during fold-down. The source Sound is left untouched, and the chosen channel number is stored in AnalysisChannel.

Shared spectral analysis

Each analysed channel is converted to one whole-Sound Spectrum. For each FFT bin, the script uses complex-spectrum power:

P_bin = real² + imaginary²

The raw FFT-bin powers are then accumulated into fixed 20-Hz descriptor bands. Roll-off, centroid, spread, flatness, jaggedness, and SPR all use this shared band-power representation.

Why use fixed 20-Hz bands? A whole-Sound FFT has bin spacing approximately equal to 1 / duration. Directly averaging raw bins would therefore make some descriptors depend on file duration. Summing raw FFT power into fixed-width bands gives each Sound the same descriptor grid before the spectral summaries are calculated.

Fixed regions and missing-value policy

Descriptor groupFixed regionMinimum NyquistEquivalent minimum sample rate
RollOff8520–8000 Hz8000 Hz16 kHz
Centroid / Spread / Flatness / Jaggedness80–5000 Hz5000 Hz10 kHz
SPR50–2000 vs 2000–4000 Hz4000 Hz8 kHz

If the complete fixed region is unavailable, the affected descriptor is left undefined and appears as NA. The script does not shorten the band to Nyquist and then reuse the same column name.

Table columns

ColumnMeaning
SoundNameName of the selected Praat Sound object; not necessarily an original disk filename
Duration_sTotal Sound duration
AnalysisChannelChannel analysed; 1 for mono, otherwise the strongest-RMS channel
IntensityMean_dBWhole-Sound mean intensity
HarmonicityMean_dBWhole-Sound mean harmonicity
JitterLocal_percentLocal jitter in percent
RollOff85_Hz85% roll-off in fixed 20–8000 Hz region
SpectralCentroid_80_5000_HzCentroid in fixed 80–5000 Hz region
SpectralSpread_80_5000_HzSpread in fixed 80–5000 Hz region
Flatness_80_5000Band-power flatness in fixed 80–5000 Hz region
SpectralJaggedness_dBMean local dB irregularity on the 20-Hz band grid
SPR_50_2000_vs_2000_4000_dBIntegrated low/high spectral power ratio

Visualization & interpretation

Two or more Sounds

The picture displays a 9-feature relative profile. For each feature independently, the script computes the batch mean and sample standard deviation from the available values and converts each available observation to a z-score:

z = (value - feature_mean) / feature_SD

The numeric z-score is printed in each cell. Colour strength is capped at ±2.5 for colour only; the printed number is not capped. Undefined values appear as NA. If a feature has effectively zero standard deviation, available cells are shown as 0.0.

What is a z-score here?

It is a within-batch display coordinate, not a transformed value stored in the Table. A value of +1 means that Sound is one batch standard deviation above the batch mean for that feature; −1 means one standard deviation below. Because each feature is standardized separately, the heatmap highlights relative profiles across measurements with different units.

When more than 24 Sounds are selected, the visualization shows 24 rows sampled evenly across the selected batch. The Table still contains every Sound.

One Sound

A single Sound has no meaningful comparative z-score. The picture therefore shows the raw descriptor values instead.

Interpret relative to the corpus and protocol. The script does not encode universal “normal”, “pathological”, “bright”, “rough”, or genre thresholds. Recording level, microphone, room, material, pitch range, sampling rate, duration, and preprocessing can all affect the measurements. Comparisons are strongest when those conditions are controlled or intentionally modelled.

Output & research use

Outputs

After the script finishes, Table AudioTools_Results is selected in the Objects window. Source Sounds remain unchanged. Temporary extracted channels and analysis objects are removed.

Appropriate uses

Controlled corpus comparison

Compare a set of recordings or processed variants using the same descriptor definitions. Export the raw Table for modelling, clustering, dimensionality reduction, or statistical testing appropriate to the study design.

Processing evaluation

Measure how a controlled transformation changes level, periodicity, spectral centre/spread, spectral distribution, or local spectral irregularity. Keep the preprocessing and sample-rate conditions explicit.

Feature-table preparation

Use the Table as a compact set of whole-Sound descriptors for subsequent analysis in R, Python, MATLAB, SPSS, Excel, or other statistical environments. Missing values should be handled explicitly rather than silently replaced.

Important limitations