soundtouch变速算法很类似sola算法,细看才知道是wsola算法。

上个星期有个需求,将该变速应用到直播的包处理,有点类似于webrtc的netEQ处理机制。

直接使用soundtouch,会存在一些问题:

1.一段正常,一段变速,中间会出现不连续,有冲击。或者不同速率的切换。

越频繁,现象更明显,有de,de的声响。

2.soundtouch每次处理,会有残余,如果用flush,音质会受到影响,一般到结尾采用该函数。

也就是说输入样本有残余。

3.soundtouch变速的长度不能精确到样本点级别,因为拼接的时候回寻找一个最佳的位置,所以这个是变化的,

最终的变速长度还是可能存在几百毫秒的偏差。

通过一个星期的研究,终于解决了上述三个问题。

不会出现连续,输入样本点一次完全处理,不会有残余,精确输出长度到样本点级。

图一:原始,图二:soundtouch不同速率之间的切换  图三:改进后的效果。

soundtouch变速wsola算法之改进-LMLPHP

soundtouch变速wsola算法之改进-LMLPHP

soundtouch变速wsola算法之改进-LMLPHP

05-11 15:19