LPC Excitation Lab — User Guide

Offline LPC analysis–resynthesis for driving a source sound’s spectral envelope with synthetic or cross-synthesized excitation.

Author: Shai Cohen Version: 2.2.1 (2026) Application: Praat scripting language License: MIT License
Contents:

What this does

LPC Excitation Lab separates the roles of excitation, spectral envelope, and articulation. It analyzes a source with linear predictive coding (LPC), builds or extracts an excitation signal, inverse-filters that excitation with its own LPC model to obtain a residual, then filters the residual through the LPC model chosen as the destination spectral envelope. Finally, it applies an intensity contour as the articulation envelope.

The result is not a conventional pitch shifter or formant editor. The spectral coloration is imposed by an LPC all-pole model, while the temporal fine structure comes from the selected excitation. In cross-synthesis modes, different Sounds can provide these roles.

Core idea: excitation determines the fine-grained source character; the destination LPC determines the time-varying resonant envelope; the selected IntensityTier determines the broad amplitude articulation.

Signal flow

Excitation
   ↓
LPC analysis of excitation
   ↓
Inverse LPC filter → residual
   ↓
Destination LPC filter
   ↓
IntensityTier multiplication
   ↓
Peak scale to 0.99
   ↓
Mono output

The destination LPC is derived with Praat’s To LPC (burg) using a fixed 25 ms analysis window, 5 ms frame step, 50 Hz pre-emphasis frequency, and the user-selected LPC order.

Quick start

  1. Select one Sound for Off (single Sound), or exactly two Sounds for either cross-synthesis mode.
  2. Run LPC_Excitation_Lab.praat.
  3. Choose a preset or Custom.
  4. Choose the Cross_synth_mode. Preset Cross-Synth automatically selects mode 2.
  5. For modes using synthetic excitation, choose an excitation method and adjust only the parameters relevant to that method.
  6. Set Lpc_order. Higher orders allow a more detailed all-pole envelope, but can also make the model more sensitive to the material.
  7. Optionally enable the visualization and playback.
Selection order matters in cross-synthesis. Sound1 and Sound2 have different roles. The tables below describe exactly which Sound supplies the residual, filter, and intensity contour.

Cross-synthesis modes

ModeExcitation / residualLPC filterIntensity contourDuration
1. Off (single Sound)Synthetic excitation selected in the formSound1Sound1Sound1 duration; Time Stretch can extend it
2. Sound2 residual through Sound1 filterSound2 is LPC-inverse-filtered; synthetic excitation controls are ignoredSound1Sound2min(duration1, duration2)
3. Synth excitation through Sound2 filterSynthetic excitation selected in the formSound2Sound1min(duration1, duration2)

Mode 2 is the direct cross-synthesis configuration: Sound2 contributes residual/fine temporal structure and articulation, while Sound1 contributes the LPC spectral envelope. Mode 3 keeps a synthetic excitation but substitutes Sound2’s LPC envelope; Sound1 supplies only the articulation contour.

Excitation methods

1. Pitch Sweep

A Praat PitchTier drives a pulse-train source whose base frequency moves linearly in Hz from Start_freq_hz to End_freq_hz. The tier is sampled every 5 ms so optional vibrato and random-walk pitch jitter can be added.

2. Pulse Train

Builds a PointProcess with nominal period Period_s, then converts it to a pulse-train Sound.

3. Time Stretch

Uses Gaussian noise as the synthetic excitation. In single-source mode only, the destination LPC time axis and the Sound1 intensity contour are scaled by Time_stretch_factor, so the output duration becomes approximately the source duration multiplied by that factor.

Noise_am_rate_hz and Noise_am_depth optionally modulate the noise amplitude with a sinusoid. In cross-synthesis mode 3, Time_stretch_factor is ignored; the mode uses the normal cross-synthesis duration.

4. Chirp Burst

Generates one or more exponential chirps between Chirp_start_hz and Chirp_end_hz. Additional layers multiply both endpoints by values parsed from Layer_ratios. Up to eight layers are used; frequencies are clamped below 95% of Nyquist. If the requested layer count exceeds the number of supplied ratios, the parser falls back to the last available ratio.

5. Granular Noise

