문제

업데이트 이 질문은 이전에 ""라는 제목입니다.신호 (사운드) 패턴 감지에 대한 간단한 알고리즘의 이름을 알려주세요."

  1. 저의 목표는 시끄러운 신호에서 주어진 패턴의 존재를 감지하는 것입니다. 나는 마이크로 소리를 기록하는 곤충 종의 존재를 감지하고 싶습니다. 나는 이전에 곤충의 소리를 디지털 형식으로 녹음했습니다.
  2. 나는 음성 인식을 시도하지 않습니다.
  3. 나는 이미 입력 신호와 패턴 사이의 컨볼 루션을 사용하여 유사성 수준을 결정하고 있습니다. 그러나이 기술은 불연속 시간 (즉, 신호가 고정 된 간격으로 발생하는 디지털 통신)에 더 적합하고 2 개의 주어진 패턴 (단지 하나의 패턴 만 있음) 사이의 입력 신호를 구별하기 위해 더 적합하다고 생각합니다.
  4. 신경망을 사용하는 것이 두렵습니다. 왜냐하면 나는 그것들을 사용하지 않았기 때문에, 그 코드를 포함시킬 수 있는지 모르겠습니다.

다른 접근 방식을 지적하거나 현재의 접근 방식이 여전히 좋은 생각이거나 신경망이 실현 가능한 방법이라는 것을 확신시켜 주시겠습니까?

업데이트 나는 이미 두 가지 좋은 대답을 가지고 있지만 또 다른 답변은 환영받을 것입니다.

도움이 되었습니까?

해결책

Convolution에서 한 걸음 더 올라가는 것입니다 역동적 인 시간 뒤틀림 한 신호를 늘리고 축소하여 다른 신호를 최적으로 일치시킬 수있는 컨볼 루션 연산자로 생각할 수 있습니다.

아마도 더 간단한 접근 방식은 샘플의 FFT를 수행하고 곤충이 필터링 될 수있는 특정 주파수를 결정하는 것입니다.

더 복잡한 측면에서는 신경 네트워크가 아닌 SVM 툴킷이 있습니다. libsvm 그리고 svmlight 데이터를 던질 수 있습니다.

당신이 시도하는 길에 관계없이, 나는 당신의 곤충이 FFT와 같은 도구를 사용하는 소리의 특성을 탐구하는 데 시간을 할애 할 것입니다. 결국, 직접 할 수 있다면 컴퓨터를 가르치는 것이 더 쉬울 것입니다.

다른 팁

전형적인 것처럼 들립니다 하나의 클래스 분류 문제 즉, 신경 쓰지 않는 다른 많은 것들에서 한 가지를 검색하고 싶습니다.

당신이하고 싶은 것은 원시 녹음의 모든 짧은 조각에 대해 계산할 수있는 일련의 기능 또는 디스크립터를 찾는 것입니다. 나는 컨볼 루션이 불필요하게 나쁘다고 생각하지 않지만 소음에 다소 민감하기 때문에 당신의 경우에는 최적이 아닐 수도 있습니다. 실제로 귀하의 경우에 작동 할 수있는 것은 Binned Fourier 변환에서 패턴 일치하는 것입니다. 신호의 푸리에 변환을 취하여 전원 대 주파수 그래프 (전원 대 시간 그래프가 아닌)를 제공 한 다음 밴드의 주파수를 나누고 각 밴드의 평균 전력을 기능으로 사용합니다. 데이터에 주로 백색 소음이 포함 된 경우 비슷한 길이의 생리 곤충 사운드에서 얻는 Patern은 참조 사운드의 패턴과 매우 밀접하게 일치합니다. 이 마지막 트릭은 성공적으로 사용되었습니다 (일부 윈도우 포함) Google 등이 사용하는 오디오 볼프 cha를 크랙하여 사이트를 블라인드에 액세스 할 수 있도록합니다.

