Implements the algorithm described in the paper by Werner VERHELST and Marc ROELANDS "AN OVERLAP-ADD TECHNIQUE BASED ON WAVEFORM SIMILARITY (WSOLA)
FOR HIGH QUALITY TIME-SCALE MODIFICATION OF SPEECH"
* Recursive for scale factors too large or too small for a single pass.
* Implements both cross-correlation and AMDF similarity
Nice to have a decent reference to back this up.
As far as I can tell at the moment, the code itself seems fine, so thanks for your efforts.
However, it's be difficult to use this out of the box for a general application - it's really just a case of needing a tidy up to become a very useful and generally applicable function, though.
I have two main issues:
1. lack of documentation - inputs are only roughly described rather than defined, no syntax, no help examples, no versioning etc etc.
2. I'm concerned about lack of generality caused by use of hard coded constants. Especially things like win_time, overlap_ratio, max_err which depend on programmer defined constants that I'm fairly sure require tuning for different applications. The fact that these aren't well defined in the comments doesn't make it that easy to infer the impact these values have without decent understanding of the method.
Example (admittedly a little extreme): I'm using this method to resample a time series of data sampled at 1Hz. A hanning window size of 0.02s isn't appropriate so I'm having to rewrite the input parsing totally.
Added recursion, amdf and a screenshot