신호가 있는지 여부를 알 수있는 방법은 무엇입니까 (신호가 잡음처럼 보일 때)?


11

이것은 다시 코골이 탐지기입니다.

나는 신호가있을 때 신호를 감지하는 데 상당히 능숙 해졌습니다. 벽을 막는 코골이에서 녹음까지들을 수없는 호흡까지 추적 할 수 있습니다. 문제는 신호가 감지 가능한 수준 아래로 떨어졌을 때 알 수 없으며 앱이 "청력"이라는 것입니다. 불행히도, 코골이 / 호흡은 종종 간단한 자기 상관 또는 유사한 간격 타이밍 체계가 도움이되지 않을 정도로 불규칙합니다. (그리고 실제로는 소음보다 호흡이 더 규칙적 일 수 있습니다.)

신호가 없을 때 알아 내기 위해 누락 된 트릭이 있습니까? "시그널"이 너무 소음이 난다는 점을 감안할 때, 나는 여기서 어려운 장소에 직면하고있는 것 같습니다.

(그리고 이것은 내가 겪고있는 또 다른 문제와 관련이있을 수 있습니다. 이상하게도, 나는 상당히 큰 경우에도 신호 레벨을 정확하게 (또는 대략) 측정 할 수 없습니다. 어쨌든 신호를 감지하기 위해 롤링 평균과 비율을 사용해야하기 때문에, 레벨 정보의 종류가 손실됩니다. 재구성 할 요령을 찾고 있습니다.)

기본 기술

(요다)

오디오 신호가 샘플링되며 (일반적으로 8000Hz에서 다양한 이유로) 1024 블록으로 FFT됩니다. (내 실험에서 해밍 필터와 겹치는 블록은 효과가 거의없는 것 같지만 나중에 다시 검토 할 수 있습니다.)

FFT는 "밴드"(현재 5 개, 로우 엔드에 대한 자세한 내용을 위해 약간 비뚤어진 크기)로 나뉘며 각 밴드의 "스펙트럼 차이"와 레벨이 합산됩니다. 피크 제한 값의 장기 평균은 "임계 값"으로 사용되며 추가 바이어스 조정은 약 20 % "임계 값 초과"속도를 유지하는 데 사용됩니다.

각각의 "임계 값 초과"값은 1의 가중치를 부여 받지만 (임계 값은 0의 가중치를 부여 함), 그 가중치는 밴드에 더 많은 가중치를 부여하기 위해 밴드에서 명백한 "가변성"(대략 2Hz)에 의해 조정됩니다. 보다 명백한 신호를 전달합니다.

밴드의 가중치가 합산 된 후 후속 블록의 합산 된 가중치가 약 1 초에 걸쳐 합산되어 "점수"를 생성합니다. 이는 코골이 시작 / 오프셋을 감지하기 위해 실행 평균 임계 값 (및 여러 휴리스틱)과 다시 비교됩니다.

최신 정보

내 알고리즘이 신호 레벨 문제에 따라 일정한 레벨의 신호를 효과적으로 유지하는 경우 SNR을 효과적으로 측정하는 방법은 신호가 없을 때 노이즈를 측정하는 것입니다.

편리하게는, 코골이 사이에 "죽은 공기"가 많은 간헐적입니다. 그리고 나는 이미 코골이 봉투를 감지하고 있습니다. 따라서 엔벌 로프 외부 (한 코의 끝과 다음 코의 시작 사이)는 잡음이있을 수 있습니다. 이것은 (약간의 정도의 정확성 / 반복성으로) 측정 할 수 있습니다. (물론 반은 괜찮은 알고리즘을 만들어 내기 위해 세 번의 시도가 필요했습니다. 현실은 결코 이론과 일치하지 않습니다.)

아직 정답은 없지만 진전을 보였습니다.

(위의 기술은 SNR에 대해 상당히 좋은 프록시를 제공하지만 실제 신호 레벨을 추정하는 데 여전히 문제가 있습니다. 내 "상대적 레벨"표시는 간신히들을 수있는 호흡을 위해 스케일을 벗어날 수 있으며, 따라서 윈도우 래틀 러 (ratr)의 경우에는 그렇지 않습니다. 절대 수준을 위해서는 일종의 프록시가 필요합니다.)


"이것은 나의 코골이 탐지기입니다"— 이전 질문 (더 자세한 설명이있는 곳)으로 연결하거나이 질문에서 탐지기에 대한 세부 사항을 추가 할 수 있습니까?
Lorem Ipsum

답변:


5

지금까지 당신은 오디오에 강한주기적인 패턴의 존재를 통해 코골이를 식별하는 것 같았습니다. 만약 당신이 같은 속성을 가진 다른 소스가있을 수 있다고 말하면, 코골이에 더 특정한 신호의 속성에 초점을 맞추어 움직일 시간입니다. 녹음 된 사운드 자체의 음색을보다 정확하게 살펴볼 것을 제안합니다. 인간의 청취자가 호흡과 코골이를 크게 구분할 수 있다고 가정하면 전통적인 오디오 신호 분류 방식에 의지 할 수 있습니다. 오디오 데이터의 MFCC 및 변동 패턴과 같은 기능을 계산하고 코골이를 호흡과 구별하기 위해 베이지안 분류기 (또는보다 정교한)를 훈련시킵니다.

주제에 관한 문헌을 검토 할 때가되었을 수도 있습니다 ... 예를 들면 다음과 같습니다. http://web.itu.edu.tr/kamasak/pubs/pdf/pm7_8_007.pdf


한 가지 문제는 소리의 본질이 개인마다, 심지어 한 밤 동안 한 개인에게도 매우 다르다는 것입니다. 그러나 단서에 감사드립니다-나는 그들을 조사 할 것입니다.
Daniel R Hicks

트레이닝 세트가 충분히 큰 경우에도 머신 러닝 기술을 사용하여 실행 가능할 수 있습니다.
pichenettes

50 개가 넘는 데이터 세트가 있습니다. 불행히도 한 세트에서 완벽하게 작동하는 알고리즘은 다음 세트에서 비참하게 실패합니다. 일부는 TV가 배경에 있고 일부는 공기 처리기가 울리는 등이 있습니다. 호흡 / 코가 거의 들리지 않거나 페인트가 벗겨 질 수 있습니다. 피험자는 자세를 바꿀 수 있으며 코골이의 성격을 완전히 바꿀 수 있습니다. 어떤 종류의 자체 조정 체계가 분명히 필요합니다.
Daniel R Hicks

분류에 어떤 기능을 사용하고 있습니까?
pichenettes 2012

"시작"및 "오프셋"을 감지하기 위해 주로 "스펙트럼 차이"( "스펙트럼 플럭스"라고도 함). 그러나 현재의 방식은 스펙트럼을 대역으로 나누고 해당 대역의 겉보기 신호 강도 (약 1 / 2Hz에서 발생하는 스펙트럼 차이의 변화량으로 판단)를 기준으로 각 대역에 "가중치"를 적용합니다. 이것은 상당한 소음이 있더라도 전체 볼륨 범위에서 호흡 / 코골음을 감지하는 데 효과적이지만 실제 볼륨의 모든 표시를 효과적으로 상실합니다. 소음 문제로 인해 총 사운드 레벨을 동시에 보는 것은 효과가 없습니다.
Daniel R은

0

고정 훈련 세트에 맞추기보다는 현재 주제, 수면 단계 및 오디오 환경에 적응할 수있는 동적 분류기를 구축해야 할 수도 있습니다.


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