그건 그렇고, 원시 오디오 신호가 디지털이기 때문에 (그렇지 않으면 컴퓨터로 처리하는 것이 작동하지 않습니다 ;-)) 컨볼 루션이 적절합니다. 기준 신호와 각 샘플에서 시작하는 원시 입력에서 동일한 길이의 샘플 사이의 컨볼 루션을 수행해야합니다. 따라서 기준 신호가 길이 N이고 원시 샘플이 m> = n으로 길이 m이 있으면 기준 신호와 1에서 시작하는 원시 입력의 p 샘플 사이에 m-n+1 = p 컨볼 루션을 수행해야합니다. 피. 원시 샘플에서 기준 사운드의 위치에 가장 적합한 가능성은 컨볼 루션 점수가 가장 높은 샘플입니다. 이것은 매우 빨리 시간이 많이 걸린다는 점에 유의하십시오.

푸리에 변환 기반 일치 위에서 위에서 설명한 바와 같이 참조 샘플의 두 배 길이의 원시 데이터에서 50% 중첩 샘플을 사용하여 최소한 더 빠르지는 않지만 (Neccessly Neccessally Nettally)

더 많은 정보가 필요합니다.

시끄러운 신호를 말할 때 배경 소음은 무엇입니까? 첫 번째 근사치, 고정식 (통계적 의미에서 일정)이거나 비정상적이거나 (즉, 다른 동물 통화 등과 같은 다른 소리를 포함 할 가능성이 있습니까?)

배경 노이즈가 정지되지 않으면 가장 좋은 방법은 독립적 인 구성 요소 분석 주어진 사운드 혼합물을 구성 요소 소스로 분리하려고 시도하면 곤충 자체의 원래 녹음이 필요하지 않습니다. 많은 ICA 소프트웨어가 Wikipedia 페이지에서 링크되었습니다.

(편집 : ICA는 사례입니다 블라인드 소스 분리 (BSS), BSS를 수행하는 다른 많은 방법이 있으며 이들도 검색하는 데 도움이 될 수 있습니다.)

그러나 배경 노이즈가 고정되어 있다면 문제가 훨씬 쉽습니다 (여전히 매우 어렵지만).

이 경우 내가 사용하는 접근법은 다음과 같습니다. 약간의 노이즈의 진폭 스펙트럼과 곤충 호출의 진폭 스펙트럼을 분석하십시오. 운이 좋으면 곤충 전화는 일반적으로 소음과 다른 주파수 대역에있을 수 있습니다. 그렇다면 들어오는 신호를 적합한 하이, 저 또는 대역 통과 필터로 필터링하십시오.

그런 다음 (필터링 된) 곤충 호출과 평균보다 "더 많은 에너지"를 포함하는 필터링 된 신호의 섹션을 비교할 수 있습니다. 아마도 A. Rex가 제안한 이미지 유사성 알고리즘을 사용하여 가능합니다.

편집하다: 당신의 배경-noise는 비 정적이므로 비 가우스 소스의 맹인 소스 분리 더 많은 알고리즘으로 이끌 수 있습니다. 나는 그 대답이 있다는 것이 두렵다 간단하지 않습니다 당신이 원하는 것을 수행 할 알고리즘.

내가 당신이 조금 읽기 시작했다면 창 함수 해밍 창과 마찬가지로 이것은 사운드 인식을위한 좋은 출발점입니다. (물론 이것은 결합 된 것입니다 푸리에 변환)

일치하는 필터를 시도 할 수 있습니다. 나는 실제로 하나를 사용한 적이 없지만 좋은 것을 들었습니다.

또한 간단하지는 않지만 숨겨진 Markov 모델 (흠, 나는 당신이 음성 인식이 없다고 말했지만 내 말을들을 수 있다는 것을 알고 있습니다!)는 당신에게 최상의 결과를 제공 할 것이라고 생각합니다. 다시 한 번, 나는 실제로 하나를 사용한 적이 없지만 모든 곳에서 사용할 수있는 오픈 소스 구현이 있습니다. 당신은 당신의 "깨끗한"곤충 녹음을 사용하여 훈련하면됩니다. 오픈 소스 구현은 다음과 같습니다. 일반적인 숨겨진 Markov 모델 라이브러리.

