我尝试了 TD-PSOLA ( https://github.com/sannawag/TD-PSOLA ) 的这种实现,即使我知道算法是如何工作的,我也不明白为什么我在使用时输出没有听得见的差异f_ratio = 0.5,假设f_ratio = f_new/f_orig。
我尝试在shift_pitch()返回输出后再次使用find_peaks()从原始信号和新信号中打印“峰值”数组的长度(即峰值的总数)。我得到了这些结果:
f_ratio #orig_peaks #new_peaks
1 417 416
0.9 417 389
0.8 417 403
0.7 417 396
0.6 417 324
0.5 417 404
这在我看来完全是胡说八道。
我已经尝试过使用另一个窗口(numpy 的 Hamming,Hanning)。当然,它必须与重叠和添加过程有关......对吗?
任何帮助将不胜感激。