레코딩에서 신호 클리핑을 감지하는 좋은 방법은 무엇입니까?


32

녹음이 주어지면 클리핑이 발생했는지 감지해야합니다.

하나의 샘플이 최대 샘플 값에 도달하면 클리핑이 발생했다고 결론을 내릴 수 있습니까? 아니면 최대 레벨에서 일련의 후속 샘플을 찾아야합니까?

16 또는 24 비트 A / D 변환기에서 기록 할 수 있으며 범위의 부동 소수점 값으로 변환됩니다 . 이 변환이 또는 으로 나눗셈 형식을 취하는 경우 음의 피크는 -1보다 다소 낮을 수 있으며 값이 -1 인 샘플은 클리핑되지 않습니까?2 (15) - 1 2 (23) - 11...121512231

분명히 클리핑 감지 알고리즘을 없애기 위해 항상 신호를 만들 수는 있지만 음성, 음악, 사인파 또는 핑크 / 화이트 노이즈 녹음을보고 있습니다.


8
클리핑 레벨이 항상 디지털 최대 값은 아닙니다. 아날로그 회로 (또는 ADC의 아날로그 쪽)가 디지털 최대 값보다 약간 낮은 클리핑 레벨을 갖는 경우 조기에 클리핑됩니다. 아날로그로 클립 한 다음 일부 필터링을 통과하면 직선조차되지 않습니다. 어떤 시나리오를 탐지해야합니까?
endolith

1
녹음은 PC 사운드 장치 (보통 USB를 통해 연결됨)로 이루어집니다. 대부분 스위프 또는 MLS 자극에 대한 응답이며 룸 임펄스 응답을 계산하는 데 사용됩니다. 하드웨어를 제어하지 않으므로 자극 출력에서 ​​클리핑이 발생할 수도 있습니다. 앞서 생각하지는 않았지만, 당신이 그것에 대해 생각하게되어 기쁩니다.

답변:


30

나는 Yoda 와 거의 같은 대답을 입력하는 중이었습니다 . 그는 아마도 가장 신뢰할 만하지 만 다른 솔루션을 제안하므로 몇 가지 옵션이 있습니다.


신호의 히스토그램을 찍으면 신호 유형에 따라 종 모양이나 삼각형 모양이 될 수 있습니다. 깨끗한 신호는이 패턴을 따르는 경향이 있습니다. 많은 녹음 스튜디오는 상단 근처에 약간의 충돌을 일으키는 "소리 강도"효과를 추가하지만 여전히 약간 매끄 럽습니다. 다음은 주요 음악가의 실제 노래 예입니다.

히스토그램

다음은 Yoda가 대답 한 신호의 히스토그램입니다.

클리핑이없는 히스토그램

그리고 이제 클리핑되는 경우 :

클리핑 히스토그램

이 방법은 때때로 속일 수 있지만 적어도 FFT 방법이 귀하에게 적합하지 않거나 환경에 너무 많은 계산이 필요한 상황에서는 툴 백에 넣을 수 있습니다.


2
그것은 미친 멋진 영향입니다. 매우 흥미로운.
Kortuk

이 방법을 제안하게되어 기쁩니다. 내가 직접 포함시켜야
했는데

나는 이것이 가장 구현 가능한 방법 인 것처럼 보이기 때문에 구체적으로 말합니다. 주어진 다른 옵션들에 적용되는 형태이지만 "오류"신호가 훨씬 더 분명해 보입니다.
Kortuk

1
신호의 절대 값을 먼저 취하고 더 부드러운 단면 히스토그램을 얻을 수 있습니다
endolith

내 손가락이 이것을 내 신호에서 시험 해보고 싶어합니다. 감사.
Han

20

짧은 녹음을 처리하는 경우 가장 간단한 대답은 녹음을 듣고 재생에서 "팝"(짧은 스파이크 사운드)을 감지하는 것입니다. 그러나 더 강력한 솔루션은 기록의 주파수 스펙트럼을 분석하는 것입니다.

신호가 특정 임계 값에서 클리핑되면 클리핑 된 영역의 구형파와 로컬로 유사하다는 점을 상기하십시오. 이것은 원래 존재하지 않았던 주파수 스펙트럼에서 더 높은 고조파를 발생시킵니다. 신호가 대역 제한되어 있고 (대부분의 실제 신호가 있음) 나이키 스트 속도보다 훨씬 높은 샘플링을하는 경우에는 하루가 매우 분명합니다.

