I've been playing around with playback rate (time stretching) using Librosa in Python. The time stretch implementation there sees to consist of a stft, followed by a vocoder time stretch and then an inverse stft. Out of the box it works pretty poorly for speech, but by tuning the window size I can get better results.
Despite improvements I don't seem to be able to match the quality that I get when playing Youtube videos at high speed (or any other HTML 5 players for that matter). I'm getting a tradeoff between temporal resolution and frequency domain resolution (which seems expected). I've toyed around with creating low frequency versions using larger windows and merging them with high frequency versions using narrower windows, which seems to preserve temporal resolution in the high frequency bands, while improving the richness of low frequency sound, giving a more natural tambre to the audio.
What I'd like to know is how common web players achieve such high fidelity when playing back at high speed. Are there commonly accepted best practices here?