Formant Synthesis — User Guide

A KlattGrid source–filter vowel/voice synthesizer. Pitch, voicing, aspiration and breathiness form the source; four oral resonances F1–F4 form the filter. Presets configure vowel targets and synthetic voice variants, with optional vibrato and stereo rendering.

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

What this does

Formant Synthesis uses Praat's KlattGrid as an explicit source–filter synthesizer. The source is defined by F0, voicing amplitude, aspiration and breathiness. That source then passes through four oral resonances whose center frequencies and bandwidths are set by F1–F4 and BW1–BW4.

Signal path:
pitch + phonation / aspiration / breathiness → KlattGrid oral resonances F1–F4 → optional stereo field → short edge fade → optional final peak normalization

The four formants are filter resonances, not four sine oscillators. This distinction is central to the current implementation.

The script is designed for controllable vowel-like and synthetic voice timbres. It is not a complete speech synthesizer: the resonances are static during each rendered sound, there are no consonant gestures, and the model uses only four oral resonances with a compact set of source controls.

Source and filter

Source

KlattGrid provides separate tiers for the periodic voice source and for noise-related source components. In this script the relevant controls are:

All active source amplitudes receive the same short attack and release structure. The attack is at most 25 ms and the release at most 60 ms, with both automatically shortened for very short sounds.

Filter

The filter consists of four static oral resonances. Each resonance has a center frequency and a bandwidth:

source → [F1/BW1] → [F2/BW2] → [F3/BW3] → [F4/BW4] → output

Within one rendered sound, F1–F4 and their bandwidths remain constant. Presets change these targets before synthesis; they do not create time-varying vowel transitions.

Quick start

  1. Run Formant_Synthesis.praat. No input Sound is required.
  2. Choose a preset such as Vowel A, Vowel I, Aspiration-Dominant Whisper, or Extreme Formant Voice.
  3. Set Duration, Pitch, Sample rate, and Spatial mode.
  4. Use Edit formant details when you want direct F1–F4 and bandwidth control.
  5. Use Edit source details for voicing/noise levels, vibrato, random seed, and edge fade.
  6. Leave Normalize output on for target peak normalization to 0.90, or turn it off to retain the raw rendered level.

Presets

Presets load source and/or resonance settings before the optional advanced pages open. They do not change Spatial mode, Sample rate, Normalize output, Draw visualization, or Play result.

PresetPitchF1 / F2 / F3 / F4 (Hz)BW1 / BW2 / BW3 / BW4 (Hz)Source emphasis
Vowel Aform value730 / 1090 / 2440 / 350040 / 60 / 100 / 120Voice 60 dB; aspiration 8; breathiness 4
Vowel Eform value530 / 1840 / 2480 / 350045 / 65 / 105 / 125Voice 60; aspiration 8; breathiness 4
Vowel Iform value270 / 2290 / 3010 / 350035 / 70 / 110 / 130Voice 60; aspiration 7; breathiness 3
Vowel Oform value570 / 840 / 2410 / 350050 / 60 / 100 / 120Voice 60; aspiration 8; breathiness 4
Vowel Uform value300 / 870 / 2240 / 350040 / 55 / 95 / 115Voice 60; aspiration 8; breathiness 4
High-F0 A260 Hz800 / 1150 / 2900 / 390035 / 50 / 90 / 110Voice 62; light noise; vibrato depth 0.55 st
Low-F0 O80 Hz450 / 800 / 2830 / 350060 / 70 / 120 / 140Voice 61; light noise; vibrato depth 0.35 st
High-F0 E300 Hz600 / 2000 / 2600 / 380030 / 55 / 95 / 115Voice 60; light noise; vibrato depth 0.45 st
Narrow-Band Synthetic Voiceform value400 / 1200 / 2400 / 320020 / 30 / 40 / 50Voice 64; no aspiration/breathiness; vibrato off
Aspiration-Dominant Whisperform value500 / 1500 / 2500 / 350080 / 100 / 150 / 200Voicing 0; aspiration 72; breathiness 0; vibrato off
Vibrato Vocal Tone220 Hz600 / 1200 / 2400 / 360035 / 55 / 95 / 115Voice 62; vibrato 5.5 Hz / 0.95 st
Extreme Formant Voice180 Hz200 / 3000 / 4000 / 500015 / 25 / 35 / 45Voice 64; light noise; vibrato off
The labels High-F0 and Low-F0 describe synthesis configurations only. They are not intended as demographic voice categories.