Builds a noise excitation from Gaussian-windowed grains. The nominal grain size is 40 ms; Grain_size_modulation_pct adds per-grain random size variation. Density changes linearly from Grain_density_start to Grain_density_end, with grain spacing calculated as 40 ms / density. Thus higher density means more frequent grains.

Presets

Presets override the parameters listed below. Other form fields retain their current values, so a preset does not necessarily reset unrelated modulation controls.

PresetOverrides
CustomNo preset override.
Voiced SweepPitch Sweep; 80 → 400 Hz; LPC order 46.
Robotic PulsePulse Train; period 8 ms; LPC order 46.
Stretched WhisperTime Stretch; factor 5.0; LPC order 50.
Chirp TextureChirp Burst; 60 → 8000 Hz; LPC order 46.
Grain CloudGranular Noise; density 0.4 → 0.4; LPC order 40.
Vibrato VoicePitch Sweep; 120 → 220 Hz; 5.5 Hz vibrato; ±35 cents vibrato depth; ±8 cents pitch jitter; LPC order 46.
Jittered PulsePulse Train; 7.3 ms period; ±8% period jitter; ±25% shimmer-like amplitude wobble; LPC order 46.
Density CloudGranular Noise; density 0.2 → 0.9; ±30% grain-size modulation; LPC order 42.
Chirp StackChirp Burst; 80 → 3000 Hz; 4 layers; ratios 1.0, 1.5, 2.7, 4.2; LPC order 50.
Cross-SynthCross-synthesis mode 2; LPC order 48. The displayed excitation method is irrelevant because mode 2 uses Sound2’s residual.

Parameters

ParameterDefaultMeaning
Cross_synth_modeOffSelects the assignment of excitation/residual, LPC filter, and articulation source.
Excitation_methodPitch SweepSynthetic source used in modes 1 and 3. Ignored in mode 2.
Start_freq_hz / End_freq_hz80 / 300 HzPitch Sweep endpoints.
Vibrato_rate_hz / depth0 / 0Pitch Sweep vibrato; depth is in cents.
Pitch_jitter_cents0Random-walk pitch deviation for Pitch Sweep.
Period_s0.01 sNominal Pulse Train period.
Pulse_jitter_pct0Random period variation.
Pulse_shimmer_pct0Depth of the post-generation amplitude wobble.
Time_stretch_factor3.0Single-source Time Stretch only.
Noise_am_rate_hz / depth0 / 0Sinusoidal amplitude modulation of Time Stretch noise.
Chirp_start_hz / end_hz100 / 4000 HzBase exponential-chirp endpoints.
Chirp_layers1Number of stacked chirps, clamped to 1–8 internally.
Layer_ratios1.0, 1.5, 2.0, 2.7Multipliers applied to chirp start/end frequencies.
Grain_density_start / end0.6 / 0.6Start/end grain-rate control, internally constrained to 0.01–1.
Grain_size_modulation_pct0Per-grain random size variation.
Lpc_order46Prediction order for both the destination LPC and the excitation LPC.
Draw_visualizationOnDraw the Praat AudioTools diagnostic page.
Play_resultOnPlay the output after processing.
Fixed analysis settings: LPC window = 25 ms; frame step = 5 ms; pre-emphasis frequency = 50 Hz. These are not exposed in the form.

Input & output behavior

Intensity multiplication: the articulation contour is measured before synthesis. Mode 2 uses Sound2’s intensity; modes 1 and 3 use Sound1’s. In single-source Time Stretch, the IntensityTier is stretched with the LPC time axis.

Visualization

When Draw_visualization is enabled, the 8-inch Praat AudioTools page contains:

  1. Excitation waveform — the synthetic excitation, or Sound2 in residual cross-synthesis mode.
  2. LPC residual waveform — the excitation after inverse filtering by its own LPC model.
  3. Output waveform — the re-filtered signal after intensity articulation.
  4. Spectrum overlay — matched 80 ms Hanning-windowed excerpts from the destination filter source and output, displayed from 0–8 kHz.
  5. Summary strip — preset, method, cross-synthesis mode, LPC order, analysis settings, source durations, output duration, peak, and sample rate.

The spectrum overlay is a local comparison, not a plot of the LPC coefficients themselves. For equal-duration material, both spectra use the same midpoint interval. For Time Stretch, the same 80 ms window length is taken at the relative midpoint of each signal.

Notes & limitations

Further reading