soundtouch變速算法很類似sola算法,細看才知道是wsola算法。
上個星期有個需求,將該變速應用到直播的包處理,有點類似於webrtc的netEQ處理機制。
直接使用soundtouch,會存在一些問題:
1.一段正常,一段變速,中間會出現不連續,有沖擊。或者不同速率的切換。
越頻繁,現象更明顯,有de,de的聲響。
2.soundtouch每次處理,會有殘余,如果用flush,音質會受到影響,一般到結尾采用該函數。
也就是說輸入樣本有殘余。
3.soundtouch變速的長度不能精確到樣本點級別,因為拼接的時候回尋找一個最佳的位置,所以這個是變化的,
最終的變速長度還是可能存在幾百毫秒的偏差。
通過一個星期的研究,終於解決了上述三個問題。
不會出現連續,輸入樣本點一次完全處理,不會有殘余,精確輸出長度到樣本點級。
圖一:原始,圖二:soundtouch不同速率之間的切換 圖三:改進后的效果。