본문 바로가기
Framework and Tool/audio recognition

음원 인식의 개요

by ocwokocw 2022. 8. 6.

- 출처: 2002. "A Review of Algorithms for Audio Fingerprinting" 저자: P.cano, E.Batle, T. kaler, J.Haitsma 를 기반으로 작성하였습니다.

- 출처: "An Industrial-Strength Audio Search Algorithm" 저자: Avery Li-Chun Wang
- 출처: "A Highly Robust Audio Fingerprinting System" 저자: philips research
 
 

 

- 들어가기 전에

필자는 신호처리나 음원 인식에 대한 경력이 전무하다. 음원 신호를 디지털 신호로 변환하는 과정만 하더라도 1초에 몇번 신호를 측정할것이냐라는 sampling rate에 대한 개념, sampling rate 수치를 설정할 때 이해하고 있어야 하는 나이퀴스트 이론, FFT, FFT의 window size, overlap 비율, window function 등과 같은 이해가 있어야 오픈소스를 사용할 수 있다. 오픈소스를 동작시키는것 자체는 어렵지 않지만 위에서 언급한 기본적인 개념을 알아야 구축하고자 하는 시스템에 따라 parameter들을 어떻게  제대로 설정할 수 있다.
 
이 글은 프로젝트를 진행하면서 견고한 음원인식 시스템을 위해 어떤 전처리, 변환, 특징점 추출, 후처리를 적용 및 tuning 할 지에 대한 아이디어를 정리하는데에 목적이 있으므로 음원 인식에 대한 기본적인 이해나 아주 상세한 구현에 대한 부분을 원한다면 뒤로가기를 누르기 바란다.

- 개요

이전에는 음원을 인식할 때 watermark, file hash 등 사용하거나 간단하게 digital 화된 파형을 직접 비교하는것과 같은 방법이 있지만, 이런 방법은 음원의 pitch를 변경하거나 tempo를 조금만 조절해도 hash 값이 달라지기 때문에 견고하지 못하다.
 
그래서 등장하는것이 fingerprinting 개념이다. 음원 인식을 구축할 때 가장 쉬운 접근법으로는 유명한 dejavu project를 이용하는것인데, 이는 Shazam팀의 Wang이 저술한 아주 유명한 논문("An Industrial-Strength Audio Search Algorithm")에 기반한 방법을 이용하고 있다.물론 이 외에도 음원 인식을 하는 방법은 아주 다양하다.
 
방법이 다양하기는 하지만 음원 fingerprinting 이라면 아래 특징들, 즉 요구사항들을 만족해야 한다.
 
  • 원본 wav 형인지 압축된 mp3, aac 형인지에 상관없이 압축수준 및 형태에 따라 인식률이 좌우되지 않음
  • 전송 channel의 간섭 및 왜곡(distortion)에 좌우되지 않음
  • 몇 초 이내로 판별이 가능
  • 배경 소음 및 tempo 조절에도 인식되는 견고함
  • 계산의 효율성(매칭 속도)
 
방법은 다양하지만 음원을 인식하기 위해 어느정도 전반적인 과정의 틀(framework)을 거치는데 이에 대해 알아보자.
 
 

- Framework overview

보통 음원 인식은 크게 2 가지 과정을 거치는데 fingerprint 추출과 matching 이다.
 
 
 
fingerprint를 추출할 때에는 단순히 디지털 신호를 그대로 사용해서 추출하는게 아니라 인간의 지각적인 특성을 가미하여 변환을 한 다음 추출해준다. 이런 특성을 가미하면 견고성을 더해주고 왜곡에도 어느정도 내성을 갖게 된다. 음원의 fingerprint를 잘 추출했다면 아래와 같은 특성을 지니게 된다.
 
  • fingerprint간의 식별성
  • 왜곡에 대한 불변성
  • 압축성
  • 계산의 간결함
 
물론 위의 특성을 모두 만족하는 최상의 시나리오는 힘들다. 모든 결정이 trade-off 이듯이 음원 인식에서는 간결성 vs 정보의 손실 간의 조화를 맞추어야 한다.
 
위의 그림에서 언급된 음원 인식 단계에서 하는 일을 간략히 표현하면 아래와 같다.
 
  • Front-end: 음원의 신호를 측정 set로 변경한다.
  • Modeling: fingerprint의 표현을 구성(vector, code book, HMM sequence)
  • Search: fingerprint에 대한 distance와 search
  • Hypothesis testing: 음원의 얼마나 동일한지 판단

- Front-end

front-end 에서는 fingerprint modeling에 전달하기 위해 음성 신호를 변환한다. 이때 여러가지 과정을 거치는데 차원 축소, 인간의 지각력을 고려한 특성 가미, 왜곡에 대한 불변성과 견고성 향상등을 위함이다.
 
 
 
