是否有一个图书馆可以完成Levelator为.Net所做的事情?

时间:2010-01-06 03:30:34

标签: .net audio normalization audio-processing

The Levelator是一个程序,您可以输入一个音频文件,然后生成另一个具有更恒定音量的程序,以确保纠正任何录音问题(如声音太大或听不清的人)。

您是否知道我可以在Windows中使用.Net执行相同任务的库?或者命令行程序也足够好。

4 个答案:

答案 0 :(得分:3)

事实上,Levelator既不是压缩器也不是标准化器。是的,它正常化了,但它做得更多,并且比你可以用sox做的更多聪明,等等。把它想象成一个提前知道将会发生什么的推子的手,甚至会知道何时离开足够孤单。在这里查看算法讨论:http://www.conversationsnetwork.org/levelatorAlgorithm

...道格(Levelator的共同创作者)

答案 1 :(得分:2)

执行此操作的命令行程序是sox

该算法的一般思路是找到最高绝对值样本(音频应居中,无论采样数据的测量值如何)。

您将最大可能值除以此数字(保证等于或小于此值),然后将其乘以所需的峰值水平(即,您希望它达到.95的最大值?完全1.0? )。如果结果不是1,则它将成为您的比例值。然后迭代文件并将每个样本乘以该数字。

例如,对于CD质量的音频,样本的最高可能绝对值是32767(为了使示例更容易捏这个,实际范围是-32768到32767,但是将32767视为最大值会使事情变得更加简单),因此,如果您扫描并且您发现的最高绝对值是18000,那么您的放大系数将是1.8203888 ...,如果您希望最大音量为0.9887997070223 *最大可用值,则会给您一个新的比例因子1.8 。因此,您遍历包含音频文件的数组,并使用值* 1.8替换每个样本的先前值。

这可以通过首先进行点击滤波来消除虚假瞬态,并通过去噪来优化,这可以通过去除扬声器无法产生的低频分量来确保波形均匀地围绕中值。人耳听到的。点击过滤器是低通,而de-esser是高通。一旦运行这些滤波器,就会有更多的空间放大声音而不会引入失真。

答案 2 :(得分:0)

您正在寻找的技术称为audio normalization。此第三方代码Mp3SoundCapture提供了一种方法,但它是一个单独的应用程序,而不是库。

答案 3 :(得分:0)

有两种主要方法可以解决这个问题:

  1. 标准化这只需要搜索音频中最响亮的部分,然后放大整个文件,使最响亮的部分达到最大音量。该技术仅在最大声部分为50%或更小时才有用。如果输入文件中的某个峰值达到最大音量,那么标准化对您没有任何作用。

  2. 压缩/限制这采用略有不同的方法,广泛用于音乐录制。基本思想是任何超过一定音量的声音(称为“阈值”)都会变得更安静(或者在限制器的情况下,在某个音量上不允许声音)。这具有平衡整个录音的音量的效果(静音位保持不变,并且响亮的位变得更安静)。然后,您可以放大整个信号而不会使其失真(这称为补偿增益)。有关详情,请参阅dynamic range compression上的这篇文章。

  3. 至于在.NET中实现它,NAudio将允许您查看输入WAV文件中的示例,允许您创建自己的规范化效果。我还在Skype Voice Recorder中演示了如何在.NET中实现压缩器。

    您应该注意的最后一点是,只有在您可以访问样本值时,这些算法才有效。因此,例如,如果您的文件是MP3,则需要先转换为PCM,然后应用规范化/压缩,最后转换回MP3。