根据您的描述,视频中发生的情况如下:
- 计算信号的短期傅里叶变换(又名频谱图)。该操作的输出是一个复数值矩阵,不能表示为图像。因此,提取幅度或幅度的平方以产生转换为像素强度的单个正实值。
- 幅值(像素强度)相乘。
- 乘积的短期傅里叶逆变换是合成的,可能是合成相位(或载波的原始相位)。
这与卷积无关的原因有很多。我相信其他成员会指出更多:
- 相乘的是大小或其平方;但不是傅里叶分析产生的实际复数值。
- 即使相乘的量是实际的复数值,请记住,在处理有限长度的离散信号时,离散傅里叶变换乘积的离散傅里叶逆变换是循环卷积,而不是卷积。
- 仍然......如果你拆分两个信号x和y分成长度为 N 的块,并计算这些块的长度为 N 的成对循环卷积,你会得到与x∗y.
卷积两个音频信号是一个相当无意义的操作。通常将音频信号与系统的脉冲响应进行卷积;当在频域中执行卷积时,细节比 FFT 的成对乘法更棘手(存在一些阻塞问题;+ 必要的重叠添加或保存)。
您所看到的将更准确地描述为光谱交叉合成。这是一个与声码器截然不同的野兽,有一个主要原因。声码器的目标是应用频谱包络调制器到载体上。我强调频谱包络,因为当你使用声码器让一堆锯齿波说“你好”时,你会将原始语音信号的共振峰和整体响度包络应用于锯齿波,但你最不想要的是参与的语音信号的音高信息。声码器的分析滤波器组应设计为提取模块化信号中的各个频谱峰值 - 重要的是粗略的频谱包络 - 凸起(共振峰)的位置。这就是为什么声码器不需要超过 12-30 个通道的原因 - 通道太少,它不会捕获共振峰,通道太多,它开始捕获与音高相关的精细频谱峰值。就像语音识别中使用的功能一样......
让我给你举个例子。假设您有一个 200 Hz f0 的调制器语音信号;以及 1kHz 和 1.5kHz 的共振峰 - 它的频谱是 200Hz、400Hz、600Hz、800Hz、1000Hz、1200Hz、1400Hz、1600Hz、1800Hz 处的一系列窄峰;1000 Hz 和 1400 / 1600 Hz 的峰值被强调(共振峰)。假设您的载波信号是 140 Hz 锯齿波 - 频谱由 140 Hz、280 Hz、420 Hz 的窄峰组成......1/n振幅。如果您使用您在问题中描述的内容(STFT 的产品),您将不会剩下太多,因为这两个光谱几乎没有重叠 - 序列中的第一个公共频率将是 1400 Hz!您想要做的是以某种方式捕获调制器频谱在 1kHz 和 1.5kHz 处有一个凸起,并使用此信息来提升该频率区域中的载波频谱。这就是声码器的工作原理。
为此,如果你真的想走 STFT 路线,一个选择是在进行乘法之前用相当宽的内核平滑调制器频谱 - 这样你真正要做的就是将一个信号的频谱包络应用到另一个。这类似于在 Photoshop 中使用这种愚蠢的图像处理演示在 Y 轴上应用运动模糊......