I'm planning to make my own virtual singer software, like Yamaha's [Vocaloid][1]. Contrary to Vocaloid which composes voice syllable-wise, my software should compose voice phoneme-wise.

As a consequence, I have to analyze the formants of **all** phonemes. Though technically there are infinite numbers of phonemes because my software must be able to produce phonemes of arbitrary languages, I have a workaround; see below.

I set [ə] as the neutral position, and let the other sounds driven by the following parameters. Though this is a crude model and doesn't reflect the actual semantics of acoustics, this model should be easy to implement.

The following parameters determine the vocal quality:

 * **VOLume**

 * **PITch**

 * **Breath/Creak**: Determines the glottal state. Voiceless ~ Breathy ~ Modal ~ Creaky ~ **Glottal stop.**

The following parameters determine the formants:

 * **PHAryngealization**: Determines the position of the tongue root. When set to maximum value, it is **epiglottal stop**.

 * **NASalization**: Determines the width of the velopharyngeal opening. When set to minimum value, it is an oral sound.

 * **Front/Back**: Determines the horizontal position of the tongue. When fully back, it is **uvular stop**.

 * **Close/Open**: Determines the vertical position of the tongue back and the jaw. When fully closed, it is **dorsal stop**.

 * **CORonalization**: Determines the vertical position of the tongue tip. When set to maximum value, it is **coronal stop**.

 * **LATeralization**: Determines the shape of the tongue. Also discriminates sibilant vs. non-sibilant.

 * **JAW**: Determines the horizontal position of the jaw. When set to maximum value, it is a **labiodental** consonant.

 * **COMpression**: Determines the closure of the lips. When set to maximum value, it is **labial stop**.

 * **ROUnding**: Determines the shape of the lips.

My plan to apply this model is, step-by-step (here only concerning vowels):

 1. Record voiceless versions of 'extreme' vowels, such as [ḁ], [i̥], and [u̥].

 2. Least-square-approximate their spectra with a linear combination of functions that models formants. I conjecture those functions to be the PDF of [Kumaraswamy distribution][2].

 3. Interpolate the result to produce 'intermediate' vowels, such as [ə̥].

 4. Use resulting spectra as filters to produce voiced vowels.

**TL;DR:** But I'm unsure how many functions are needed to model formants. What is the maximum possible number of formants?

  [1]: https://www.vocaloid.com/
  [2]: https://en.wikipedia.org/wiki/Kumaraswamy_distribution