给定记录,我需要检测是否发生了任何剪辑。
我可以安全地得出结论:如果有一个(一个)样本达到最大样本值,就会出现削波现象,还是我应该寻找一系列后续的最大样本值?
记录可以取自16或24位A / D转换器,并转换为范围内的浮点值。如果这种转换通过采用的划分的形式2 15 - 1或2 23 - 1,则推测负峰值可以稍微小于-1,并与值-1样品没有限幅?
显然,人们总是可以创建一种专门打败削波检测算法的信号,但是我正在查看语音,音乐,正弦波或粉红/白色噪声的录音。
给定记录,我需要检测是否发生了任何剪辑。
我可以安全地得出结论:如果有一个(一个)样本达到最大样本值,就会出现削波现象,还是我应该寻找一系列后续的最大样本值?
记录可以取自16或24位A / D转换器,并转换为范围内的浮点值。如果这种转换通过采用的划分的形式2 15 - 1或2 23 - 1,则推测负峰值可以稍微小于-1,并与值-1样品没有限幅?
显然,人们总是可以创建一种专门打败削波检测算法的信号,但是我正在查看语音,音乐,正弦波或粉红/白色噪声的录音。
Answers:
我正在输入一个与Yoda完全相同的答案。他可能是最可靠的,但是,我将提出一个不同的解决方案,以便您有一些选择。
如果对信号进行直方图处理,则取决于信号类型,您很有可能会呈钟形或三角形。干净的信号将倾向于遵循这种模式。许多录音棚都添加了一种“响度”效果,在顶部附近会引起一些颠簸,但看起来仍然有些平滑。这是主要音乐家的一首真实歌曲的示例:
这是Yoda在回答中给出的信号直方图:
现在,它们被裁剪的情况是:
该方法有时可能会被愚弄,但对于FFT方法似乎对您不起作用或对您的环境进行过多计算的情况,至少可以将它丢进您的工具包中。
如果要处理简短的录音,最简单的答案就是听它并在播放中检测“ pop”(尖峰的声音)。但是,更可靠的解决方案是分析记录的频谱。
回想一下,当信号被削波到某个阈值时,它在削波区域中局部类似于方波。这会在频谱中引入原本不会出现的高次谐波。如果您的信号是有频带限制的(大多数现实世界中的信号都是),并且您的采样率远远高于奈奎斯特速率,那么这一点在一天中就非常清楚。
这是MATLAB中的一个简短示例说明了这一点。在这里,我创建一个持续时间为1s的带限信号,以1000Hz采样,然后将其限幅到之间±0.8
(请参见下图的顶部图)
time = 0:0.001:1;
cleanSignal = sin(2*pi*75*time).*chirp(time,50,1,200);
clippedSignal = min(abs(cleanSignal),0.8).*sign(cleanSignal);
您可以清楚地看到原始的,未削波的波形的频谱是干净的,并且在带宽之外变为零(左下),而在削波的信号中,频谱一般会出现较小的失真(如果削波了,则预期)重要的是,信号带宽之外的频谱中的高次谐波/尖峰/非零贡献(右下图)。
通常,这可能是一种更好的方法,因为除非您自己设计设备并准确知道阈值,否则通过查看值来检测削波通常是不准确的。
这一点取决于记录方法。听起来您只使用了1个转换器,这在某种程度上简化了事情。
您应该寻找高于某个阈值的任何东西,尤其是要寻找一个以上的相邻点。通常,除非经过非常精确的测试,否则A / D转换器实际上不会读取其最大值,因此请注意,该最大值可能比看起来可能的要低。
给定您的参数,我将寻找大于.98或小于-.98的连续信号,并进行一些调整来确定最佳阈值(我不会将其降至.9以下)。最好最大检测一个,而另一个靠近.8,这很明智。
忽略1个特定测量的原因是,通常会发生与信号完全无关的尖峰。如果使用的是已知的优质A / D转换器,则可以减少这种情况。如果您使用的是检测器阵列或图像,则某些检测器可能会损坏,可能会频繁削波。
MLS(最大长度序列)在分析削波时特别棘手。它们的波峰因数(= peak / rms)非常接近1,比正弦波还要小三dB。许多D / A转换器被设计为在最坏的情况下采用正弦波,而以全振幅播放的MLS可以轻松限制D / A的输出插值电路。
下一个问题是,削波的MLS看起来几乎与未削波的MLS相同,因为振幅首先几乎都是+峰值。同样,PDF分析也不起作用,因为MLS的PDF只是边缘处的两个大峰。
在典型的房间脉冲响应测量中,最可能的削波点实际上是D / A,放大器或扬声器。一旦通过房间,它看起来就不太像MLS,因此,使用上述方法评估削波更加容易。
在几乎所有声学测量中,本底噪声是由麦克风的自身噪声或背景噪声而非A / D决定的。因此,优化削波(10dB左右)之前,在A / D上优化输入增益并留出足够的净空空间并不是很重要。
用许多不同的激励电平进行测量并查看测量的SNR通常是一个好主意。在低水平时,声学背景噪声占主导地位,在高水平时,某些东西会受到限制,压缩或削波。进行良好测量的诀窍是在两者之间找到合适的位置。