c - 时域重叠相加如何实现时间拉伸(stretch)?

标签 c signal-processing fft overlap

我正在尝试实现时域重叠相加方法以拉伸(stretch) wav 文件中的数据。但我得到的结果有点令人失望。似乎我做错了什么 以下是我的TDOLA流程:

  • 首先,我从输入信号中获取一 block
  • 然后我将 block 与所选窗口(例如 Hann 窗口)相乘
  • 最后,我将 block 添加到重叠的输出流

这个顺序有问题吗?也许需要在频域进行一些滤波?

最佳答案

尝试使用长度至少是基音周期的一小部分的 block 。您可以猜测源声音文件的平均音调周期,或者运行 DSP/软件音调估计器算法以获得更好的结果。

关于c - 时域重叠相加如何实现时间拉伸(stretch)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6470565/

相关文章:

c++ - OpenCV 傅立叶变换复杂的输出问题

android从mp3获取频率峰值

python - Theano 中的逆 FFT

c - 刷新 linux OS 串行缓冲区

python - Tensorflow 中的 Conv1D 混淆

使用循环但不使用数组来计算税级的 C 程序

python - FFT - 峰峰值、峰值、RMS

r - R中的快速傅立叶变换

c++ - fopen 在 C++ 中使用 char * 出错

c - 如何从不是字节对齐的源复制内存(移位)