At 13:18 15.09.2004, Thomas Comiotto wrote:
Hi all,
I'm thinking of building a patch suitable for replacing specific vovels of some pre-recorded / live-captured speech fragments by some other vovels (eg. every 'uuh' becomes an 'ööh' or 'aah' or the like, while every 'iih stays an 'iih') for morphing/bending swiss-german idioms. So I wanted to ask for possible solutions to do that in pd, possibly in realtime? I can think of analizing the source signal's FFT, modulate target vovels and feed results back into the resulting stream. But I'm quite an FFT newbie and perhaps there's a better/simpler approach?
"...vowels are often uniquely identified by their first two formants..." there's a lot a research beeing done in this field. if you search google with "speech recognition" + vowels + formants you'll find quite a lot of papers on vowel recognition. even adding "swiss german" to the query brings up a few results. i'm not sure how to transform vowels, but i think it's as easy as letting a man's voice sound like a woman's using formant shifting. for doing fft's and reverse fft's i've found the vasp external to be very useful. however, for more complex computation i'm using python with the pyext external. there's the numeric python module for python which contains a lot of functions for manipulating large sets of data in a gridlike fashion. it contains all you need like fft, ifft, windowings function and the like. in a lot of academical papers on that topic you'll find example scripts for matlab and octave which are easily portable to python / numpy. doing ffts, _a_lot_ of data manipulation in the frequency domain and iffts is possible in realtime on a centrino 1.7. sven.
(gibt es ein leben nach dem diplom? ;-)