相位声码器

维基百科,自由的百科全书

相位声码器声码器的一种,它借由改变声音讯号的相位资讯,而达到音讯时域与频域上的延展。时域与频域的延展分别对应到此音讯在时间上的缩放(速度快慢改变),与声音音高的改变。

原理[编辑]

相位声码器的与传统声码器最主要的差别在于:不同于传统声码器将音讯切割成多个频带,相位声码器是使用短时距傅立叶变换(STFT),得到不只各频格(frequency bin)的强度(ampiltude),也得到相位(phase)的资讯。此技术之所以被称为“相角”音码器,是因为我们把声音讯号转为频谱之后, 并非只是单纯地在强度频谱上,时间或者频率的维度内插,还必须考虑相角与频率的关系,并在相角频谱上进行相对应的调整。相位声码器将特定频率分量的振幅或相位修改后,透过反向短时傅立叶转换(inverse STFT)将频谱还原成时域的音讯。若改变STFT音框在时间上的位置,可以改变重新合成的声音的时间演变。

STFT的物理意义[编辑]

振幅[编辑]

由于傅立叶转换的物理意义,是将一段讯号表示为许多正弦波成分(sinusoid component)之叠加,现假设讯号的取样率(sampling rate)为R,则Xm[k]可视为在第m个音框之中,频率落在R⋅ k 附近的正弦波成分;而Xm[k]的强度就是这个正弦N波成分的振幅(amplitude),它的平方就是这个正弦波成分的能量(energy)大小。然而根据讯号处理的原理,若讯号的取样率为R,至多只能观察到频率为 R/2,也就是小于或等于奈奎斯特频率(Nyquist frequency)的正弦波成分。 因此经由短时间傅立叶转换得到的频谱,实际上只有前(N/2 +1)个元素是有效的,之后的元素皆对称于第 ( N /2+1) 个元素,与之前的元素为共轭复数对(complex conjugate pairs)。

相位[编辑]

至于频谱中的另一个成分: 相角,其物理意义则与正弦波成分的“瞬时频率”(instantaneous frequency)有关。 考虑两个相邻音框中,同样位于第 k 个频道(frequency channel)的频谱元素:X(m,k)以及 X(m−1,k)。这两个元素的相角差(phase difference)除以音框平移时间量 Δt ,计算第 m 个音框的第 k 个频率箱中,正弦波成分的角速度ω(m,k) :

ω(m,k) =2π⋅f(m,k)

=Δθ/Δt

= (∠X(m,k)−∠X(m−1,k))/Δt

其中Δθ ≥0, f(m,k) 即为瞬时频率。

从另一个方向来说,此正弦波成分之所以落在第 k 个频道中,就是因为它的频率位于此频道所代表的频率值范围之内。它的频率可以表示为此频道的中心频率 f(k) ,加上一个极小的频率值:

f(m,k) = f(k) + δ(m,k)/Δt

其中 f(k)= R⋅k/N , δ(m,k) 是一个极小的相角改变量。


利用频谱上相邻音框的第 k 个频率箱成分之相角差,可以计算此正弦波成分之瞬时频率。但在实际情况中,相角只会落在一个 2π 的区间之内,因而无法得知真实的相角差。利用上式将相角差分为两项,一项是落在此频率箱的正弦波必然具有之相角改变量,另一项则记录了漏未计算的相角改变量:

∠X(m,k)−∠X(m−1,k)= 2πk ⋅Δn/N+δ(m,k)

其中 Δn = Δt ⋅ R 是音框平移的取样值数目。

因此 ( 2π k/N ⋅ Δn) 代表的是一个频率为 f(k)= R⋅k/N 的正弦波,在经过时间 Δt 之后的相角改变量。 之后将δ(m,k)加上或减去2π,直到0≤δ(m,k)<2π,并重新加上2πk⋅Δn。如此一来就可以得到一个大于 0 的相角差值。

以上的步驟稱為「相位重建」(phase unwrapping)。

注意到如果δ(m,k)在讯号中真实的相角变化超过 2π,会使得相位重建无法实行。 因此必须限制时间框的平移量。

相位连贯性问题[编辑]

在操纵短时傅里叶变换的时,会遇到的一大问题,是各个信号分量(正弦信号,脉冲)将分散在多个时间框,以及频谱的多个频格。这是因为STFT分析是通过使用重叠分析窗函数。 如果考虑的是离散的时间轴,则我们对一离散讯号 x[n] 进行短时间傅立叶转换,可表示为:

X(η,ω)= ∑x[n]w[n−η]exp(−jωn) for n= -∞ to ∞

其中 n 跟η 为离散时间索引(discrete time index),ω 为频率索引,w[n] 为离散窗函数。

经过窗函数的讯号使得单个正弦分量的信息分布在相邻的时间框中。为了避免边界效应,短时傅里叶分析的时间框会有时间上的重叠。这样的重叠使相邻的时间框有强烈的相关性(一个存在于时间“t”时间框中的正弦成分,在时间"t+1"中也会存在)。因此相位声码器的信号转换问题涉及到相位连贯性的问题,也就是在做短时傅里叶与反向短时傅里叶后,相邻的频格应仍要保有适当的连贯性(纵向的连贯性);而相邻的时间框也会要保有适当的连贯性(横向连贯性)。除极其简单的声音合成外,这些连贯性只能大概的被保留,而相位声码器的研究的主要关心便是找出适当的演算法,足以保存修改后的短时间傅立叶分析表示的垂直和水平的连贯性。时间缩放操作幅度的连贯性是一个较次要的问题,因为改变时间框在振幅上只有微小的影响。


历史[编辑]

相位声码器的演算法最初于1966年由Flanagan提出,可保存频格相位水平水平的连贯性。这种原始相位声码器没有顾及相邻频格之间的纵向的连贯性,因此这个系统做的时间缩放得到的声音信号不清晰。

在 1981 年,波氏(Michael R. Portnoff)首先提出利用短时间傅立叶转换 ,将声音转入频域,并在不影响音高的前提之 下调整速度,亦即时间量度调整(time-scale modification);之后在 1982 年,齐氏(Stephanie Seneff)同样提出利用短时间傅立叶转换,并导入音源—滤波器分解 (source-filter decomposition)的观念,在不改变速度的前提之下,调整声音档案的音高,亦即音高平移(pitch shifting)。将这两项技术结合,便是所谓“相角音码器” 的雏形。

Griffin 和Lim在1984年提出将短时傅立叶转换后的声音讯号最佳化重建的演算法。此演算法不考虑连贯性的问题,但它能找到一个拥有与修改过后类似的短时傅立叶转换的声音信号;即便修改后的短时傅里叶转换是不连贯的(不代表任何信号)。 纵向的连贯性的问题,直到1999年仍然是一个重大的问题,直到Laroche和Dolson提出了一个相当简单的手段来保持频格的相位连贯性。Laroche和Dolson的发现造成相位声码器历史的一个转折点。有了垂直相位的连贯性,声音讯号可以得到很高品质的时间缩放。

音乐[编辑]

如今相位声码器的技术被包装成编曲工具auto-tune,被广泛运用在流行音乐当中,不仅可以透过时间缩放达到调整音乐节拍的效果;还可以借由音高的微调,将音讯量化到指定的音高,达到修正走音的功能,也可以将人声转换成类似机器人的声音,或是高频类似花栗鼠的声线。