相位声码器

相位声码器一种以傅立叶转换为基础的频率处理工具，广泛应用于音讯信号的时间伸缩（time-stretching）与音高转换（pitch-shifting）等领域。为声码器算法的一种，使用相位声码器策略还可以实现许多其他特殊效果。

## 简介

相位声码器会将input讯号分解成各个区块，并对各个区块进行短时距傅立叶变换（STFT），得到音频的讯息，例如：强度（amplitude），和相位（phase）。由于每个声音都是由不同频率的许多谐波部分组成的，因此可以使用该资讯来猜测在该分析帧中播放或唱出的音符。在所需的频谱变化之后，透过反向快速傅立叶转换（inverse FFT）处理重新合成，将每个段返回到时间域。然后将修改后的段落相加。

## 短时距傅立叶转换（STFT）

### 原理

相位声码器第一个核心机制就是STFT，本身为一种傅立叶转换（Fourier Transform）的变形，分析非平稳讯号（非恒定频率），核心概念为将input讯号拆成各种短段，然后再对每一段进行快速傅立叶转换。又称加窗傅立叶转换（Windowed Fourier Transform）。用于描绘频域与时域的变化，是频谱分析重要的工具。在基于软件定义无线电（SDR）的频谱显示中常用的。覆盖 SDR 整个范围的全带宽显示器通常在台式电脑上使用具有 2^24 点的快速傅立叶变换（FFT）。

### 数学公式

#### 连续STFT

在连续时间情况下，要变换的函数乘以一个仅在短时间内非零，它的数学公式基本形式为以下式子：

$$\mathbf{STFT}\{x(t)\}(\tau,\omega) \equiv X(\tau, \omega) = \int_{-\infty}^{\infty} x(t) w(t-\tau) e^{-i \omega t} \, d t$$

$x(\tau)$为原始讯号；$\omega$($\tau$−t)为窗函数（Window Function），集中在 t 附近，通常为高斯窗函数或汉窗函数；$\omega$为频率变数；$X(\tau, \omega)$为一个表示讯号随时间和频率变化的相位和振幅的复函数。通常沿时间轴或两个轴进行相位展开，τ和频率轴，$\omega$，以抑制STFT 相位结果的任何跳跃不连续性。

这个式子其实就是Convulution的样子，而这个公式等价于

$$F[x(\tau) \centerdot \omega(\tau-t) ] (\omega)$$

窗函数的选择会影响其结果，如果窗函数是Rectangular，时间会比较集中，但会有leakage；如果是Hamming或是Gaussian，整体能量会比较集中，且比较平滑。

#### 离散STFT

然而在大多数情况下，你不会处理连续讯号。在离散的时间下，要转换的资料分解成区块，每一段进行傅立叶转换，它的数学公式基本形式为以下式子：

$$\mathbf{STFT}\{x[n]\}(m,\omega)\equiv X(m,\omega) = \sum_{n=0}^{N-1} x[n]w[n-m]e^{-i \omega n}$$

$m$为第几个窗口位置。对每个m乘上窗函数，再做DFT。

### 限制

#### 海森堡不确定性原理

对于任意函数$x(t)$，时间域与频率域的能量集中程度不能同时任意小：

$$\Delta t \cdot \Delta \omega \geq {1 \over 2}$$

意思是无法同时获得非常精细的时间和非常精细的频率资讯，换句话说，STFT本质上是折衷，当窗越短，时间分辨率高，但频率模糊；相反地，当窗越长，频率分辨率高，但时间模糊。这也是后来产生 Wavelet Transform 或 Wigner-Ville 分布 等替代方法的原因。

### 用途

STFT应用在很多领域，如果是语音和音乐领域，有应用在语音辨识及乐谱分析，分析一首乐曲里的和声进行和音高变化；在医学方面则是脑电图（EEG）的分析和心电图（ECG）的噪声过滤；在工程方面，机器有时出现间歇性振动或轴承故障，而STFT 可追踪这些不稳定震动频率，做出预警或自动维修建议。

## 相位展开（Phase Unwrapping）

另外一个机制是相位重建，在许多讯号处理领域中（例如雷达、光学干涉仪、MRI 或合成孔径雷达 SAR），测量的相位常常是被包裹的（wrapped）。换句话说，所量得的相位值仅限于$(- \pi , \pi]$或$[0 , 2 \pi)$，这会导致一个问题：原始讯号的连续相位会出现跳跃（phase jumps），因为超出区间的部分被模$2 \pi$回到范围内。

### 常见解法

