??在网文 介绍了一篇文章 MIT 学生 Henderson国际会议论文发表: , 滑音效实现了两段音乐的平滑过渡(portamento)。 在国际数字音效会议上,该论文被评为最佳学生论文奖。
??通常, 在两个信号 f ( t ) , g ( t ) f\left( t \right),g\left( t \right) f(t),g(t) 切换只需要使用插值因子 r ∈ ( 0 , 1 ) r \in \left( {0,1} \right) r∈(0,1) ,两个信号之间的平滑过渡也可以通过线性插值实现。 h ( t ) = r ? f ( t ) ( 1 ? r ) ? g ( t ) h\left( t \right) = r \cdot f\left( t \right) \left( {1 - r} \right) \cdot g\left( t \right) h(t)=r?f(t) (1?r)⋅g(t) 这种切换没有考虑两个信号内部的结构,所以切换过程为一个信号,另一个信号同时 。 如果考虑到信号本身内部的结构,在平滑过渡中保持这些结构对应关系,可以更好揭示出变化过程对应信息。
比如下来是两张人脸照片, 左边是平通的淡入淡出过渡, 右边则是将人脸中主要特征点保持空间一致进行过渡。 两种过渡方式不同。
▲ 图1 两个人脸图像切换
在 MIT 学生 Henderson 论文中, 他们提出了一种对音乐声音进行保持频谱结构的过渡算法, 使得声音过渡产生特有的“滑音”效果。 他们的算法也一改传统的通过音量插值的“淡入淡出”方式完成两个音频转换,而是通过傅里叶变换获得他们频谱结构,并保证在转换过程中频谱结构一致。
具体算法是, 首先将两个音频数据都切成 50ms 长度的数据。 通过傅里叶变换获得每段数据的频谱,然后通过聚类算法将所有的频率汇聚成独立的合成音符。
以上还都是通常音频数据处理过程。 关键步骤在于他们利用了 (Optimal Transport)优化算法获得两个音乐频谱结构之间的对应关系。
▲ 图2 在两个音乐过渡过程中,保持其中频谱对应关系
下面再根据插值参数 r ∈ ( 0 , 1 ) r \in \left( {0,1} \right) r∈(0,1) 确定插值音乐中所有音符对应的频率和幅度,最后再通过傅里叶反变换获得插值后的音频数据。
可以通过一个手动滑柄,或者一个旋转电位器确定两个音乐之间比例参数。这种算法不仅可以在两段不同乐器的音乐之间进行切换,也可以在人声之间,或者人声与乐器之间进行平滑切换。
▲ 图3 两段音乐频谱之间的对应和过渡切换
为了消除切换过程中人为失真痕迹, Henderson 设计了两个关键音频处理算法:
- 提出了一种(Frequency Reassignment)信号处理技术,将声音频谱进行分配成若干频率段,形成单一音符;
- 提出了一种音频相位合成算法将相邻 50ms 音频段进行平滑合成,避免窗口之间相互影响。
基于这种算法, Henderson 希望能够进一步改进, 实现音乐中的 (legato)效果,即在不同音符之间进行光滑变换,达到一些经典音乐演奏效果。
如果大家感兴趣,可以参见后面他们的论文。
- Algorithm Uses Math to Blend Musical Notes Seamlessly [Video]
- AUDIO TRANSPORT: A GENERALIZED PORTAMENTO VIA OPTIMAL TRANSPORT
- 最优运输
- 图1 两个人脸图像切换
- 图2 在两个音乐过渡过程中,保持其中频谱对应关系
- 图3 两段音乐频谱之间的对应和过渡切换