【问题标题】:Detecting digital clipping in audio signal检测音频信号中的数字削波
【发布时间】:2013-05-17 22:04:36
【问题描述】:

在python中给定一个音频字节数组data

inp = alsaaudio.PCM(alsaaudio.PCM_CAPTURE, alsaaudio.PCM_NONBLOCK, card)

# Set attributes: Mono, 48000 Hz, 16 bit little endian samples
inp.setchannels(1)
inp.setrate(48000)
inp.setformat(alsaaudio.PCM_FORMAT_S16_LE)
l, data = inp.read()

如何检测数字剪辑,data 必须超过哪个值才能确保它被数字剪辑?

【问题讨论】:

  • 超速是什么意思?数字剪辑?对于超过两个或三个样本,数据必须等于 16 位有符号整数的最大值或最小值,才能进行裁剪。
  • 当您收听过载的音频时,如果人们触摸麦克风或电路在某处短路或大声喊叫,它会失真。我想这被称为数字剪辑。
  • @RobertHarvey 所以基本上介于 -32.768 和 32.767 之间?所以如果我使用 if audioop.max(data,2) >= 32767 ||如果 audioop.max(data,2)
  • 音频信号链中的任何位置都可能出现过载音频。有时这是故意的,尤其是在电吉他放大器中。数字剪辑是不同的;当没有更多的位可以表示信号的幅度时,就会发生这种情况。
  • 是的,基本上就是这样。如果您在 -32768 处看到三个或更多连续样本,或者在 32767 处看到三个或更多连续样本,则可能发生了削波。

标签: python audio python-2.7 audio-recording


【解决方案1】:

过载基本上是增益失真。它将电压升高到驱动器刚刚切断顶部并因此扭曲信号的程度。如果您需要以数字方式对此进行测试,那将是硬剪辑。因此,您需要搜索通过最大阈值的值。对于 16 位音频文件,剪辑本质上将是 0db。因为如果没有更多的位可以保存,那么软件会自动将其切掉到 16 位整数可以容纳的最大值。不幸的是,如果轨道之前已经失真,然后降低了音量以便更好地融入混音,你可能找不到它。除非那是,您正在检查的是轨道上唯一的声源,在这种情况下,只需找到轨道的最大值并将其设置为您的阈值。我可以说,尽管硬削波显示为方波,因此您可以在比普通可听波更长的时间段内搜索连续相同的值(以忽略合法的方波音调)。不过,这就是我能为你做的最好的事情了。

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 2015-06-10
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多