Prosodic Reiterant Speech — KlattGrid Prosody Synth

Reiterant / "gibberish speech" synthesis using a continuous KlattGrid. Extracts pitch, intensity, and syllable timing from a source recording, then resynthesises it with a chosen consonant-vowel pattern (ma, la, na, ba, de) — preserving the source's prosodic contour while removing lexical content.

Author: Shai Cohen Affiliation: Department of Music, Bar-Ilan University, Israel Version: 2.6.1 (2026) License: MIT License Repo: https://github.com/ShaiCohen-ops/Praat-plugin_AudioTools
Contents:

What this does

This script implements reiterant / "gibberish speech" synthesis using a continuous KlattGrid. It extracts pitch, intensity, and syllable timing from a source recording, then resynthesises it with a chosen consonant-vowel pattern (ma, la, na, ba, de) — preserving the source's prosodic contour while removing lexical content. The result is a "gibberish" version of the speech that retains the original prosody (F0 contour, loudness envelope, rhythm) but replaces the phonetic content with a neutral, reiterant pattern.

What is reiterant speech? Reiterant speech is a technique used in prosody research where the original lexical content is replaced with a neutral syllable (e.g., /ma/ or /la/) while preserving the prosodic contour. This allows researchers to study prosody independently of segmental content. The script uses a continuous KlattGrid — a single synthesizer instance spanning the entire utterance — so the glottal source and formant filters run uninterrupted, producing natural-sounding speech without the "chunking" artifacts of per-syllable concatenation.

Key Features:

v2.6 key improvements: Source Pitch dropouts no longer mute the synthetic signal frame-by-frame — V/UV gating is now opt-in and applies only to sustained unvoiced runs. Plosive closures are precomputed before the intensity envelope is built. Nasal pole+zero are explicitly controlled. QC separates source-vs-output F0 preservation from target-vs-output synthesis accuracy. The t=0 open-phase seed no longer collides with a real intensity-derived OQ point when speech begins at time zero.

Quick start

  1. In Praat, select exactly one Sound object (speech recording).
  2. Run script…Prosodic_Reiterant_Speech.praat.
  3. Choose Output_mode (reiterant_synth or lowpass_comparison).
  4. Select a preset (Default, Robotic, Natural Speech, Expressive, Minimal, or Custom).
  5. Choose Syllable_pattern (ma, la, na, ba, de_schwa, alternating, random).
  6. Set Speaker_profile (male, female, auto/broad).
  7. Adjust Naturalness (0 = robotic, 1 = natural) and Pitch_strength (1 = natural contour, 0 = monotone).
  8. Click OK — the script analyses the source, builds a KlattGrid, synthesises, and outputs a new Sound.
Quick tip: Start with Natural Speech preset for a realistic reiterant synthesis. Robotic removes all stochastic variation (jitter, shimmer, formant drift) for a monotone, synthetic voice. Expressive maximises naturalness with high jitter and shimmer. Minimal is a fast, low-quality option for quick testing. Use Pitch_strength = 0 for a strictly monotone output at the median F0 (Parsons-style monotonisation).
Important: This script is pure Praat — no Python required. It uses Praat's KlattGrid synthesis engine (the same engine used for Klatt synthesizer speech synthesis). The source is analysed for pitch, intensity, and syllable timing; the output is a new Sound containing the reiterant speech. The script is experimental — perceptual intelligibility testing is recommended before use in research. The lowpass_comparison mode reuses the original waveform (filtered) and is intended as a baseline/comparison only.

5 Presets

PresetNaturalnessJitterOQSilence (dB)Min Pause (s)Min Syll (s)Max Syll (s)Character
Default1.00.40.70250.120.080.45Balanced natural synthesis
Robotic0.00.00.50250.120.080.45No variation — flat, synthetic
Natural Speech1.00.40.75200.100.070.40More natural, tighter timing
Expressive1.00.80.85180.080.060.50High variation, expressive
Minimal0.30.150.60300.150.100.45Fast, low-quality

Syllable Patterns — 7 Options

ma

Bilabial nasal + open vowel /a/. Nasal murmur with F2 locus ~1000 Hz.

la

Lateral approximant + /a/. F1 locus 250 Hz, F2 locus 1100 Hz, raised F3.

na

Alveolar nasal + /a/. Nasal murmur with F2 locus ~1750 Hz.

ba

Voiced plosive + /a/. Closure gap (35 ms) + VOT burst, F2 locus 800 Hz.

de_schwa

Alveolar plosive + schwa. F1 500 Hz, F2 1500 Hz, F2 locus 1800 Hz.

alternating

Cycles through ma, la, na, ba in order.

random

Randomly selects from ma, la, na, ba, de per syllable.

Consonant-class cues: Nasal consonants (/m/, /n/) use a nasal pole at ~270 Hz with a place-dependent antiformant (900 Hz for /m/, 1650 Hz for /n/). Plosives (/b/, /d/) use a brief closure gap (35 ms) followed by a VOT ramp and a formant locus (800 Hz for /b/, 1800 Hz for /d/). The lateral /l/ uses a smooth F1/F2 transition with a raised F3. These cues produce broad consonant-class distinctions rather than full phonetic naturalness.

