다른 (음악적) 톤을 구별하기 위해 어떤 방법론을 사용해야합니까?


12

이 문제를 가장 잘 공격하는 방법을 연구하고 알아 내려고 노력하고 있습니다. 음악 처리, 이미지 처리 및 신호 처리에 걸쳐 있으며, 그것을 보는 수많은 방법이 있습니다. 순수한 sig-proc 도메인에서 복잡한 것처럼 보이는 것이 이미지 또는 음악 처리를하는 사람들에 의해 간단하고 이미 해결되었을 수 있기 때문에 접근하는 가장 좋은 방법에 대해 문의하고 싶었습니다. 어쨌든 문제는 다음과 같습니다.여기에 이미지 설명을 입력하십시오

문제의 내 그림을 용서하면 다음을 볼 수 있습니다.

위의 그림에서 나는 3 가지 유형의 신호를 가지고 있습니다. 첫 번째는 에서 까지 주파수에서 '스텝 업'된 펄스가 있습니다. 특정 펄스 지속 시간과 특정 펄스 반복 시간이 있습니다.f 4f1f4

두 번째 것은 에만 존재 하지만 펄스 길이가 짧고 펄스 반복 주파수가 빠릅니다.f1

마지막으로 세 번째는 단순히 의 톤 입니다.f1

문제는 신호 1, 신호 2 및 신호 3을 구별 할 수있는 분류기를 작성할 수 있도록 어떤 방식으로이 문제에 접근합니까? 즉, 신호 중 하나에 신호를 공급하면이 신호가 너무 많음을 알 수 있습니다. 나에게 가장 혼동되는 행렬은 무엇입니까?

몇 가지 추가 컨텍스트와 내가 지금까지 생각한 것 :

내가 말했듯이 이것은 많은 분야에 걸쳐있다. 나는 앉아서 앉아서 전쟁을 시작하기 전에 어떤 방법론이 이미 존재할 수 있는지 묻고 싶었다. 바퀴를 실수로 다시 발명하고 싶지 않습니다. 다음은 다른 관점에서 본 생각입니다.

신호 처리 관점 : 내가 살펴본 것 중 하나는 Cepstral Analysis를 수행 한 다음 가능 하면 다른 두 신호를 구별하기 위해 cepstrum 의 Gabor Bandwidth 를 사용 하고 다른 두 신호를 식별하는 데 가장 높은 최고봉을 측정하는 것이 었습니다. 신호 2에서 1 이것이 현재의 신호 처리 작업 솔루션입니다.

이미지 처리 관점 : 실제로 스펙트로 그램에 대해 이미지를 만들 수 있기 때문에 그 분야에서 무언가를 활용할 수 있을까요? 나는이 부분에 친숙하지 않지만 Hough Transform을 사용하여 '라인'을 감지 한 다음 어떻게 든 라인을 '계산'하고 (라인과 얼룩이 아닌 경우 어떻게됩니까?) 어떻습니까? 물론 스펙트로 그램을 찍을 때 언제든지 당신이 보는 모든 펄스가 시간 축을 따라 이동 할 수 있습니다. 확실하지 않다...

음악 처리 관점 : 확실한 신호 처리의 부분 집합이지만, 신호 -1은 음악 과정의 사람들이 항상보고 이미 해결 한 특정의 반복적 인 (음악적) 품질을 가지고 있습니다. 차별적 인 도구일까요? 확실하지 않지만 생각은 나에게 일어났다. 아마도이 관점은 시간 영역의 덩어리를 취하고 그 단계 속도를 괴롭히는 가장 좋은 방법일까요? 다시 말하지만, 이것은 내 분야는 아니지만 이전에 본 적이 있다고 생각합니다. 3 가지 신호를 모두 다른 유형의 악기로 볼 수 있습니까?

또한 적절한 양의 교육 데이터가 있다고 덧붙여 야합니다. 따라서 이러한 방법 중 일부를 사용하면 기능 추출을 수행 하여 K-Nearest Neighbor 를 활용할 수 있지만 그저 생각입니다.

어쨌든 이것은 내가 지금 서있는 곳입니다. 어떤 도움을 주시면 감사하겠습니다.

감사!

