시끄러운 .wav 파일에서 드럼 bpm 감지


12

다음 문제를 해결하기위한 알고리즘을 찾고 있습니다. 잡음이있는 .wav 사운드 캡처 (마이크의 바람 + 마찰 소음)를 고려할 때 소프트 드럼 비트의 BPM을 감지하는 방법은 무엇입니까?

나는 주제를 인터넷 검색하려고 시도했지만 분석 및 지문 ID 생성을 위해 많은 양의 mp3 관련 소프트웨어로 인해 결과가 상당히 좋지 않습니다. 그들 중 누구도 실제로 그것을 수행하는 방법에 대한 정보를 제공하지 않습니다.

노이즈를 제거하는 알고리즘을 알고 있지만 여전히 BPM 감지 문제가 있습니다. 그리고 BPM 문제가 어떻게 해결되는지에 따라, 잡음을 제거 할 필요조차 없습니다 (드럼이 더 낮은 주파수에 있고 잡음이 더 높기 때문에 간단한 저역 통과가 충분한 전처리 일 수 있습니다).


1
이것은 내 코골이 감지 문제 와 비슷합니다 .
Daniel R은

답변:


13

드럼 비트가 상대적으로 강한 경우 작동하는 한 가지 방법은 파형의 STFT 크기를 취한 다음 시간 차원에서만 자동 상관 관계를 지정하는 것입니다. 자동 상관 함수의 최고점은 비트 또는 이의 다중입니다.

이는 신호를 여러 다른 주파수 대역으로 분리하여 각각의 진폭 엔벨로프를 찾고 각 엔벨로프를 자동 상관시킨 다음 합산하는 것과 같습니다. 잡음과 음악의 다른 부분은 상호 상관 조작에 의해 평균화됩니다.

드럼 비트는 여러 주파수 (수직 라인)에서 짧은 수명의 사운드를 생성하는 반면 음악의 다른 부분은 소수의 주파수 (수평 라인)로 오래 지속되며 노이즈는 오래 지속되지만 모든 주파수에서 임의적입니다. STFT를 보면 비트 반복을 볼 수 있습니다.

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

학교 프로젝트에서 전체 음악 파일에 대한 단일 BPM 값을 찾기 위해이를 생각해 냈지만 BPM을 변경하여 오디오 스트림에도 적용 할 수 있습니다. 찾고있는 BPM 기간의 두 배 이상인 청크를 처리해야합니다.


FFT는 주기적 신호를 찾는 데 일반적으로 유용한 기술입니다. 신호가 원하는만큼 규칙적이지 않으면 약간 까다로울 수 있습니다. 드러머는 노래 과정에서 속도가 느려지거나 느려질 수 있습니다 (고의적이든 아니든). 이것은 FFT 결과를 망칠 수 있습니다 주파수 영역에서.
Rethunk

1
@Rethunk : BPM이 시간이 지남에 따라 변경되면이를 덩어리 단위로 수행하고 각 BPM을 찾아야합니다.
endolith 2012 년

비트는 일반적으로 음악과 관련이 있으며이 그림에서 음악의 또 다른 부분 인 가로선은 비트의 높이를 변경하는 것을 볼 수 있습니다. 따라서 기본적으로 비트 (수직), 음표 (수평) 및 노이즈 (나머지)의 세 가지 에너지 기여가 있습니다.
MSalters

@MSalters : 노트도 상관이 있습니다.
endolith

4

자동 상관은 확실히 좋은 기본 방법입니다. 이를 더욱 강화하기 위해 수행 할 수있는 몇 가지 작업이 있습니다.

  1. 드럼의 주파수 스펙트럼을 알고 있으면 드럼과 관련된 주파수 만 유지되도록 신호를 대역 통과 필터링합니다. 드럼에 따라 이것은 상당히 좁을 수 있으며 대부분의 소음을 제거해야합니다.
  2. 그런 다음 드럼 비트의 길이와 대략 일치하는 시간 상수를 사용하여 신호의 시간 영역 엔벨로프 ( "손실 피크"가 가장 쉬운 방법)를 계산하십시오.
  3. 그런 다음 자동 상관 관계를 수행하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.