Dynamic Vowel Transitions — User Guide
A time-varying source–filter synthesizer. It creates a harmonic or noise excitation, passes it through three moving resonances (F1, F2, F3), and turns the resulting spectral motion into a vowel-like transition.
What this does
Dynamic Vowel Transitions synthesizes a source first and then filters that source through a moving three-resonance vocal-tract model. The resonances follow trajectories labelled F1, F2, and F3. Changing their positions changes the spectral envelope and therefore the perceived vowel-like colour.
excitation → moving F1/F2/F3 resonances → one global RMS reference scalar → short edge fade → optional stereo rendering → output-level policy
This distinction matters: F1, F2, and F3 are not sine oscillators added to the output. They are resonance frequencies inside a time-varying FormantGrid. The source contains a harmonic spectrum or noise; the FormantGrid emphasizes spectral regions around the three resonances as they move.
The result is intentionally a compact synthetic vowel model rather than a complete speech synthesizer. It has three resonances with fixed bandwidths during a run, no consonant model, no articulatory geometry, and no automatic simulation of all details of a natural voice. Its strength is direct control of a clearly visible source–filter transition.
What F1, F2, and F3 mean here
In a source–filter view of speech, the source supplies acoustic energy and the vocal tract shapes that energy through resonances. Those resonances are commonly called formants. F1 and F2 carry much of the information that separates vowel qualities, while F3 contributes additional spectral character.
The script uses Praat's FormantGrid as the synthesis filter. Each resonance has both a frequency trajectory and a bandwidth. The default bandwidths are 70, 100, and 150 Hz for F1, F2, and F3 respectively, multiplied by Formant bandwidth scale.
Quick start
- Run
Dynamic_Vowel_Transitions.praat. No input Sound is required. - Choose a preset such as A to I, Whisper Morph, or Vowel Cycle.
- Set the duration and output sample rate.
- Choose a spatial mode. Start with Mono when you want to hear the source–filter behaviour without spatial movement.
- Choose the output-level policy. Reference RMS preserves the internally referenced result; Safety ceiling only turns down peaks above the ceiling; Peak normalize targets the ceiling peak.
- Enable Edit vowel/source details only when you need direct access to formants, source harmonics, breathiness, seed, bandwidth, fade, or ceiling.
Presets
Presets set the source and resonance configuration. They do not change the selected spatial mode, output-level mode, sample rate, visualization, or playback settings.
| Preset | Resonance path | Source | BW scale | Character of the model |
|---|---|---|---|---|
| A to I | 730/1090/2440 → 270/2290/3010 Hz | F0 120 Hz, 18 harmonics, breath 0.04 | 1.00 | Two-point vowel transition. |
| I to U | 270/2290/3010 → 300/870/2240 Hz | F0 120 Hz, 18 harmonics, breath 0.04 | 1.00 | Strong F2 descent. |
| U to A | 300/870/2240 → 730/1090/2440 Hz | F0 120 Hz, 18 harmonics, breath 0.04 | 1.00 | Strong F1 rise. |
| A to E to I | A → 530/1840/2480 → I | F0 120 Hz, 18 harmonics, breath 0.04 | 1.00 | Three-point path; each segment is eased separately. |
| Vowel Cycle | A → I → U → A | F0 120 Hz, 18 harmonics, breath 0.04 | 1.00 | Four-point closed path over the requested duration. |
| Formant Glissando | 200/600/1800 → 900/2800/4000 Hz | F0 110 Hz, 24 harmonics, breath 0.03 | 0.75 | Wide synthetic upward resonance sweep. |
| Whisper Morph | 600/1200/2400 → 400/1800/2800 Hz | Gaussian noise; F0 = 0 | 1.35 | Noise-driven source–filter morph rather than voiced synthesis. |
| High-F0 Singing Morph | 550/1100/2350 → 350/2000/3000 Hz | F0 220 Hz, 26 harmonics, breath 0.025 | 0.85 | Higher-pitched harmonic excitation; preset duration becomes 5 s. |
| Narrow-Band Robot Morph | 400/1200/2400 → 500/1500/2600 Hz | F0 100 Hz, 20 harmonics, breath 0.005 | 0.60 | Narrower synthetic resonances and little noise. |
| Extreme Formant Morph | 150/3000/4500 → 800/1200/3500 Hz | F0 180 Hz, 28 harmonics, breath 0.06 | 0.55 | Deliberately extreme resonance movement. |
How the transition moves
Most two-point presets use a half-cosine progress curve rather than a straight line:
This makes the movement start gently, move fastest near the middle, and settle gently at the end. It avoids the constant-speed glide described in the older guide.
A to E to I and Vowel Cycle divide the total duration into equal segments. Each adjacent vowel pair receives its own half-cosine interpolation. The script samples these trajectories densely enough to build the FormantGrid and to draw the same paths in the visualization.
Excitation source
Voiced / harmonic source
When Fundamental Hz > 0, the source is a harmonic series. Harmonic h has frequency h × F0 and amplitude proportional to 1 / h^1.15. Only harmonics below the script's practical headroom limit of 0.45 × sample rate are included.
Breathiness crossfades the harmonic excitation with Gaussian noise:
After that mixture is made, the entire source is scaled to a common RMS of 0.12. Therefore Breathiness primarily changes spectral/source character instead of silently acting as an overall gain control.
Whisper / noise source
When Fundamental Hz = 0, no harmonic oscillator bank is used. The source is Gaussian noise, then it is brought to the same RMS reference before filtering. The Whisper Morph preset uses this mode.
Random seed
Random seed = 0 uses the current unpredictable random state. A positive value reproduces the Gaussian component exactly for the same settings. After synthesis, the script restores Praat's unpredictable random initialization rather than leaving the global generator fixed.
Advanced vowel/source controls
The compact main form keeps the common controls visible. Enabling Edit vowel/source details opens a second page after the preset has already been applied, so the values shown there are the selected preset's values and can be fine-tuned.
| Control | Meaning |
|---|---|
| Start / End F1, F2, F3 | Endpoints for two-point presets and Custom. The script requires 0 < F1 < F2 < F3 at both ends. |
| Formant bandwidth scale | Multiplies the base synthesis bandwidths 70 / 100 / 150 Hz. |
| Source harmonics | Requested harmonic count, 1–128. Harmonics above practical sample-rate headroom are simply not generated. |
| Breathiness | 0 = harmonic source only; 1 = Gaussian-noise component only when F0 is positive. The source is RMS-referenced afterwards. |
| Random seed | Controls the breath/noise realization; 0 = unpredictable. |
| Edge fade | Short linear fade at both outer edges, capped at 20% of duration. It is click protection, not a musical amplitude envelope. |
| Ceiling peak | Target used by Safety ceiling or Peak normalize; allowed range >0 to 1. |
0.45 × sample rate, the script scales all formant frequencies and all three bandwidths by one common factor. This preserves their relative ordering and ratios better than clipping the resonances independently. The Info window reports when this correction occurs.
Spatial modes
| Mode | Implementation | Result |
|---|---|---|
| Mono | No spatial processing. | One-channel source–filter output. |
| Stereo Voice | Left = original / √2. Right = a delayed copy / √2. Delay is min(4 ms, 2% of duration). | Subtle interaural decorrelation without splitting formants into different frequency bands. |
| Rotating Voice | Complete vowel signal receives exact equal-power sinusoidal panning at 0.15 Hz. | The whole source–filter result moves together; the formants are not separated spatially. |
| Transition Pan | Equal-power left-to-right pan from position 0.05 to 0.95 using the same half-cosine progress shape. | Spectral transition and spatial transition progress together. |
Unlike the older implementation, the current stereo modes do not create width by complementary spectral filtering. The complete vowel signal is preserved and spatialized as one signal.
Output level
Praat's Filter (no scale) leaves the raw gain of the FormantGrid untouched. Because an all-pole formant filter can add substantial gain, the script measures the filtered RMS once and applies one global scalar so that the filtered signal's reference RMS matches the source RMS before the short edge fade.
| Output level mode | What happens after spatialization |
|---|---|
| Reference RMS | No additional peak scaling. The earlier global source/filter reference scalar remains the only main level compensation. |
| Safety ceiling | If the measured peak exceeds the chosen ceiling, the entire output is attenuated to that ceiling. Quieter results are left unchanged. |
| Peak normalize | Every non-zero result is scaled so its absolute peak equals the chosen ceiling. |
With the default ceiling of 0.90, Safety ceiling is an attenuate-only limiter-like safety policy, whereas Peak normalize is target peak normalization.
| Output property | Behavior |
|---|---|
| Channels | Mono in Mono mode; stereo in the other three modes. |
| Duration | Requested duration; High-F0 Singing Morph sets it to 5.0 s before optional detailed editing. |
| Sample rate | User-selected sample rate; synthesis occurs directly at that rate. |
| Name | vowel_<preset name> with spaces replaced by underscores. |
Visualization and QC
| Panel | What it actually shows |
|---|---|
| A — Synthesis Resonance Trajectories | The exact F1/F2/F3 paths written into the synthetic FormantGrid. Multi-vowel segment boundaries are also marked. |
| B — Actual Excitation | Measured spectrum of the source before FormantGrid filtering. |
| C — Model → Measurement | Measured output spectrogram with the exact synthesis trajectories overlaid, so model targets can be compared with the rendered spectrum. |
| D — Measured Output | Waveform of the final mono output or, for stereo, whichever channel has the higher RMS. |
The QC block reports source type, F0/harmonic count when applicable, Breathiness and seed, the three synthesis bandwidths, any common formant-frequency scale, pre/post peak, final RMS, spatial mode, and output-level policy.
Further Reading
- Fant, G. (1960). Acoustic Theory of Speech Production. Mouton. Foundational treatment of acoustic vocal-tract resonance and source–filter concepts.
- Klatt, D. H. (1980). “Software for a cascade/parallel formant synthesizer.” Journal of the Acoustical Society of America, 67(3), 971–995. DOI: 10.1121/1.383940. A classic software formant-synthesis reference with time-varying control parameters.
- Praat Manual: FormantGrid and Source-filter synthesis. These pages document the actual Praat object and filtering mechanism used by this script.