의견에 근거한 편집 :

  • 예, , , , 는 모두 미리 알려져 있습니다. (일부 분산하지만 거의. 예를 들어, 우리가 알고 말할 수 = 400 kHz의, 그러나 401.32 kHz에서 올 수 있습니다. 그러나까지의 거리 때문에, 높은 비교 500 kHz에서 수 있습니다.) 신호-1 4 개의 알려진 주파수를 항상 밟습니다. 신호 2는 항상 1 개의 주파수를 갖습니다.f 2 f 3f1f2f3f 1 f 2 f 2f4f1f2f2

  • 세 가지 종류의 신호 모두에 대한 펄스 반복 속도 및 펄스 길이 또한 미리 알려져있다. (일부 차이가 있지만 매우 적음). 그러나 일부 경고, 펄스 반복 속도 및 신호 1과 2의 펄스 길이는 항상 알려져 있지만 범위입니다. 다행히도 이러한 범위는 전혀 겹치지 않습니다.

  • 입력은 실시간으로 들어오는 연속적인 시계열이지만 신호 1, 2 및 3은 상호 배타적이라고 가정 할 수 있습니다. 즉, 신호 중 하나만 특정 시점에 존재합니다. 또한 어느 시점에서 처리하는 데 얼마나 많은 시간 청크가 있는지에 대한 유연성이 뛰어납니다.

  • 우리의 알려진 , , , 없는 대역에서는 데이터에 노이즈가있을 수 있으며, 스퓨리어스 톤 등이있을 수 있습니다 . 이것은 가능합니다. 우리는 문제에 대해 '시작'하기 위해 med-high SNR을 가정 할 수 있습니다.f 2 f 3 f 4f1f2f3f4


당신의 의견은 무엇입니까? 1 / 신호 1/2/3 (세그먼트 + 분류 문제) 또는 단일 유형의 신호로 2 / 개 개별 샘플의 발생을 분리하려는 연속 스트림 카테고리 1/2/3로 분류해야합니까? 신호의 여러 특성을 설명합니다. 신호 1의 PRT; 신호 2의 반복 주파수; 신호 3의 주파수; f1 / f2 / f3 / f4의 값. 이러한 매개 변수가 미리 알려져 있습니까? 마지막으로, 입력에서 세그먼트로 신호가 여러 번 발생하는 경우 세그먼트의 일반적인 지속 시간은 얼마입니까?
pichenettes 2019

또 다른 질문 : 도면에서 순수한 톤 (고조파 및 소음 없음)을 다루는 것처럼 보입니다. 이 경우입니까, 아니면 데이터가 도면보다 훨씬 더 더러운가요?
pichenettes

@pichenettes 감사합니다. 편집에 필요한 정보를 추가했습니다.
Spacey

이 질문에 대한 진행 상황과 해결책에 대한 후속 조치를 부탁드립니다. 분석은 주로 연구 된 소리의 시간 변동에 달려 있습니다. fft 윈도우보다 빠르면 256 개 샘플 이하에서 고해상도 스펙트로 그램이 필요합니다. 스펙트로 그램이 정확할수록 사운드에서 작은 세부 정보를 더 많이 볼 수 있습니다. FFT는 아마도 괜찮을 것입니다. 그 후 간단한 패턴 분석 루틴을 사용하여 사운드를 분류하기 위해 논리 연산자를 추가하는 것이 문제입니다. 맥박의 지속 시간, 그 사이의 거리, 전체의 화음 등을 분석하십시오.
com.prehensible

모든 x 선의 피크 값을 확인하는 것만으로 주요 고조파를 찾는 것이 간단합니다. 그래서 패턴 서명 분석 프로그래밍을 사용하여 분석 할 그래프로 끝납니다. 숫자 진행을 비교하고 분류 할 때 당신이 고의적으로 사용하는 최고의 차별화 요소의 규칙을 그리십시오.
com.prehensible

답변:


7

1 단계

펄스 지속 시간보다 작은 프레임 크기를 사용하여 신호 의 STFT 를 계산합니다 . 이 프레임 크기는 여전히 f1, f2, f3 및 f4 사이의 충분한 주파수 식별을 제공한다고 가정합니다. 은 프레임 인덱스이고, 는 FFT 빈 인덱스입니다.m의 KS(m,k)mk

2 단계

