Individual Formant Stretcher — User Guide

Static spectral-envelope transformation that moves individually measured formant-landmark regions by independent semitone amounts while preserving the original complex-spectrum phase.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 2.3 (2026) License: MIT License Repo: Praat AudioTools
Contents:

What this does

Individual Formant Stretcher analyses a selected Sound and estimates up to five robust, time-aggregated formant landmarks. Each landmark can then be moved independently by a number of semitones, with an optional global transpose added to all five.

The landmarks are used as spectral-envelope control points. The script does not move Praat Formant objects through time, does not inverse-filter the source, and does not perform LPC or FormantGrid resynthesis. Instead, it builds one static spectral gain curve for the whole sound: energy is attenuated around the measured landmark region and enhanced around its transposed destination. That real-valued gain curve is applied equally to the real and imaginary components of the complex spectrum, preserving the original spectral phase.

Important distinction: the name “Formant Stretcher” refers to moving broad spectral-envelope regions identified from formant analysis. It is not a pitch shifter and it does not continuously track and resynthesize moving formant trajectories. F0 and waveform timing are not explicitly transposed.

Quick start

  1. Select exactly one Sound object in Praat.
  2. Run Individual_Formant_Stretcher.praat.
  3. Choose a preset, or use Custom and enter independent semitone shifts for F1–F5 plus an optional global shift.
  4. Set Bandwidth scale to control how broad each affected spectral region is, and Strength dB to control the maximum spectral shaping depth.
  5. For multichannel material, choose which signal is used for the landmark analysis. The resulting map is then applied independently to every channel.
  6. Choose Dry/Wet and the desired output-level mode, then run the script.
Neutral settings are an explicit bypass. Custom with all six transpose fields at 0, the Natural preset, Dry/Wet = 0, a failed confidence gate, or a map with no effective movement produces an unchanged copy. The visualization and Info report are still generated when enabled.

Processing pipeline

1. Validate the Sound, duration, mix, bandwidth and output settings. 2. Copy the source to a zero-based working timeline. 3. Choose one analysis source: channel 1, loudest channel, or mono sum. 4. Estimate up to five formant landmarks with Praat FormantPath (Burg). 5. Take the median frequency of each available formant across the file. 6. Apply the optional confidence test. 7. Convert Global + individual semitone values into multiplicative frequency factors. 8. Clamp destinations to 80 Hz ... Nyquist - 80 Hz. 9. Build one smooth static spectral gain curve from old and target landmark regions. 10. FFT each channel once; multiply its complex spectrum by the same gain curve. 11. Inverse transform, crop back to the original duration, and apply Dry/Wet. 12. Reassemble all original channels and apply the selected output-level mode. 13. Restore the source start time (xmin), rename the output, draw and/or play.

Spectral remapping

For every active landmark, the script creates two broad Gaussian regions: a cut centred on the measured landmark and a boost centred on the target. The per-landmark contribution is approximately:

gain(f) = strength × [Gaussian(f, target, width) − Gaussian(f, measured, width)]

The contributions of all active landmarks are summed, then the total spectral gain is limited to ±Strength dB. The linear multiplier is 10^(gain_dB/20).

Region width

Bandwidth scale does not scale LPC formant bandwidths. It scales the width of the Gaussian spectral regions used for the remapping. Before scaling, each width is the larger of 24% of the measured landmark frequency or a formant-specific minimum:

LandmarkMinimum base width
F1180 Hz
F2260 Hz
F3360 Hz
F4450 Hz
F5550 Hz

After applying Bandwidth scale, the working width is constrained to 90–1400 Hz.

Presets

Preset transpose values are additive with the preset's Global value. For example, a preset with Global +2 and F2 +2 sends F2 upward by a total of +4 semitones. Presets do not override Analysis source, confidence, Dry/Wet, output-level mode, ceiling, visualization, or playback.

