gpt4 book ai didi

audio - 如何进行音频扩展/标准化(强调高低之间的差异)

转载 作者:行者123 更新时间:2023-12-02 23:03:36 28 4
gpt4 key购买 nike

我试图找到一种方法来强调音频中高点和低点之间的差异。我似乎找不到有关如何执行此操作的文档-也许可以使用ffmpeg完成。非常感谢来自对信号处理了解更多的人的一些指导。

最佳答案

从根本上讲,膨胀器与压缩机相反。您可能会有更多的运气来查找有关如何实现这些功能的文档。它们与噪声门也有很多共同点。

扩展器

基本方法是实现一个包络跟随器,并使用包络的值缩放音频源。包络跟随器尝试跟踪音频信号的幅度。

基本的pythonic伪代码框架看起来像这样:

envelope_follower e          # some envelope follower, we'll replace this

for each sample x:
amplitude = e.get(x) # use the envelope follower to estimate the amplitude of e
x = expand(x, amplitude) # apply some expansion operation

从最基本的 Angular 来看, expand操作如下所示(假设您的样本在-1.0到1.0之间):
def expand(x, amplitude):
return x * amplitude

有更复杂的方法,例如钳制和缩放幅度,以使其永远不会降至0.5以下,或者在相乘之前对幅度应用一些非线性函数。
# just an example
def expand(x, amplitude):
return x * clamp(1.2 * amplitude - 0.2 * (amplitude * amplitude), 0.3, 1.0)

信封追踪者

压缩器/扩展器的质量几乎完全取决于 ,取决于您如何实现包络跟随器
这不是一门精确的科学,因为在某些情况下,非常准确的信封跟随者可能会引起一些令人讨厌的可听见的影响-需要权衡取舍。

与所有这些事情一样,有很多方法!这是一对:

滤波整流器

低通滤波整流器是最简单的方法之一,尤其是如果您已经具有信号处理模块库的情况下。

它是这样的:
class envelope_follower:
lowpassfilter filter;

def get(x):
return filter.process( abs(x) )

您在此处获得的控制基本上与滤波器设计和低通截止频率有关。使用简单的泄漏蓄能器过滤器将使您走得很长。

攻击释放追随者

人们通常希望对扩展器进行更多控制,有时很难考虑滤波后的整流器的实际效果-调整一个参数可能会改变其许多性能。

对于压缩器/扩展器而言,现实世界中的信号通常非常需要响应速度非常快(例如,对钢琴或鼓的撞击),并且释放速度较慢(因此,钢琴音符的尾部不会突然被切断)

攻击释放跟随器通过指定许多参数来提供更精确的控制:
  • 两个阈值
  • 一个阈值,在此阈值以上声音应变得更大
  • 一个阈值,在此阈值以下应使声音更安静(不一定是相同的阈值,但可以是!)
  • 两个时间段:
  • 超过第一个阈值时达到完整响度需要多长时间(这是Attack参数)
  • 达到安静状态需要多长时间(发布)

  • 一种实现这些方法之一的基本方法是:
    class envelope_follower:
    # Parameters required. These are just made up
    attack_threshold = 0.6
    release_threshold = 0.3
    attack_time = 10 # in samples
    release_time = 1000 # in samples

    amp = 0.0

    def get(x):
    # we still work with the absolute value.
    # You might use another measure of amplitude here like RMS
    # or even the filtered rectifier above
    a = abs(x)

    if x > attack_threshold:
    amp += (1.0 / attack_time)
    else if x < release_threshold:
    amp -= (1.0 / release_time)

    amp = clamp(amp, 0.0, 1.0)

    return amp

    这种跟随器的一种常见扩展是添加Hold参数,该参数指定扩展器应完全打开的最短时间。这样可以避免包络在低频信号上产生可听见的三角波或锯齿波。

    甚至更复杂的方法是执行完整的Attack-Decay-Sustain-Release,让您控制瞬变,通常用作鼓处理。

    变得疯狂

    在这里,您可以:
  • 创建更平滑的expand函数
  • 相当简单地将以上内容调整为压缩扩展器-一种组合设备,可以使低声静音,但也可以使过大的声音静音;
  • 将信号分成多个频带,然后分别压缩/扩展每个频带。通常这样做是在音乐制作过程中获得真正的面部最大振幅。
  • 根据要扩展的声音的频谱内容调整起音/保持/释放。高频信号的起跳/释放时间非常短,而低频信号听起来很糟糕;
  • 为超出阈值的声音添加轻微的饱和失真;即使信号仍然具有相同的最大幅度,这也会使事情在听觉上更大声。理想情况下,您需要一个完全不影响阈值以下信号的饱和器。

  • 祝好运!

    *不要与MP3样式的压缩混淆。压缩机压缩动态范围。

    关于audio - 如何进行音频扩展/标准化(强调高低之间的差异),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53259601/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com