Whisper Morph — User Guide

LPC-based creative whisper resynthesis with per-channel noise excitation, source-relative intensity shaping, controllable breathiness, and time-varying dry/whisper morphs.

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

What this does

Whisper Morph builds a noise-excited LPC resynthesis target from the selected Sound and morphs between that target and the unmodified source. Each input channel is analysed independently, so stereo and multichannel material keep their channel structure. The LPC model supplies a time-varying spectral envelope; Gaussian noise supplies the whisper-like excitation; a source-derived relative intensity contour restores the broad amplitude trajectory.

Interpretation: this is a creative whisper resynthesis, not a physiological simulation of human whisper production. LPC is used as a time-varying spectral-envelope model. No formant frequencies are explicitly measured, edited, or synthesized.

The wet target can range from the unchanged tonal source (Breathiness = 0) to fully noise-excited LPC resynthesis (Breathiness = 1). Five morph patterns and three curve shapes then control how much of that target is heard through time.

Signal flow

Selected Sound → exact zero-based work copy → process each channel independently → Burg LPC analysis → Gaussian noise excitation → filter noise through LPC model → fixed reference whisper EQ + Brightness offset → source-relative IntensityTier envelope → match average channel intensity → Breathiness blend with unchanged tonal channel → assemble multichannel whisper target → time-varying dry / whisper crossfade → restore original start time → attenuation-only Safety peak → optional visualization / playback

The dry path is never normalized or preprocessed. Internal time shifting is used only to make the LPC/noise objects share a zero-based domain; the final Sound is shifted back to the source start time.

Quick start

  1. Select exactly one Sound object.
  2. Run Whisper_Morph.praat.
  3. Choose a preset, or use Custom.
  4. Choose the morph pattern and curve.
  5. Use Breathiness to set how noise-like the wet target becomes.
  6. Use Brightness_adjust_dB to move the whisper target brighter or darker relative to the built-in reference curve.
  7. Use a non-zero Random_seed when you need the same noise realization again.
  8. Run the script. The result is named <source>_whispermorph.
Useful endpoints: Breathiness = 0 makes the wet target an exact copy of the tonal source before the final Safety stage. Full Whisper bypasses the morph curve and outputs the wet target for the whole duration.

Presets

Presets override only the four whisper-target parameters shown below. They do not override Morph type, Morph curve, Random seed, Safety peak, visualization, or playback.

PresetLPC factorBreathinessBrightness adjustGate range
CustomUser valueUser valueUser valueUser value
Gentle Whisper0.90.7−2 dB40 dB
Breathy Whisper1.01.0+2 dB40 dB
Harsh Whisper1.20.9+4 dB40 dB
ASMR Style1.10.6−3 dB35 dB

Whisper-target controls

LPC order

The base order is round((2 + sampleRate/1000) × LPC_order_factor), then clamped to 10–50. The factor itself is clamped to 0.5–2.0. At 44.1 kHz and factor 1.0, the order is 46.

Praat's To LPC (burg) is used with a 25 ms analysis window, 5 ms time step, and 50 Hz pre-emphasis. Because this command models the spectrum up to the Sound's Nyquist frequency, the result should be understood here as a resynthesis filter, not as a direct formant measurement.

Breathiness

Breathiness is clamped to 0–1. At 1, the target is fully the noise-excited LPC branch. Between 0 and 1, the script linearly blends that target with the unchanged source channel, then matches the result to the source channel's average intensity. At 0, the script special-cases the endpoint and copies the source channel exactly.

Reference whisper EQ and Brightness

The LPC-filtered noise is shaped by a fixed, piecewise spectral EQ inherited from the v1.2 sound design. Brightness_adjust_dB = 0 is not a flat EQ. It means “use the v1.2 reference curve unchanged.” The adjustment is added to the two main positive bands:

Frequency regionGain
< 354 Hz−24 dB
354–707 Hz+12 dB + Brightness adjust
707–2828 Hz+24 dB + Brightness adjust
2828–11314 Hz+12 dB + Brightness adjust
≥ 11314 Hz−6 dB

The user adjustment is clamped to −18…+18 dB. Frequency regions above Nyquist simply do not occur for lower-rate input.

Relative intensity envelope and gate

Each source channel is analysed with To Intensity: 100, 0.01, "yes". The maximum measured intensity becomes 0 dB, and every other frame becomes its dB difference below that maximum. Frames more than Gate_range_dB below the maximum are assigned −300 dB, effectively silencing the wet target there. Praat's IntensityTier multiplication interprets these values as relative dB gains.

The shaped full-noise target is then globally scaled to the source channel's average intensity. This preserves the intended relative envelope while aligning the overall wet level with that channel.

Random seed

Random_seed = 0 uses an unpredictable Gaussian-noise realization. Any non-zero integer initializes the generator reproducibly. The same seed and settings produce the same result; channels are generated sequentially from the same seeded generator.

Morph system

The morph variable m is the wet/whisper weight. Output is a linear-amplitude crossfade:

output = dry × (1 − m) + whisper × m

This is not an equal-power crossfade; correlated dry and wet signals can therefore sum differently at intermediate values.

Morph typeLinear trajectory before curve shaping
Dry to Wet0 → 1 across the full duration
Wet to Dry1 → 0 across the full duration
Dry-Wet-Dry0 → 1 → 0, with the peak at the midpoint
Wet-Dry-Wet1 → 0 → 1, with the minimum at the midpoint
Full Whisperm = 1 throughout; curve selection is irrelevant

Morph curves

GUI choiceImplementationBehavior
Linearm = uDirect trajectory.
Smooth (cosine)m = 0.5 − 0.5 cos(πu)Zero slope at both ends.
Exponentialm = u²Square-law curve. Despite the GUI label, this is quadratic rather than a mathematical exponential function.

Input & output behavior

PropertyBehavior
SelectionExactly one Sound.
Minimum duration0.1 s.
Silent inputThe script exits if the complete input peak is zero. A silent individual channel remains silent.
ChannelsArbitrary channel count preserved; every channel gets its own LPC analysis and whisper target.
Sample ratePreserved.
DurationPreserved.
Start timePreserved. Processing is internally shifted to time 0 and restored afterward.
Dry pathExact unmodified source samples before the final Safety stage.
Spectrum conversionThe reference whisper EQ uses To Spectrum: "no", avoiding power-of-two padding/cropping.
Safety peak0 disables it. Otherwise, the output is attenuated only when its peak exceeds the requested value; quieter outputs are never boosted.
Output name<source>_whispermorph

Visualization

When enabled, v1.4 draws the AudioTools suite-standard 8-inch page:

For multichannel Sounds, visualization uses mono copies only for drawing. Audio processing remains channel-by-channel. The visualization does not alter the output.

Notes & limitations