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