Controls — Human/Robotic Continuum

Naturalness (0–1)

Master control for voice quality. 0 = robotic (all stochastic variation suppressed), 1 = natural (full jitter, shimmer, OQ variation, formant drift).

Jitter_amount (0–1)

Syllabic F0 microvariation depth. At Naturalness=1, 0.4 = ±1.6%, 0.8 = ±3.2%. Controls per-syllable pitch perturbation, not cycle-to-cycle jitter.

OQ_flat (0.3–0.9)

Baseline open quotient (glottal open phase). Higher = breathier voice. OQ swings with intensity (pressed voice at high intensity).

Pitch_strength (0–2)

Intonation gradient. 1 = natural contour from source, 0 = strictly monotone at median F0 (Parsons-style monotonisation). 0.5 = half the natural contour range.

Research_seed

Fixed seed for reproducibility. 0 = unpredictable run; non-zero = deterministic (same random variation each run).

Gate_long_unvoiced_runs

Opt-in V/UV gating. If enabled, only contiguous source-unvoiced runs longer than Minimum_unvoiced_gate_s (default 50 ms) can mute the synthetic signal. Prevents short tracker dropouts from punching holes in the output.

Naturalness scaling

Jitter: max ±4% × jitter_amount × naturalness

Shimmer: max ±7% × naturalness (amplitude perturbation)

OQ swing: 0.15 × naturalness (intensity-driven open quotient variation)

Formant drift: F1: ±3% × naturalness, F2: ±2% × naturalness

Applications

Prosody research stimuli

Use case: Generate reiterant speech stimuli for prosody perception experiments. The output preserves the source's F0 contour, intensity envelope, and rhythm while removing lexical content.

Settings: Natural Speech preset, Pitch_strength=1.0. The output is a "gibberish" version of the source that can be used to test prosodic perception without segmental cues.

Monotonisation control (Parsons 2025)

Use case: Create a monotone version of a speech utterance at the speaker's median F0.

Settings: Pitch_strength=0, Robotic preset. The output is a flat, monotone synthesis — useful as a baseline for prosody manipulation studies.

Low-pass comparison baseline

Use case: Generate an F0-individualised low-pass filtered version of the source (Parsons et al., Interspeech 2025).

Settings: Output_mode=lowpass_comparison. The cutoff is 420.2 × (1 − e^{−0.0124 × meanF0}) with transition bandwidth = meanF0/4. Reuses the original waveform (filtered).

Expressive / robotic voice continuum

Use case: Explore the human-to-robotic voice quality continuum for sound design or synthesis research.

Settings: Adjust Naturalness from 0 to 1, with Expressive preset for maximum variation. The output ranges from flat, robotic speech to expressive, natural-sounding gibberish.

Workflow: Voice recording → Reiterant speech

Source: Spoken sentence.
Settings: Natural Speech preset, pattern=alternating (ma, la, na, ba).
Result: The source's prosody is preserved, but the lexical content is replaced with alternating CV syllables — a "gibberish" version of the original utterance.

Workflow: Monotonisation control

Source: Any speech recording.
Settings: Robotic preset, Pitch_strength=0.
Result: The output is a flat, monotone synthesis at the speaker's median F0 — no intonation contour.

Workflow: Low-pass comparison

Source: Speech recording.
Settings: Output_mode=lowpass_comparison.
Result: A low-pass filtered version of the original with an F0-individualised cutoff. Intended as a comparison/baseline condition for prosody obfuscation studies.

Troubleshooting:
No speech detected: Lower Silence_threshold_dB_below_peak (e.g., 25 → 18). If the recording is very quiet, the script may find no speech regions.
Output has clicks or discontinuities: The continuous KlattGrid should avoid the "chunking" artifacts of per-syllable concatenation. If clicks occur, check that the source duration is long enough (>0.5 s) and that the pitch range is appropriate.
Pitch tracking fails: Adjust Pitch_floor and Pitch_ceiling to match the speaker. For female voices, use floor=100, ceiling=500. For male voices, floor=75, ceiling=300.
Naturalness not audible: Set Naturalness=1 and use the Expressive preset. The stochastic variation (jitter, shimmer, OQ, formant drift) may be subtle; increase Jitter_amount to 0.8 for more noticeable variation.
Plosive closure not audible: The closure gap is 35 ms by default. For longer closures, edit the plosClosed constant in the script (currently 0.035 s).
Output is too quiet: Increase Output_peak (0.85 → 0.95). The final Scale peak sets the global output level.

Quality Control (QC)

When Draw_QC is enabled, the script generates a multi-panel scientific figure:
  • Panel A: Source waveform with syllable boundaries (dotted) and nuclei (ticks).
  • Panel B: F0 (Hz) — source vs output overlay, with median reference.
  • Panel C: Intensity contour — source vs output shape (global level removed).
  • Panel D: Output spectrogram (with F0 overlaid) or output waveform.
  • Summary strip: F0 preservation (source-output correlation), synthesis accuracy (target-output correlation + RMSE), intensity shape RMSE, speech/pause agreement, seed.
The QC metrics are also printed in the Info window: source/output F0 correlation, target/output F0 correlation and semitone RMSE, intensity contour correlation and shape RMSE, speech/pause agreement.