분명히 이것은 내 전문 분야가 아니지만 나의 첫 생각은 재귀 최소 제곱 필터 - 자기 상관을 수행합니다. 지금 사용하고있는 Convolution 필터와 유사하지만 조금 더 발전했습니다. Kalman 필터링은 이것의 확장입니다. 여러 노이즈 측정에서 신호를 재생하는 데 사용 되므로이 경우 유용하지 않을 것입니다. 나는 오프 핸드 신경망을 거부하지 않을 것입니다. 그들은 이런 종류의 일에 매우 유용합니다 (당신이 제대로 훈련 한 경우).

이것에 대해 더 깊이 생각하면 FFT를 사용하는 것이 좋습니다. 당신이 찾고있는 신호는 매우 대역 제한 일 가능성이 높으며 아마도 데이터에 대역 통과 필터를 사용하여 FFT를 사용하고 마침내 시간 영역 데이터 대신 해당 데이터에 간단한 컨볼 루션 필터를 사용하는 것이 더 운이 좋을 것입니다. 포인트들. 또는 둘 다 수행하고 데이터의 두 배를 가지고 있습니다. 나는 수학에 무겁지 않기 때문에이 방법을 사용하여 상당한 (선형 의존적이 아닌) 결과를 얻을 수 있을지 말해 줄 수는 없지만 당신이 잃어버린 유일한 것은 시간입니다.

당신은 A에 관심이있을 수 있습니다 MA 도구 상자, 유사성 측정의 MATLAB 구현.

나는 개인적 으로이 논문을 찾았습니다. MPEG-7의 일반적인 사운드 분류 및 유사성, 흥미로운. 그러나, 그것은 페이 월 뒤에있을 수 있으며 (모르겠다) 실제로는 그렇게 유용하지 않을 수 있습니다.

GPL-ED 프레임 워크 마르 시아 Kea라는 기계 학습 분류 도구가 있습니다. 내 생각에 이것은 아마도 당신이 원하는 것을하지 않거나 너무 많은 노력을 기울이지 않을 것입니다.

그렇지 않으면 나의 유일한 아이디어는 푸리에 변환을 취하여 소리를 그레이 스케일 이미지로 효과적으로 변환하는 것입니다. 그런 다음 많은 것 중 하나를 사용하십시오 이미지 유사성 알고리즘.

순진한 베이 스 분류기 여기서는 가치가있을 수 있습니다. 사운드 샘플을 관심있는 종과 그렇지 않은 샘플을 포함하는 샘플로 분류하십시오. 복잡한 현상에 아주 잘 작동합니다. 한 번은 주어진 밀리미터 파 레이더 데이터 세트에 브러시, 탱크 트랩 등과 같은 장애물이 포함되어 있는지 결정하는 데 사용했습니다. 연속 데이터 세트와 덩어리가 곤충 샘플과 길이가 동일합니다. 예를 들어, 비교하는 샘플의 길이가 2 초인 경우 판별 자 0-2S, 0.5-2.5, 1-3S 등을 공급할 수 있습니다. 차별자를 훈련시켜야하지만 이는 일반적입니다. 기계 학습 기반 솔루션의 요구 사항.

이런 종류의 접근 방식은 곤충 종이 당신이 찾고있는 비교적 뚜렷한 소리가 하나도 없다면 갈 수있는 유일한 방법입니다. 상호 상관/컨볼 루션은 부피가 높거나 낮을 수있는 단일 사운드보다 더 복잡한 것을 찾고 있다면 유틸리티가 제한되어 있습니다.

다음과 같은 여러 언어에 대한 순진한 Bayes 분류기 구현이 있습니다. NBC.

당신은 원할 수 있습니다 Wiener 필터 접근하다.

Google : Fastica 알고리즘. 일부는 ICA 및 블라인드 소스 신호 분리를 상호 교환 적으로 사용합니다. 이 알고리즘의 저자는 Amazon에서 약 $ 40- $ 60 인 ICA에 대한 환상적인 책을 썼습니다.

Goertzel- 간단한 패턴 감지 및 복잡한 주파수 분리에 사용할 수 있습니다. 샘플을 볼 수 있습니다 C#에서의 내 구현

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top