Formant controls

Edit formant details opens a second page containing F1–F4 and BW1–BW4. The script requires:

0 < F1 < F2 < F3 < F4
all bandwidths > 0

Sample-rate headroom

The practical upper synthesis limit is 0.45 × sample rate. If F4 lies above that value, the script does not clip F4 alone. Instead it computes one common scale factor and applies it to:

This preserves the relative formant geometry and bandwidth proportions as much as possible. The Info window and visualization report the effective formants and the applied scale.

Source controls

ControlDefaultBehavior
Voicing amplitude60 dBPeriodic source level. A value of 0 disables the voiced source tier.
Aspiration amplitude0 dBAspiration-noise source level.
Breathiness amplitude0 dBBreathiness-noise source level.
Enable vibratoyesTurns pitch modulation on/off.
Vibrato rate6 HzRate of the F0 modulation.
Vibrato depth0.75 semitonesPeak excursion in semitones.
Random seed00 = unpredictable stochastic source realization; positive integer = reproducible stochastic components.
Edge fade0.02 sFinal linear click-protection fade at the beginning and end, capped at 20% of duration.

Vibrato

Vibrato is defined in semitones, then converted multiplicatively to frequency:

F0(t) = baseF0 × 2^[(depth × sin(2π × rate × t)) / 12]

The pitch tier is sampled at approximately eight control points per vibrato cycle. This keeps the same musical pitch depth meaningful at different F0 values instead of using a fixed Hz excursion.

Random seed

A positive seed makes KlattGrid's stochastic source components reproducible for the same settings. After synthesis, the script restores Praat's unpredictable random initialization. In Detuned Stereo Chorus, both channels use the same source/filter parameter structure but are synthesized as separate voices at slightly different F0 values.

Spatial modes

ModeImplementationChannels
MonoOne complete KlattGrid voice.1
Stereo Micro-DelayLeft = original / √2. Right = delayed copy / √2, with delay min(8 ms, 4% of duration).2
Detuned Stereo ChorusTwo complete KlattGrid voices: left at −5 cents, right at +5 cents. Both retain the same vibrato, formants, source envelopes, aspiration and breathiness settings.2

Stereo Micro-Delay preserves the full vowel spectrum in both channels; it does not split low and high formants between the ears. The right channel is delayed inside the same total duration, so the very end of the delayed copy is not extended beyond the requested output duration.

Detuned Stereo Chorus is true dual-voice rendering rather than a pitch-shifted copy after synthesis.

Output, duration, sample rate, and level

PropertyCurrent behavior
DurationRequested Duration, up to 120 seconds.
Sample rate8–192 kHz. KlattGrid output is resampled to the requested rate when necessary using Praat's sinc resampling with precision 50.
ChannelsMono in Mono mode; stereo in Micro-Delay and Chorus.
Output nameformant_<preset name> with spaces replaced by underscores.
Save to fileNot part of the current script. The output remains as a Sound object in Praat.

Normalization

The final output is measured after spatialization and the outer edge fade. If Normalize output is enabled and the Sound is non-zero, the script runs:

Scale peak: 0.90

This is target peak normalization: quieter non-zero results are raised as well as louder results being reduced. With Normalize output off, no final peak scaling is applied.

Visualization and QC

PanelWhat it actually shows
A — F1–F2 Vowel SpaceReference points for /i e a o u/ plus the current effective F1/F2 target when it falls inside the displayed range.
B — KlattGrid Pitch ControlThe exact center-voice F0 control trajectory used by the synthesis model. In Chorus mode, ±5-cent reference lines are also shown.
C — Model → MeasurementMeasured spectrogram of a representative final-output channel with the four effective synthesis-resonance targets overlaid.
D — Measured Output SpectrumMeasured spectrum of the same representative channel with F1–F4 target markers.

For stereo output, the representative channel is whichever channel has the higher whole-file RMS.

In Detuned Stereo Chorus, Panel B's main vibrato curve is a center-frequency reference. The actual rendered left and right voices are detuned by ±5 cents and each carries the same vibrato pattern around its own detuned base F0.

The QC strip summarizes source levels and seed, effective F1–F4 values and Nyquist scale, nominal pitch/vibrato range, spatial mode, and pre/post-normalization peak/RMS measurements.

Further Reading