混合音频通道背后的基本数学



我有一个应用程序,我可以在其中轻按触摸屏并释放一个点,该点在屏幕上设置动画,读取is下的像素颜色,并根据一些参数将其转换为音频。这在很大程度上起到了很好的作用。

目前,我正在为每个点创建一个音频通道(iPhone AudioComponent)。这很有效,直到我达到大约15个点,然后开始变得"起伏不定"。丢弃音频输入/输出等…

我认为,如果我将所有这些通道的波形混合在一起,然后将波形发送到一个或两个通道,我可以在大量点的情况下获得更好的性能。这就是我寻求建议的地方。

我假设在任何时间t,我可以取((f1(x)+f2(x))/2.0)。这是混合音频信号的典型方法吗?这样,我永远不会超过(标准化)1.0..-1.0,但我担心会得到相反的结果;安静的音频。如果有那么多点,也许就没那么重要了。

如果有人能说出任何技术的名字,我会去读一下。或者,任何链接都很棒。

我知道现在回答这个问题已经太晚了,但可能有人正在做类似的事情,并希望这些回复能帮助他们。

对于混合(求和)多个音频源时获得正确级别的挑战,通常有两个答案。这是因为这是一个向量问题,根据声音是否连贯,答案会有所不同。

如果这两个源是相干的,那么你可以除以通道的数量。换言之,对于十个通道,将它们相加并除以10(衰减20dB)。然而,为了使所有十个信道都是相干的,它们都必须携带相同的信号。一般来说,这是没有意义的——为什么十个通道会携带相同的信号?

不过,有一种情况下相干性很常见,即对立体声对的左右相加。在许多情况下,这两个独立的信号更接近相干,更接近相同。

如果通道不相干,那么音量将不会增加源的数量,而是增加源数量的平方根。对于十个来源,这意味着总和将是每个来源的3.16倍(假设它们都是同一水平)。这相当于10dB的衰减。因此,要将10个不同声音通道(都具有相同的响度)相加,你应该将所有声音衰减10dB。

10dB=20 x log(3.16),其中3.16是10的平方根。

这也有实际的部分。我们假设所有通道的声音都一样大,但如果不是呢?通常情况下,有些频道是相似的,而另一些频道则比较安静。比如说添加人声加背景音乐——音乐比人声更安静。根据经验,您可以忽略较安静的频道。因此,假设有四个语音频道和两个较安静的音乐频道。我们从忽略音乐通道开始,这留下了四个不连贯的语音通道。四的平方根是2,所以在这种情况下,我们将音频电平减半,衰减6dB。

是的,只需将波形相加即可混合。正如你所说,如果你除以波形的数量,那么你会确保你不会剪辑得到的波形。很明显,你会得到单个波形的音量下降,但你建议的是最简单的方法。

有更复杂的方法将多个源混合在一起,试图获得一致的体积输出,该方法计算RMS/峰值类型参数以改变输出增益。如果你想了解更多关于这方面的信息,请在automixers上搜索。

您可以在混音器的输出上使用AGC(自动增益控制或自动限幅器)算法或过程,以防止在音量较低的混音水平下进行削波。

最新更新