编程声码器


11

我想对自己的声码合成器(如“ Songify”)进行编程,但找不到简单的声码器算法。也许您可以解释或告诉在哪里可以找到有关声码器工作原理的信息。


3
UdoZölzer等人的DAFX有一个简单的相位声码器,带有一些MATLAB代码。
声音

1
检查Melodify SDK,它执行相同的操作,并提供试用版。
Danijel 2014年

Answers:


18

我担心这里的所有答案都与问题无关。在音乐制作界所谓的声码器与信号处理中使用的相位声码器无关。更糟糕的是,原始帖子引用的Songify应用程序不是声码器的示例。让我们来解决这个问题!

1.相位声码器

其他答案引用的相位声码器是一种信号处理技术,可通过计算信号的时频表示(短期傅里叶变换)来执行信号的时间/音高修改(时间拉伸,音高移位) (或STFT),然后插入/删除信号帧,然后保持相位信息的一致性。它与语音的关系只是历史性的,目前用于低端音频硬件/软件中的音调转换和时间拉伸。RubberBand是基于相位声码器的开源C ++时间/音调更改库的示例。

2.声码器

当音乐制作领域的人们指的是声码器时,他们指的是一种提取信号频谱包络的​​设备(通常是声音,称为调制器),并过滤另一个信号(通常是丰富的合成器纹理,称为载波)。使用一个滤波器,其响应是提取的频谱包络。有关产生声音的示例,请在头几秒钟内收听Kraftwerk Trans Europe Express中的 0:23 或Alan Parsons的Project The Raven。产生的效果是施加到载波信号播放的旋律或和弦上的类似声音的音色,给人感觉是通过合成器发出了声音。

声码器最初是一个模拟设备,它由两排或十二个以上具有高Q的带通滤波器实现。调制器信号通过第一个滤波器组发送,所有子带信号的幅度都通过一个信封关注者数组。并行地,载波信号通过另一个滤波器组发送。每个子带都以包络跟随器给出的增益进行放大(使用VCA)。如果你读的模拟,你可以看看在的示意图声码器信道这里,从尤尔根Haible的生活声码器-在调制器信号滤波器的顶部,在载波滤波器和VCA的底部。声码器的软件实现与此接近,仅因为音乐制作人希望声码器听起来像经典的模拟设备!但是,如果您不希望对“老式”设备保真,并且想要比40 biquads便宜的东西,则获得相同结果的另一种方法是估算全极点滤波器(取决于所需的接近程度,约为8至20阶)从调制器信号获得原始语音)(AR建模);然后将此过滤器应用于载体。这里的典型问题是,您需要每20ms帧左右更新一次滤波器系数;因此,您需要一个能处理突然的系数更新的全极点滤波器的表示形式。

3.自动调谐和音高重映射

Songify的工作如下:提取录制语音的韵律(音高轮廓),并对其进行更改,以使最终的音高轮廓与目标旋律匹配。这有点类似于自动调谐的功能,区别在于自动调谐会将音高“舍入”到最接近的音乐准确半音,而Songify只是将其推向目标值。

由于语音信号是单声道的并且非常适合源滤波器模型,因此这里使用的算法与传统的音高移位时延非常不同。像时域音高同步重叠叠加(TD-PSOLA)这样的方法在计算和质量方面比常规时间拉伸算法(通常由相位声码器完成)透明地改变音高,效率更高。 )。例如,这些用于语音合成中以更改合成句子的韵律-确实与Songify不同!自动调谐也基于此类时域方法(检测输入波形的完整周期并对其进行重采样)。

PSOLA插图



2

这是Mathworks上伪代码的链接。

这里的链接描述了DSP Dimensions中的算法。

FFT仓具有中心频率。相对于2个参考点,相距正好1个FFT帧偏移的那个正弦频率处的任何正弦波将具有相同的相位,或者具有可为2个参考点或2个FFT帧计算任意相距任意距离(也许重叠)的增量相位。相位声码器的基本思想是将每个FFT bin频率稍微调整到附近的一个频率,以使该频率上的正弦波将与2个偏移FFT帧的参考点处检测到的相位匹配,如果FFT bin中心频率不匹配。

然后,即使在频率或时域中按比例缩放了原始频谱序列,也可以将这些调整后的频率用于波形的粒度重新合成,该波形在重新合成的帧之间显示出更多的连续性。这些偏移频率也可以用于频率估计,或者作为音高估计方法的一部分。通过音高估计和声音重新合成,人们可能能够以一个音高获取声音,并将重新合成推向听起来几乎相同的东西,除了另一个音高。


2

下面的文章介绍了基于短时傅立叶变换(STFT)的相位声码器,以及用于解决音频信号的时间和音高修改的音高同步重叠相加(PSOLA)技术:

Moulines,E.和Laroche,J.
语音的音调标度和时间标度修改的非参数技术 ”,《
语音通信》,1995年。
(某些PDF版本可从Google Scholar的链接中获得)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.