각 STFT 프레임에 대해 YIN에 의해 ​​계산 된 DMF "dip"의 깊이와 같은 "피치 신뢰도"표시기와 함께 YIN과 같은 것을 사용하여 지배적 인 기본 주파수를 계산하십시오.

우리 부르 자 프레임에서 추정 지배적 F0 및 피치 신뢰 프레임에서 검출 .m의 V ( m ) mf(m)mv(m)m

데이터에 노이즈가없는 경우 자기 상관을 피치 추정기로 사용하고 자기 상관의 더 큰 2 차 피크와 피치 신뢰도 표시 로 의 비율을 사용하여 벗어날 수 있습니다 . 그러나 YIN은 구현하기가 저렴합니다.r0

FFT 프레임 의 총 신호 에너지 을 계산할 수도 있습니다 .me(m)m

3 단계

STFT 프레임 의 슬라이딩 윈도우를 고려하십시오 . 은 펄스 반복 시간보다 크고 신호 세그먼트의 일반적인 길이보다 5-10 배 작도록 선택됩니다 (예 : 신호 발생이 약 10 초 동안 지속되고 STFT 프레임 크기가 20ms 인 경우 ).M M = 50MMM=50

다음 기능을 추출하십시오.

  • σf(k) 는 시퀀스의 표준 편차(f(m))m[kM,k+M],v(m)>τ
  • σv(k) 는 시퀀스의 표준 편차(v(m))m[kM,k+M]
  • ( e ( m ) ) m [ k - M , k + M ]σe(k) 는 시퀀스의 표준 편차입니다(e(m))m[kM,k+M]

직관적 신호의 기본 음조 성분의 주파수 안정성을 측정 신호 "pitchiness"의 변화를 측정하고 신호의 진폭의 변화.σ v σ eσfσvσe

이것이 탐지의 기반이되는 기능입니다. 유형 1의 신호는 높은 (가변 피치)와 적당한 및 (안정한 피치 신호 강도)를 . 타입 2의 신호는 낮은 (고정 피치)와 높은 및 (가변 강도)를 . 유형 3의 신호는 낮은 (고정 피치)와 낮은 및 (고정 강도)를 .σ v σ e σ f σ v σ e σ f σ v σ eσfσvσeσfσvσeσfσvσe

훈련 데이터에서이 3 가지 기능을 계산하고 순진한 베이지안 분류기 (단지 가우스 분포)를 훈련시킵니다. 데이터가 얼마나 좋은지에 따라 분류기를 사용하지 않고 기능에 대한 손으로 정의 된 임계 값을 사용할 수도 있지만 권장하지는 않습니다.

4 단계

들어오는 데이터 스트림을 처리하려면 STFT를 계산하고 기능을 계산하며 STFT 프레임 의 각 창을 분류하십시오 .M

데이터와 분류 기가 좋으면 다음과 같이 표시됩니다.

1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 3

이것은 시작 및 종료 시간과 각 신호의 유형을 상당히 잘 구분합니다.

데이터에 노이즈가있는 경우 잘못된 분류 된 프레임이 있어야합니다.

1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 3, 2, 2, 1, 1, 1, 3, 1, 1, 1, 3, 3, 3, 2, 3, 3, 3

두 번째 경우와 같이 많은 문제가 발생하면 3 또는 5 개의 탐지 주변에있는 데이터에 모드 필터를 사용하십시오. 또는 HMM을 사용하십시오.

집에 메시지를

탐지의 기반이되는 것은 스펙트럼 기능이 아니라 신호 지속 시간과 동일한 규모의 창에 대한 스펙트럼 기능의 집계 된 시간 통계입니다. 이 문제는 실제로 두 가지 시간 척도에 대한 처리를 요구합니다. STFT 프레임은 매우 로컬 신호 특성 (진폭, 지배적 피치, 피치 강도)을 계산하는 STFT 프레임과 해당 신호 특성의 시간적 변동성을 엿볼 수있는 더 큰 창입니다.


