Saturday, April 11, 2020

Q&A. 음악 유사도를 이용한 추천엔진 개발


질문


프로젝트로 음악의 특징 유사도를 이용한 내용기반 음악 추천시스템을 만드려 하고 있고, 현재 논문들을 서베이중입니다.
그런데, 음악의 어떤 특징을 추출해야 할지가 고민입니다. 널리 알려진 방법으로는 MFCC를 추출하여 DTW 기법을 활용하여 유사도 계산을 하는 것인데요, 이것이 과연 제 주제에 적합한지 아직 직관이 없습니다.
설문조사 결과, 두 음악이 유사한지를 판단하는 기준 중 가장 많은 표를 받았던 게 음악의 멜로디와 빠르기였는데, MFCC가 이러한 정보를 담을 수 있는지도 모르겠습니다

답변


mfcc에는 그런 정보가 거의 없습니다. 템포는 상대적으로 쉽게 추출가능하지만 (librosa 등) 멜로디는 추출과 유사성 비교 둘 다 까다롭습니다. 어느정도의 성능을 원하시는지 모르겠지만 유사한 곡을 찾는 성능이 프로젝트에서 제일 중요한 핵심이 아니라면 mfcc 기반으로 하셔도 뭔가 작동하긴 할겁니다.


추가 질문


국내 논문을 보던중에 크로마레벨표현으로 멜로디 유사도를 구현한 논문을 읽어봤습니다. 여기서는 MRR이 0.713으로 수치상 꽤 높은 값이 나왔는데, 혹시 멜로디 추출과 유사성 비교가 까다롭다고 하신 이유를 알 수 있을까요?

답변


mfcc는 수식으로 정확하게 정의되고 그 특징이 잘 알려져있죠. 그리고 지금 보니 본문에서 DTW를 활용한다고 하셨는데 그렇다면 음악을 mfcc의 수열로 나타내고 그 수열의 유사성이 음악의 유사성을 나타낸다는 가정일텐데, 더 흔하게는 주어진 음악의 시간축에서의 평균과 표준편차를 씁니다. 이렇게하면 성능이 대단히 뛰어나지는 않겠지만 각 음악 신호가 갖는 소리로서의 특징(음색)이 반영된 추천엔진으로 작동을 합니다. 그리고 음색은 음악을 구성하는 악기나 장르와 관련이 깊으므로 추천엔진이 엄청나게 취향을 저격해주진 않겠지만 크게 실패하지도 않겠죠.
반면 멜로디를 추출하고 거기에서 유사성을 비교한다면, 우선 멜로디가 정확하게 추출된다는 가정이 필요하고 (대충 되긴 합니다만) 여기에서는 정말로 멜로디라는 시계열 데이터가 유사한지 찾아내는 잣대가 필요합니다. 멜로디는 곡 전체를 아우르는 시계열 데이터인데 그렇다면 예컨대 4분짜리 곡 전체의 멜로디가 다 비슷해야 된다는것인지 (물론 그건 아니겠죠), 아니면 일부가 비슷하면 된다는것인지, 그렇다면 일부만 비슷한 멜로디를 어떻게 찾아낼 수 있을지 (메트릭을 잘 디자인해야하고) 등등 문제가 생각나네요. 결정적으로, 유저들은 멜로디가 비슷하면 비슷한 음악이라고는 응답하긴 했지만 글쎄요, 그게 어떤 유사성을 의미하는지 알기도 어렵고, 전혀 다른 장르인데 멜로디가 비슷하면 정말로 그 멜로디의 유사성이 호불호의 중요한 기준이 된다고 말할수있을지 회의적입니다. 따라서 이런 불확실성을 해소하는 것이 프로젝트의 목적이라면 얼마든지 재미있는 연구를 진행할 수 있습니다. 그렇지 않다면 굳이 시간을 들일 필요가 없구요.


2 comments:

  1. 음악 저작권 입장에서 표절을 나누는 기준은 멜로디와 코드(악보) 인데 그중에 멜로디가 비중이 높습니다.
    보통은 음악에서 코드는 비슷한 경우가 많다고 하니 이를 기준으로 하면 어떨까 싶습니다.

    ReplyDelete