常见主要有三种：第一个为积分法（Path-following / Integration），按空间或时间顺序比对相位差异，当差异超过 $\pi$ 就加减 $2 \pi$ 修正；第二个为最小平方法，用最佳化的方式找出最平滑的相位曲面；第三个为品质指标引导，根据相位变化平滑程度的“可信度”来选择展开顺序。

### 基础数学定义

假设空间或时间中的真实连续相位为 $\phi(n)$，而测量仪器或反正切函数（Arctangent）计算所得到的包裹相位为 $\psi(n)$。两者之间的数学关系可以表示为：

$$\psi(n) = \mathcal{W}\{\phi(n)\} = \phi(n) + 2\pi k(n)$$

其中，$\mathcal{W}\{\cdot\}$ 代表相位包裹算子（Wrapping operator），$k(n)$ 为未知的整数阵列，代表在该取样点被折叠的 $2\pi$ 周期数。相位展开的最终目标，便是从已知的 $\psi(n)$ 中解算出场域中每一个点的 $k(n)$，进而还原出真实的 $\phi(n)$。

### 一维相位展开与伊藤条件（Itoh's Condition）

在一维离散讯号中，最基础的相位展开实作依赖于计算相邻取样点之间的相位差（Phase gradient）。根据伊藤条件（Itoh's Condition），若真实讯号的取样频率足够高（符合奈奎斯特-香农采样定理），使得相邻两点的真实相位变化量绝对值小于 $\pi$：

$$|\phi(n) - \phi(n-1)| < \pi$$

则真实的相位差可以用包裹相位的差值经过包裹算子运算后来精确求得：

$$\Delta\phi(n) = \mathcal{W}\{\psi(n) - \psi(n-1)\}$$

基于此条件，一维连续相位可透过对上述相位差进行离散积分（累加）来重建：

$$\phi(n) = \phi(0) + \sum_{i=1}^{n} \mathcal{W}\{\psi(i) - \psi(i-1)\}$$

其中 $\phi(0)$ 为起始点的参考相位。

### 二维相位展开实作逻辑

在如定量相位成像（QPI）等二维影像处理中，讯号为一个二维矩阵 $\psi(x,y)$。二维相位展开比一维复杂许多，因为真实影像中常含有噪声或相位奇异点（Phase singularities / Residues），导致沿着不同路径进行一维积分会得到不同的结果。目前的二维实作算法主要分为两大数学流派：

此类算法依赖于辨识影像中的奇异点（即沿着 $2 \times 2$ 像素闭回路计算相位差总和不为零的点）。透过设置“分支切割线（Branch cuts）”（如 Goldstein 算法）来连接这些奇异点，并强制积分路径避开这些切割线，从而保证空间积分的唯一性。

将相位展开视为一个最佳化问题。其目标是寻找一个连续相位矩阵 $\phi(x,y)$，使其在 $x$ 与 $y$ 方向上的偏微分（离散梯度），尽可能逼近包裹相位 $\psi(x,y)$ 所计算出的包裹梯度。这可以透过最小化以下目标函数（Objective function）来实现：

$$J(\phi) = \sum_{x}\sum_{y} \left( [\nabla_x \phi - \mathcal{W}\{\nabla_x \psi\}]^2 + [\nabla_y \phi - \mathcal{W}\{\nabla_y \psi\}]^2 \right)$$

对此函数求变分极值，可推导出二维离散卜瓦松方程式（Poisson Equation）：

$$\nabla^2 \phi(x,y) = \rho(x,y)$$

其中 $\nabla^2$ 为离散拉普拉斯算子（Discrete Laplacian），而 $\rho(x,y)$ 为由包裹相位计算出的广义相位二阶导数。在实作上，这个偏微分方程式可透过二维离散余弦变换（2D DCT）或快速傅立叶变换（FFT）在频域中以 $O(N \log N)$ 的高运算效率获得全域最佳解，是现代高分辨率光学影像最常用的展开手段之一。

## 时间拉伸（Time-Stretch）

指在不改变音调的情况下，对音讯档案进行处理，使其播放速度变慢或变快的过程。时间拉伸在音乐制作中用于调整循环或样本的节奏，或将人声或样本融入不同节奏的项目中。

当我们要拉长讯号（如两倍慢放），我们会使用一个比原始 hop size 更小的合成 hop size $H_s$。假设伸长倍率为 $r = {H_s \over H_a}$，例如$r = 2$代表要伸长一倍的时间

当两个预先录制的片段无法重新播放或重新取样时，这些处理通常用于匹配它们的音高和节奏，以便进行混音。时间拉伸通常用于调整广播广告和电视广告的音频，使其恰好适合30秒或60秒的时长。它也可以用于将较长的素材调整到指定的时间段，例如1小时的广播节目。