HTK 등을 활용하려면 음성 인식 스타일을 수행 할 수도 있습니다. 어쿠스틱 모델 : 4 개의 전화 P1, P2, P3, P4 (f1에서 톤, f2에서 톤, f3에서 톤, f4에서 톤) ) + 1 기호 S는 침묵합니다. 전화 당 1 ~ 2 명의 가우시안. 신호 1에 대한 워드 모델 W1 : (P1 S P2 S P3 S P4 S) +. 신호 2에 대한 워드 모델 W2 : (P1 S) +. 신호 3에 대한 워드 모델 W3 : (P1) +. 문장 모델 : (W1 | W2 | W3) *. 유일한주의 사항은 음성 인식 도구 상자를 사용하는 경우 MFCC가 해상도가 낮고 피치에 구애되어 f1 / f2 / f3 / f4를 구분할 수 없기 때문에 기능 추출 프런트 엔드를 조정해야한다는 것입니다.
pichenettes

@pichenettes 감사합니다. 아주 좋은 답변입니다. 몇 가지 후속 조치가 있습니다. 1) 언급 한 'YIN'이란 무엇이며 'DMF'는 무엇입니까? 나는 구글을 통해 그들에게서 아무것도 찾을 수 없었다. 2) '피치 신뢰도'란 정확히 무엇입니까? 3) 자동 상관을 사용하여 피치 영역-시간 도메인 프레임 또는 프레임의 STFT의 자동 상관 관계를 찾을 수 있다고 언급했습니다. (피치 신뢰가 무엇인지 알지 못하기 때문에 이것을 이해하지 못합니다). (계속 ...)
Spacey

@pichenettes (계속) 4) 기능별 WINDOW PER WINDOW 만 있습니까? 그래서 당신은 (이 경우) 101 프레임 중 창 당 3 개의 std를 계산합니까? 이 경우 훈련 시간이 오면 3 차원 '포인트'가 101 프레임 이상의 3 std로 만들어졌습니다. 맞습니까? 5) 4 단계에서 1,1,1,2,2 등의 숫자가 있으면 각 숫자는 THAT 창을 어떻게 분류했는지에 해당합니다. 첫 번째 '1'은 -50에서 50까지의 프레임으로 구성된 창을 분류 한 것이고, -49에서 51까지의 프레임으로 구성된 창에서 두 번째 '1'은 맞습니까? (창은 매 1 프레임 씩 미끄러 져 움직입니다) ...
Spacey

@pichenettes 6) 마지막으로, 이것이 '경보'로 사용되어야한다고 언급 했어야하므로 signal-1 또는 signal-2가 있으면 알람이 울리지 만 알람이 울리지 않아야합니다. 아무것도 없습니다-아무것도 시도하지 않고 분류하기 전에 일치해야 할 임계 값이 없어야합니다. (예를 들어 배경 소음). (지금은 Naive Bayes Classifier에 대해서만 배우고 있으므로 다중 클래스인지는 모릅니다). 7) 사전에 많은 감사와 감사를드립니다! 수천 명의 사람들이 당신을 위해 찬성합니다! :-)
Spacey

1
1 / YIN은 음성 및 음악 신호를위한 클래식 피치 감지 알고리즘입니다. recherche.ircam.fr/equipes/pcm/cheveign/pss/2002_JASA_YIN.pdf . DMF는 피치 차이를위한 YIN과 같은 알고리즘에 의해 계산 된 수량 인 "차이 크기 함수"입니다. 2 / YIN과 같은 피치 감지 알고리즘은 기본 주파수의 추정치와 반환 된 피치가 정답 일 가능성을 나타내는 "신뢰도 점수"를 산출합니다. 시끄러운 신호 또는 여러 피치를 나타내는 신호에서는 이것이 낮고 순수한 사인파에서는 매우 높습니다.
pichenettes

3

다른 방법은 4 개의 헤테로 다인 검출기 일 수 있습니다. 입력 신호에 4 개의 주파수를 가진 로컬 발진기와 곱해진 출력을 저역 통과 필터로 곱하십시오. 각 출력은 사진의 세로 선을 나타냅니다. 4 개의 주파수 각각에서 시간의 함수로 출력을 얻습니다. 저역 통과 필터를 사용하면 허용하려는 주파수 편차의 양과 출력 변경 속도 (예 : 모서리의 선명도)를 다이얼 할 수 있습니다.

신호가 상당히 시끄러운 경우에도 잘 작동합니다.


나는이 방법에 대해 생각하고 있었다-스펙트로 그램 등을 사용하여 패스 팬에서 직접 작업하는 것 보다이 방법의 장점 (혼합 및 LPF'ing)을 보셨습니까?
Spacey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.