전처리(pre-processing) 에서는 음원을 디지털화하고 down-mix를 수행한다. 우리가 일반적으로 듣는 음원은 음원 인식 시스템이 처리하기에 상대적으로 2 channel(stereo), 44.1khz의 고품질 이다. 이를 그대로 사용하는 음원 인식 시스템도 있겠지만 보통은 1 channel(mono), 5khz ~ 44.1khz 까지 다양하다. 또한 음원이 아닌 speech 인식에서는 사람의 발성 특성상 고주파의 에너지가 적어서 이를 고려한 pre-emphasis와 같은 전처리를 하기도 한다.
 
음원을 처리할 때 중요한 핵심적인 가정이 하나 있는데 "수 ms 정도의 시간 동안 신호가 일정"함을 보장해주는것이 중요하다. 그래서 Framing & Overlap 단계에서는 신호를 frame으로 나눈다. 이때 단순하게 자르면 frame의 경계선에서 불연속성을 가지기 때문에 frame마다 중첩해주는 overlap 비율을 설정해야 한다. 또한 window도 적용해준다.
 
Transform 단계에 들어서야 비로소 본격적인 변환이라고할 수 있다. 이 단계에서는 음원 신호를 time-frequency(주파수) 영역으로 변환한다. 보통은 FFT(Fast fourier transform)을 많이 사용하며 MCLT, DFT 등과 같이 다른 방법도 있다.
 
그 후 특징점을 추출한다. 이 단계에서 사용하는 알고리즘은 상당히 다양하다. 이런 알고리즘들은 차원을 축소하고 동시에 왜곡에 대한 불변성을 높인다. 보통 인간의 지각적 특성을 고려하기 위해 많은 시스템들이 spectrum의 critical-band 분석을 수행한다. 이 critical-band도 1 가지 방법만 존재하는것이 아니라 아래 그림과 같이 상당히 다양한 방법이 존재한다.
 
 
 
음원의 특징을 추출하고 나면 후처리 작업을 진행한다. 앞의 단계까지는 대부분 절대적인 측정값이라고 할 수 있다. 후처리에서는 신호의 시간적 변화를 더 특성화하기 위한 고차 시간 도함수를 모델에 추가한다. 도함수를 적용하면 noise가 증폭되는 경향이 있지만 천천히 변하는 channel에서 생성된 왜곡을 필터링해준다. 또한 낮은 분해능 양자화(quantization)를 적용하는데 이는 왜곡을 해결하고 정규화하며 견고성을 향상시켜준다.

- Fingerprint model

앞의 단계까지 음원에 대한 특징을 추출 했다면 이를 이용하여 음원을 인식할 수 있는 일종의 지문, 바로 fingerprint를 추출하는 단계이다. 이 단계에서 사용하는 방법도 특징을 추출하는 단계만큼이나 각기 다양하다. 어떻게 보면 fingerprint를 추출하는 핵심단계라고 볼 수 있기 때문이다. frame 단위로 계산된 특징 vector에서 fingerprint를 추출한다.
 
예를 들면 shazam의 경우 peak를 추출하고 두 peak 들의 주파수1, 주파수2, 두 peak간의 time diff. 3가지 요소로 hash를 생성한다. philipse의 경우 frame간의 bank의 에너지의 차 상대비교를 통해 1, 0을 이어붙인 hash를 생성한다. 이 외에도 상당히 다양한 방법이 존재한다.
 

- Search

음원을 검색할때에는 2 가지를 고려해야 한다. 하나는 distance이고 다른 하나는 searching 이다.
 
여기서 말하는 distance란 서로 다른 정도가 어느 크냐에 대한 기준이다. vector의 sequence를 비교할 때에는 상관관계를 갖는것이 일반적이다. 만약 길이가 다르면 유클리드 거리가 사용된다. vector의 sequence가 양자화된 경우라면 맨헤튼 거리가 사용되며, 이진화 되었다면 해밍거리가 사용된다.
 
기본적으로 음원을 인식할 때 가장 큰 문제점이 되는 부분중 하나가 입력으로 들어온 라벨링되지 않은 정체불명의 음원을 수백만개의 fingerprint와 비교하는 부분이다. searching의 방법은 fingerprint의 표현력에 따라 달라진다. 
 
예를 들어 PRH(philips robust hashing)의 경우 만약 동일한 음원이 있다면 3초 정도의 음원에 해당하는 일정 개수의 frame에 대해 최소한 1개의 fingerprint가 정확한 exact matching이 된다고 가정한다. 이를 후보군으로 두고 sample의 position과 DB에 저장된 음원의 position을 고려하여 미리 설정한 frame수에 대해 hamming distance 를 구하여 Bit 오류 비율이 일정 threshold를 넘지 않다면 동일 음원으로 간주한다.
 
shazam의 경우 fingerprint가 주파수1, 주파수2, time delta의 3요소로 hashing을 만들기 때문에 단순히 fingerprint가 일치하는 수만 고려한다.
 
 
 

'Framework and Tool > audio recognition' 카테고리의 다른 글

Philips Robust Hashing  (0) 2023.08.19

댓글