本文翻译自Jonathan Driedger和Meinard Müller的经典文章《A Review of Time-Scale Modification of Music Signals》,受个人水平所限未能精确传达原文内容,建议优先查阅原文。
摘要:时域压扩(Time-scale modification,TSM)用于加速或减慢音频信号的播放速度而不改变它的音调。在数字音乐制作中,TSM已经成为不可或缺的工具,被广泛集成在各类音乐制作软件中。音乐信号成分复杂,包含和声、敲击、瞬态等成分。由于声音与音乐特征过于广泛,并不存在一种TSM方法能对所有类型的音频信号都有良好的效果。本文的主要目标是让大家更好的理解TSM方法的能力和限制。为达到此目的,我们将回顾基础的TSM方法,讨论典型的挑战,并指出由多种策略组成的潜在解决方案。另外我们会讨论一种由和声-打击声(harmonic-percussive)分离、时域TSM、频域TSM融合而成的方法。
1. 引言
TSM用于拉伸或压缩给定音频信号的时长。理想情况下,TSM处理后的音频信号速度改变,但音调和音色不变。TSM被应用于各种场景,譬如简化了音乐混音的创作过程。音乐创作者或DJ利用TSM调整音乐时长以实现同步。现在TSM会被集成在音乐制作软件和硬件设备中。TSM的另一类应用场景是视频剪辑中调整音频流时长,譬如生成慢镜头视频时,通常需要放慢对应音频的节拍,这类场景中TSM可以用来实现音频素材与视频画面的同步。
TSM面临的主要挑战是音乐信号由各种声音混音而成,譬如小提琴搭配响板演奏的录音,对这种信号进行TSM处理时,既希望保留小提琴的和声,又希望保留响板的打击声。为还原小提琴的声音,需要保留它的音高和音色。另一方面,响板的音高并不重要,重要的是保留每次敲击的清脆响声和敲击的相对时间,从而保留它的节奏。保留这些截然不同的音频特性往往需要不同的TSM方法。譬如经典的基于波形相似叠加(WSOLA)或相位声码器(PV-TSM)的TSM方法可以很好地保留和声信号,但处理打击乐时会引入明显的失真。这些失真可以通过融合不同的TSM方法得到缓解,譬如先将给定的音频裁成和声片段和打击乐片段并用不同的TSM方法处理,然后再拼接得到最终输出的信号。
本文首先回顾经典的TSM方法并讨论它们的优缺点,以此加深对TSM算法和它所面临的挑战的理解;然后指出这些经典方法的关键缺陷,并通过例子展示如何结合不同的算法来改进效果。本文先介绍被多种TSM方法引用的基础TSM策略(第2节)并讨论一种基于重叠相加(overlap-add,第3节)的简单TSM方法。然后我们回顾两种概念迥异的TSM方法:时域的WSOLA(第4节)和频域的PV-TSM(第5节)。接着我们分析一种结合了和声-打击声分离技术(第6节)从而提升WSOLA与PV-TSM效果的先进TSM方法。最后我们指出TSM的应用场景(譬如音乐同步与变调)并介绍一些可免费获取的TSM实现(第7节)。
2. TSM基础
如上文所述,TSM的关键需求是调整给定音频的时长而不改变音调。为达此目的,许多TSM方法都会遵循如下图1所示的策略。其关键思想是将输入信号分离成若干帧,这些帧长度相同,一般为50~100ms,每帧包含信号的音调信息。然后在时间轴上对这些帧进行重排,从而调整音频的时长而不改变音调。
该过程可以更精确地表述如下:TSM的输入信号为离散的时域信号,以采样率等间隔采样。音频信号一般长度有限,长度为个采样点, 对于,, 为简单起见,我们将它定义为无限长度信号,当时,。TSM处理的第一步是将分离成多个短时分析帧,每个短时分析帧长度为N个采样点。帧间隔由分析间隔(Analysis hopsize)决定:
在第二步中,这些帧在时间轴上按合成间隔(synthesis hopsize)重排。重排操作将导致输入信号的长度按的比例伸缩。重排操作中帧与帧重叠的比例一般是固定,因此往往也是固定的(常见取值为),由与决定,即。然而简单的重排操作往往会引入失真,譬如帧边界上的相位不连续或幅度波动。因此在重建信号前,分析帧会经过适当的调整以形成合成帧。最后一步是将合成帧重排以得到TSM的输出信号:
尽管该策略看起来简单易懂,但其中有不少陷阱和设计选择会强烈影响TSM输出信号的感知质量。其中最显而易见的问题是如何调整分析帧以形成合成帧,该问题的不同处理思路得出不同的TSM方法,下面将介绍其中的几种方法。
3. 基于重叠相加(OLA)的TSM
3.1. 处理过程
在上一节描述的处理过程中,最简单的方法是定义合成帧与分析帧相等,不对分析帧作任何处理。该方法会导致图2所示的两个问题。问题1:用公式(2)重建信号得到的波形在帧边界处不连续,这会引起可感知的咔嗒声。问题2:一般会选择大小让合成帧发生重叠,重叠部分会引起幅度的增加。
一个基本的TSM方法应该确保拼接处平滑过渡,且抑制幅度波动。重叠相加(OLA)的TSM方法在重建输出信号前对分析帧应用窗函数。窗函数的目的是移除分析帧边缘的波形不连续,的典型选择是汉宁窗
汉宁窗有一个很好的属性
图3展示了这种迭代的OLA过程。对于帧索引,我们首先利用公式1计算出第个分析帧(图3a)。然后通过以下公式计算出合成帧
公式5的分子由分析帧与窗函数逐点相乘得到,分母通过将重叠的窗函数相加对分析帧规范化,从而避免输出信号幅度波动。值得一提的是当选择汉宁窗且,根据公式4可知分母一直是1。这就是图3b展示的例子,合成帧的幅度在加到输出信号前不会被调整。处理到下一个分析帧时(图3c),该分析帧也被加窗,与上一个合成帧重叠相加,得到输出信号(图3d)。图3展示了对信号压缩的情况(),拉伸信号()原理与此相同。在拉伸的场景下,分析帧重叠的部分比合成帧多。
OLA是时域TSM方法的例子,它对分析帧的修改作用在时域。一般而言,时域TSM方法不仅高效,而且能很好地保留输入信号的音色,而缺点则是输出信号包含各种失真,接下来我们介绍这些失真。
3.2. 失真
OLA方法无法保留输入信号的周期性结构。如图4所示,周期性输入信号按的系数用OLA方法拉伸。重排分析帧时,的周期性结构在分析帧上不再保持对齐。结果输出信号上的周期结构已经发生畸变。这些畸变也被称作相位跳变失真(phase jump artifacts)。由于输入信号的周期性波形对应和声(harmonic sounds),OLA并不适合用于修改包含谐波成分的信号,当OLA作用于这类信号,输出信号会包含一种独特的颤音。因为音乐信号总会包含若干谐波源(如歌声、钢琴、小提琴、吉他),OLA通常并不适合用来修改音乐信号。
3.3. 处理技巧
OLA并不适合用于修改包含谐波内容的音频信号,但它能很好地还原鼓或响板产生的敲击信号。这是因为敲击信号几乎没有周期性结构,因此输出信号中由OLA引起的相位跳变失真难以被察觉。该场景下,选择小的帧长(大约10ms)从而降低transient重复失真的影响很重要,这种失真我们将在4.2小节详细介绍。
4. 基于波形相似重叠相加(WSOLA)的TSM
4.1. 处理过程
OLA的一个问题是它缺乏对信号的感知:加窗的分析帧从输入信号的固定位置拷贝到输出信号的固定位置。换句话说,输入信号并不影响处理过程。一种时域上减小OLA引起的相位跳变失真影响的策略是在TSM处理过程中允许分析帧或合成帧位置适当偏移从而引入一些灵活性。其主要思想是调整连续的合成帧的位置以保证每帧时域波形的周期性结构在重叠部分是连续的,因此输入信号中的周期性结构得以保留到输出信号中。许多该思想的变种在文献中被描述,如同步OLA(SOLA),时域音高同步(*time-domain pitch-synchronized *)OLA,以及一些基于自相关的方法。
另一种著名的方法叫基于波形相似重叠相加法(waveform similarity-based OLA, WSOLA)。该方法的主要思想是允许分析帧位置进行轻微偏移(不超过个采样点)。图5展示了WSOLA的主要原理。与OLA类似,WSOLA以迭代方式处理。假设第次迭代中分析帧的位置偏移了个采样点。我们将调整后的分析帧称作(图5a):
和OLA一样,调整后的分析帧加窗并拷贝到输出信号(图5a)。现在我们需要调整下一个分析帧的位置。该任务可看作约束最优化问题。我们的目标是找到最佳偏移索引,让调整后的分析帧的周期性结构与上一个合成帧的周期性结构在以为分析步长产生的重叠区域上尽可能对齐。在无约束场景下,调整后的分析帧的最佳选择是调整后的分析帧的后续帧((图5b中的蓝色虚线矩形框)):
此时调整后的分析帧和合成帧是相同的,因此后续帧和分析帧按分析间隔叠加时其结构也是完美对齐的(图5b)。然而由于条件的约束,调整后的分析帧必须位于扩展帧区域(图5b的蓝色实线矩形框)内:
因此,在区域中找到波形和最相似的帧就是调整后的分析帧。为达到此目的,我们需要一种方法衡量帧与帧的相似性。一种可能的衡量标准是互相关
其中信号和信号偏移了个采样点。通过最大化和的互相关,我们可以算出最佳偏移索引
偏移索引定义了调整后的分析帧位于扩展帧区域(图5c)。与OLA类似,最后我们通过以下公式算出合成帧
再利用公式2即可重建输出信号(图5d)。在实践中,我们在帧索引处开始最优迭代处理,并假设。
4.2. 失真
如图6(WSOLA)和图4(OLA)所示,WSOLA能改善OLA的一些缺陷,但它仍然会引入时域TSM导致的典型失真。
类WSOLA方法的一个显著问题被称作transient重复或stuttering(口吃)。该失真如图7所示,我们可以看到输入信号的一个transient(瞬态变化)位于两个连续分析帧和的重叠区域内。当这些帧被拷贝并重排到输出信号,transient重复出现,我们将听到两个连续的transient信号。一个相关的失真叫transient丢失,指由于没有分析帧包含该transient,该transient经过处理后丢失。拉伸信号()时容易出现transient重复,而transient丢失一般出现在压缩信号()时。该失真在修改包含打击成分的信号时(如鼓、钢琴等乐器的录音)容易出现。
另外,使用WSOLA修改复调(polyphonic)的输入信号时(如管弦乐)常常会引入颤音。这是因为WSOLA从设计上就只能保留输入波形中最明显的周期性结构,当修改包含多个谐波声源的信号时,只有占主导地位的声源被保留下来,其余的声源则会引起相位跳变失真。因此WSOLA适合修改单声调的信号,而不适合修改更复杂的信号。
4.3. 处理技巧
为了确保WSOLA能适应输入波形中最显著的周期性结构,一帧至少包含完整的一个周期。另外需要足够大以支持适当的偏移,因此它至少是周期长度的一半。假设人耳能听到的最低频率为20Hz,一个常见的帧长的选择是50ms,为25ms。
减少WSOLA的transient重复和transient丢失失真的一种方法是应用transient保留策略。其主要思想是先检测出transient的位置,用WSOLA处理transient附近的信号时将分析间隔和合成间隔暂时设置成一样,这样transient及其附近的信号会被不加修改地拷贝到输出信号,从而避免transient重复和transient丢失失真。