PresetF1 / F2 / F3 / F4 / F5GlobalWidthStrength
Natural (no change)0 / 0 / 0 / 0 / 0 st0 stUser value; irrelevant on bypass18 dB
Compress Vowel Space+3 / +2 / 0 / −2 / −3 st0 stUser value14 dB
Expand Vowel Space−3 / −2 / 0 / +2 / +3 st0 stUser value14 dB
Brighten Spectrum0 / +4 / +6 / +7 / +8 st0 st0.70×18 dB
Darken Spectrum0 / −4 / −6 / −7 / −8 st0 st1.40×18 dB
Male to Female−1 / +2 / +3 / +3 / +2 st+2 st0.85×16 dB
Female to Male+1 / −2 / −3 / −3 / −2 st−2 st1.15×16 dB
Robot Voice (harmonic)0 / +12 / +19 / +24 / +28 st0 st0.50×24 dB
Alien Creature+8 / −5 / +12 / −8 / +15 st0 st1.50×22 dB
Demon Voice−7 / −12 / −8 / −15 / −10 st−5 st2.00×24 dB
Chipmunk Extreme+5 / +8 / +10 / +12 / +12 st+7 st0.60×22 dB
Giant Extreme−8 / −12 / −10 / −14 / −12 st−8 st2.50×24 dB
Spectral Inversion+12 / +5 / 0 / −5 / −12 st0 st1.00×20 dB
Harmonic Series0 / +12 / +19 / +24 / +28 st0 st0.40×24 dB
Chaos Mode+9 / −11 / +14 / −6 / +17 st0 st1.80×24 dB
Chaos Mode is deterministic. There is no random-number generator in this tool; the name describes its irregular landmark map, not stochastic processing.

Parameters

Individual landmark control

ControlDefaultMeaning
F1–F5 transpose semitones0Independent frequency displacement for each measured landmark.
Global transpose semitones0Additional displacement applied to every landmark before its individual value.

Envelope shape

ControlDefaultMeaning
Bandwidth scale1.0Scales the width of the spectral regions surrounding the measured and target landmarks. Valid range in the script: greater than 0 and at most 4.
Strength dB18 dBSets the nominal per-landmark shaping strength and the final ±dB limit of the combined gain curve. Valid range: greater than 0 and at most 36 dB.

Analysis

ControlDefaultMeaning
Max formant Hz5500 HzMiddle formant ceiling supplied to FormantPath analysis. It is automatically reduced when required by the input Nyquist frequency.
Analysis sourceLoudest channelChannel 1, loudest channel by whole-file RMS, or mono sum. The chosen source only determines the landmarks; all original channels are processed and preserved.
Require formant confidenceOnBypasses processing unless at least two valid landmarks span at least 600 Hz, reducing the chance of treating a narrow spectral-line cluster as a formant envelope.
Mono-sum analysis can cancel anti-phase material. For stereo or multichannel sources where phase cancellation is possible, Loudest channel is the safer default.

Output

ControlDefaultMeaning
Dry/Wet mix1.00 = unchanged dry copy; 1 = fully processed. Intermediate values mix each processed channel with its corresponding dry channel.
Output level modeNatural levelNatural level / Safety ceiling / Peak normalize.
Ceiling peak0.95Peak target used by Safety ceiling and Peak normalize.
Draw visualizationOnDraw the Praat AudioTools diagnostic page.
Play after processingOnAudition the result. If its natural-level peak exceeds 1.0, playback uses a temporary 0.95-peak copy while leaving the stored output unchanged.

Landmark analysis

The script uses Praat FormantPath (Burg) only to obtain robust spectral landmarks. The fixed analysis settings are:

SettingValue
Time step5 ms
Maximum number of formants5
Window length30 ms
Pre-emphasis from35 Hz
FormantPath ceiling step0.05
Alternative analyses on each side4

After the preferred Formant is extracted from the FormantPath, each F1–F5 landmark is the median frequency over the whole file. The effect is therefore intentionally static: it does not follow instantaneous vowel changes from frame to frame.

The input must be at least 200 ms. A silent selected analysis source is rejected. If no usable formant landmark is found, the script stops; if landmarks exist but fail the optional confidence test, the script produces an unchanged bypass output instead.

Input & output behavior

PropertyBehavior
InputExactly one Sound object.
ChannelsPreserved. One common envelope map is derived from the selected analysis source, then applied independently to every channel.
DurationPreserved.
Sampling frequencyPreserved.
Start time (xmin)Preserved. Processing is performed on a temporary zero-based copy and the original start time is restored at the end.
RandomnessNone.
Processed output name<source>_FormantStretch_<PresetName>
Bypass output name<source>_FormantStretch_Bypass

Output-level modes

ModeBehavior
Natural levelNo hidden scaling. Spectral boosts can therefore produce peaks above 1.0.
Safety ceilingAttenuates only when the processed peak exceeds Ceiling peak. It never boosts a quiet result.
Peak normalizeScales every non-silent processed result to Ceiling peak.

On an explicit bypass path, the audio is intentionally returned unchanged and output-level processing is skipped, even if Safety ceiling or Peak normalize was selected.

Visualization

When enabled, the script draws a suite-standard 8-inch diagnostic page. For files longer than 8 seconds, the waveform and spectrogram displays use a centred 8-second excerpt.

The picture is diagnostic only; visualization choices do not alter the stored Sound.

Notes & limitations

Further Reading