turbulence component is missing
belm0 opened this issue · 4 comments
voc has omitted the turbulence (a.k.a. fricative) component of the tract model, where noise is generated at the location where the tract is narrowed.
Without the turbulence component it's impossible to emit fricative consonants like "v", "z", "th", etc.
Refer to PT code Tract.addTurbulenceNoise(), etc.
Yes, I believe I left this out in order to simplify the model. If it doesn't require too much additional code, I would be amenable to accepting a PR adding it.
Hi Paul,
I intend to make use of the idea in voc that is the ability to put in some numbers and getting as output the audio of vocal tract.
I see potential to estimate the reverse of this function by making use of recurrent neural network to recognize voice inputs etc.. using much lesser human effort.
For this I will have to generate random numbers and corresponding outputs into an output file that is read by a python script using tensorflow etc.
But as you point out here, that some important component is missing, do you think using voc code might not be as useful?
What do you sugget?
With the current implementation, you will still get vowel sounds. You just won't be able to produce fricatives. There's still plenty that RNNs can do here with regards to finding suitable tract diameters.
@vaibhawc you may want to consider what level you want the neural network to control constriction. Voc requires direct diameter control of the entire vocal tract length, while Pink Trombone has high-level constrictions which take care of creating a natural curve around the constriction point as well as restoring the tract gradually when the constriction is removed.
Unless you have some processing constraint requiring a c++ implementation of the synth, you may want to use the original Pink Trombone and e.g. control it from a websocket.
I've refactored Pink Trombone to separate the UI and synth so it's more suitable as a library or verbatim porting, which I hope to share eventually (not able to yet).