Is anyone aware of a software package or general algorithm that allows the separation of consonant and vowel waveforms from a continuous speech signal?

I've tried to implement the technique "Harmonic/Percussive Separation using Median Filtering" by Fiztgerald but I can't seem isolate just the consonant or vowel. I think I might have to specify the median filter length in the time (harmonic) and frequency (percussive) direction to match up with the properties of the vowel/consonant I want to separate but not sure how to do this.

I could spend ages trying to fine tune this algorithm so I was hoping someone might have a solution already in hand since I am hard pressed for time on this research project (synthesizing speech waveforms for psychophysics experiments).

*Aside: The HPS technique mentioned above works by filtering a signal in the frequency or time domain to find the dominant bands that contribute to either a harmonic (time) or percussive (freq) component of the signal.

  • 1
    I'm voting to close this question as off-topic because it is about finding software and so it invites for opinionated answers. – bytebuster Jul 19 '15 at 21:08
  • 1
    ? But the question seems pretty straightforwardly "has anybody created any such software", which isn't a matter of opinion. – user6726 Jul 19 '15 at 21:18
  • My question is simply, despite your opinion of what technique/software is best, is there any algorithm out there that allows accurate separation of consonants and vowels from a speech waveform? The simplest case would be decomposing a 'bIH' syllable into it's respective phonemes. The technique above is the only thing I found close enough to fit my purposes but it leaves a lot to be desired.. – seldamat Jul 20 '15 at 0:00
  • Is this for English? – musicallinguist Jul 20 '15 at 15:40
  • Why don't you consider the inverse and see how speech synthesizers work or more pertinently Vocoders. – ARi Jul 20 '15 at 16:31

I'm pretty sure the short answer for this is:

"there's no algorithm that will always agree with your judgements about what is/isn't a vowel/consonant (cf. glides) and will always agree with your judgements about where said phones start/end in the signal"

BUT, a bit of quick Googling turned up the following, which may be useful if you're familiar with Praat:


  • thanks Fred! this looks like what I'm looking for but I'm going to have to read up on scripting in praat first to figure out if it suits my needs – seldamat Jul 22 '15 at 2:55

If you know beforehand the content of the speech signal but you just don't know which parts of the waveform correspond to which parts of the utterance, then your problem is reduced to an alignment problem--much easier to deal with than a full-fledged speech recognition (plus alignment) problem. You already know what language it is, and you know what consonants and vowels to look out for and the order in which they occur, so you just need to figure out how to align them.

Check out the UPenn Forced Aligner:


They also have a modified web-interface version:


It's not 100% accurate--it needs human correction here and there--but it might at least save you some time.

Your Answer