MATLAB의이를 보여주는 간단한 예가 있습니다. 여기서는 1000Hz로 샘플링 된 1 초 지속 시간의 대역 제한 신호를 생성 한 다음 그 사이에 클리핑합니다 ±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);

여기에 이미지 설명을 입력하십시오

클리핑되지 않은 원래 파형의 주파수 스펙트럼이 깨끗하고 대역폭 (왼쪽 하단) 외부로 0이되는 반면, 클리핑 된 신호에는 스펙트럼의 일반적인 작은 왜곡 (클리핑 된 경우 예상 됨)이 있으며 대부분 중요한 것은 신호 대역폭 외부의 스펙트럼에서 높은 고조파 / 스파이크 / 제로가 아닌 기여 (오른쪽 아래)입니다.

장비를 직접 설계하고 임계 값을 정확하게 알고 있지 않으면 값을보고 클리핑을 감지하는 것이 일반적으로 정확하지 않기 때문에 이는 일반적으로 더 나은 방법 일 수 있습니다.


1
내 신호 중 일부 (특히 MLS)는 나이키 스트 주파수까지 올라갑니다. 따라서이 방법이 항상 적용 가능한 것은 아닙니다.
Han

@yoda 스펙트럼을 손에 넣으면, 표시된대로 스펙트럼이 '더러운'지 어떻게 알 수 있습니까? 어떤 테스트를 수행 할 수 있습니까?
Spacey

9

이것의 약간은 기록 방법에 달려 있습니다. 하나의 변환기 만 사용하는 것처럼 들리므로 다소 단순화합니다.

임계 값 이상, 특히 서로 옆에있는 둘 이상의 지점을 찾아야합니다. 일반적으로 A / D 변환기는 매우 정확하게 테스트하지 않는 한 실제로 최대 값을 읽지 않으므로 최대 값이 가능한 것보다 낮을 수 있습니다.

귀하의 매개 변수가 주어지면 .98 이상 또는 -.98 이하의 연속 신호를 찾고 최적의 임계 값을 결정하기 위해 약간의 조정이 필요합니다 (.9 이하로 가져 가지 않을 것입니다). 최대 값에서 하나를 감지하고 .8과 같이 근접하여 다른 것을 감지하는 것이 현명 할 수 있습니다.

하나의 특정 측정을 무시하는 이유는 신호와 전혀 관련이없는 스파이크가 발생하기 때문입니다. 하나의 알려진 좋은 A / D 변환기를 사용하는 경우에는 줄어 듭니다. 탐지기 배열 또는 이미지를 사용하는 경우 일부 탐지기가 나빠서 잘림이 자주 발생할 수 있습니다.


여기에 매우 실용적인 조언. @Kellenjb의 접근 방식과 함께 이것은 구현 작업을 수행하기에 충분할 것입니다.

3

MLS (최대 길이 시퀀스)는 클리핑을 분석하는 데 특히 까다 롭습니다. 파고율 (= 피크 / rms)은 1에 매우 가깝습니다. 이는 사인파보다 3dB 작습니다. 많은 D / A 컨버터는 최악의 경우 사인파를 취하도록 설계되었으며 최대 진폭으로 재생되는 MLS는 D / A의 출력 보간 회로를 쉽게 클리핑 할 수 있습니다.

다음 문제는 진폭이 거의 모두 + 피크이기 때문에 클리핑 된 MLS는 클리핑되지 않은 MLS와 거의 동일하게 보인다는 것입니다. 또한 MLS의 PDF가 가장자리에서 두 개의 큰 피크이기 때문에 PDF 분석이 작동하지 않습니다.

일반적인 룸 임펄스 응답 측정에서 가장 가능성있는 클리핑 포인트는 실제로 D / A, 앰프 또는 스피커입니다. 일단 방을 통과하면 MLS처럼 보이지 않으므로 위에서 설명한 방법으로 클리핑을 쉽게 평가할 수 있습니다.

거의 모든 음향 측정에서 노이즈 플로어는 A / D가 아닌 마이크 또는 백그라운드 노이즈의 자체 노이즈에 의해 결정됩니다. 따라서 A / D 로의 입력 게인을 최적화하고 클리핑 (10dB 정도)이 충분하기 전에 충분한 헤드 룸을 남겨 두는 것은 그리 중요하지 않습니다.

일반적으로 다양한 여기 레벨로 측정하고 측정의 SNR을 보는 것이 좋습니다. 낮은 레벨에서는 음향 배경 노이즈가 지배적이며 높은 레벨에서는 무언가가 제한, 압축 또는 클리핑됩니다. 좋은 측정을하기위한 비결은 그 사이에 좋은 지점을 찾는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.