什么样的音频数学模型可以使(音色复杂的)复音中单个音符的音高变化成为可能?

信息处理 频率
2021-12-18 23:29:18

我的问题是:什么样的复音数学模型可以使复音原声乐器的多声道单声道录音中单个音符的变化(即音高变化)成为可能?通过“在复音音频中更改音符”,我的意思是使用celeony 的 Melodyne 软件中所谓的“直接音符访问”功能来编辑声音。

根据维基百科,Melodyne 用来模拟在声学(因此音色复杂)乐器上播放的单行旋律的音频信号类似于 Henning Thielemann 在他的题为“解开单声道声音中的相位和时间”的论文中所描述的那样,但是,我找不到任何关于和弦乐器音频信号模型的参考;根据Peter Neubacker在 Youtube 上的采访(转录如下),Melodyne 处理和弦音频编辑的功能需要一种不同于 Thielemann 描述的方法。

来自另一个 youtube 剪辑的一条线索是,Neubacker 的模型仅适用于一种乐器的录音(即只有钢琴、只有吉他、只有弦乐、只有风等)。另一个线索是另一个剪辑,它不仅可以改变音符的音高,还可以改变它的(开始和结束)时间。


以下是 youtube 视频的文字记录,其中提到“复调材料需要不同的方法”(如果您从 22:00 开始没有时间观看)。

  • Melodyne 产生的问题是:我怎样才能从像这样的 3 维形式中获得声音 [手拿石头做手势]?通过哪种方式,声音可以摆脱对连续时间的依赖?这个雕塑实际上是从中产生的……它是一块塑料……这直接来自音乐数据。这个对象是[在琵琶上弹奏一个音符]这个音符。从左到右,最好将其可视化。时间朝这个方向流逝[从左到右打手势]。这就是幅度[用手指对着拇指做大大小小的手势]。如果我转动它,它……代表了这个声音在任何给定情况下的音色。在这里你可以很清楚地看到一个结构[指向雕塑底部的横截面],有点三角形;那是因为在这个声音中,

    由于 Melodyne 还不存在,而我只是在尝试将声音转换为这种形状,因此我为这个声音工作了将近一年。...我从里到外都知道这个声音。这也很好地说明了本地声音。我可以,不仅可以播放声音[点击鼠标],还可以输入任意点的声音,并随心所欲地缓慢或快速地移动。我什至可以在声音中流连忘返,或者前后移动,所以如果我检查这里的一个地方……绕过它。...十年前它是新的。

    最近添加了 dna(直接注释访问)。有了它,我还可以编辑和弦音乐。换句话说,我可以单独编辑同时发声的音符,例如吉他录音。如果我现在弹奏一个小和弦 [选择 Poly -> 屏幕上的单独音符],我们会在这里看到我刚刚弹奏的 3 个音符作为单独的实体。让我们再听一遍[电脑播放小和弦]。而现在,好像通过将手指移到更高的品格,我可以提高这个音符[将屏幕上的一个音符向上拖动;电脑演奏大和弦]。对于分割的音频,我可以隔离这个音符,现在可以随意上下移动,到任何我喜欢的音高。

    为什么以前没有人能够以这种方式分离复杂材料中的单个音调?老实说,我不知道。在科学中,自然的趋势是从简单的东西开始,例如正弦波或单个音符,然后首先分析它,然后才发现当材料变得更复杂或必须整体处理时,系统不起作用。我的方法不同。我实际上从复杂信号开始,只有当我想详细检查某些东西时,我才会回到更简单的信号,但首先,我必须对现实中实际发生的事情有一个整体印象。

    难道秘密就在这卷里?呵呵,这实际上是一个厕所卷。石头最初提出的问题是如何将给定的声音转化为三维形式。在这里,我将声音的个体采样值排列成螺旋形,这里用一二三等表示。事实证明,如果你在点之间插值[在螺旋上做手势],就会出现一个景观,它也代表了声音中的各个横截面[手势雕塑的横截面]。

    卷子几岁了?12年。所以这个想法是 Melodyne 的源泉,在我们今天所看到的一切中......?是的,但是这种将声音盘绕起来的方式将不再用于复音材料,这需要一种不同的方法。

3个回答

TL;博士?谐波部分分离的谷歌学术


一个好的起点是正弦建模技术,将信号分离为正弦+噪声(确定性和随机)分量。由正弦组成的确定性分量可以令人信服地重新合成:

http://mtg.upf.edu/files/projectsweb/sms-piano-original.wav

http://mtg.upf.edu/files/projectsweb/sms-piano-deterministic.wav

从信号中减去正弦,并保留噪声/随机部分。

http://mtg.upf.edu/files/projectsweb/sms-piano-stochastic.wav

随机部分是通过一些噪声整形滤波器合成的。其他一些人已将其扩展到正弦+噪声+瞬态模型,这有助于在时间拉伸中保留瞬态随机特征。

https://ccrma.stanford.edu/~jos/sasp/Sines_Noise_Modeling.html

http://mtg.upf.edu/technologies/sms

一旦你有了一个信号的正弦参数,就可以通过寻找谐波比率和按起始分组等来分离重叠音符的正弦波。部分跟踪在谷歌学术上出现了很多结果。

http://recherche.ircam.fr/equipes/analysis-synthese/lagrange/research/papers/lagrangeIcassp05.pdf

http://dream.cs.bath.ac.uk/software/sndan/mqan.html

隐马尔可夫模型多项式Macaulay-Quatieri是其中的一些方法。我很难将随机剩菜分成两个音符。我不知道 Melodyne 是如何解决这个问题的。

melodyne 中使用的方法需要 2 个独立的频域操作。首先,复音转录技术用于将复音音频的频率分量(来自标准频率变换)分组到音符激活中。换句话说,根据最可能的音符激活对谐波子集进行分组。有关参考和数学模型,请参阅我在此论坛上对“逆复音和弦识别”帖子的回复。

第二个操作是上面提取的谐波子集的频域音高移位。我不确定,但我几乎可以保证 Melodyne 使用相位声码器方法来实现这一点。您也可以使用这种技术进行时间拉伸我们在 Riffstation 中使用了与这些类似的技术,并且效果很好。

一种可能性可能是使用统计模式匹配方法进行分析/重新综合。如果您知道或可以合理猜测所涉及的乐器组合,并且有模板(包括初始瞬态、频谱加频谱演变等)用于所有预期音符的乐器声音,您可以尝试对大量健全的和弦进行统计匹配组合使用模板声音模式来估计最可能的复音组合。这很可能是对全局最小值的计算密集型搜索,其中各种类似“AI”的搜索技术可能很有用。然后,您可以采用各种单独的和弦概率,然后使用决策理论及时选择最可能的复音序列。

然后记下估计的音符并以您选择的键音和持续时间重新合成它们。