태그 보관물: Music

FMA: A Dataset For Music Analysis

다양한 음악 관련 연구에 사용할 수 있는 새로운 데이터셋 FMA가 공개되었습니다. 이 데이터셋은 68개의 장르에 걸쳐 77,643개의 노래에서 30초씩 샘플링한 mp3 파일입니다. 음악 데이터의 소스는 FMA(Free Music Archive)가 보유한 8만개가 넘는 음악 중에 최소한 100개 이상의 샘플을 가진 장르만을 선택했습니다. 데이터는 노래의 중간 부분 30초를  44,100Hz, 128kb/s, 스테레오로 샘플링했습니다. The Million Song Dataset 보다 노래의 개수는 적지만 전처리 되지 않은 원본 오디오 데이터라는 점을 강조하고 있습니다. 데이터를 다운 받는 방법과 사용법에 대한 깃허브를 참고하세요.

이 데이터셋은 세가지로 나뉘어져 있습니다. 77,643개의 노래를 모두 샘플링한 fma_large.zip(약 90기가)은 곧 공개될 예정이라고 합니다. 20개의 장르에서 14,511개의 노래를 샘플링한 fma_medium.zip(약 12기가) 과 10개의 장르에서 동일하게 400개씩 샘플링한 fma_small.zip(약 3기가)은 바로 다운받을 수 있습니다. 다운 받은 폴더에는 json 파일이 샘플링한 노래에 대한 아티스트, 제목, 장르, 재생횟수 등의 메타 데이터를 가지고 있습니다. 간단한 사용법을 보여주는 주피터 노트북에 메타 데이터에 대해 자세히 나와 있습니다.

머신 러닝이나 딥러닝을 위한 이미지 데이터셋으로는 ImageNet이 널리 사용되고 있는데 반해 음악쪽의 데이터는 여러 제약사항이 많아 이 데이터셋을 만들게 되었다고 합니다. 이 데이터셋의 페이퍼(1612.01840)에서 데이터에 대한 자세한 설명과 다른 음악 데이터셋들을 간단하게 요약하고 있습니다.

Urban Sound Classification

뉴욕 대학교 MARL(Music and Audio Research Lab)에서 2014 년에 공개한 UrbanSound8K 데이터를 이용하여 텐서플로우를 사용해 사운드를 분류 모델을 만들어 보았습니다. 텐서플로우 코드는 아퀴브 사이드(Aaqib Saeed)의 블로그를 참고하였습니다.

UrbanSound8K 데이터는 모두 10 가지 종류의 소리를 4 초 가량 녹음한 것으로 8 천개가 넘는 wav 파일들 입니다. 소리의 종류는 ‘air_conditioner’, ‘car_horn’, ‘children_playing’, ‘dog_bark’, ‘drilling’, ‘engine_idling’, ‘gun_shot’, ‘jackhammer’, ‘siren’, ‘street_music’ 입니다. 압축을 풀기 전의 데이터 사이즈가 5 GB 가 넘습니다. 이 데이터를 받기 위해서는 깃허브에서 다운로드 주소를 이용해 다운받을 수 있지만 사용 목적에 대해 알려달라고 합니다.

먼저 wav 파일을 이용해서 피처를 뽑아 내야합니다. 아퀴브 사이드가 사용한 방법은 사운드 분석 파이썬 라이브러리인 librosa 를 이용해서 특성을 추출하였습니다. 사용된 특성은 mfcc(Mel-frequency cepstral coefficients), chroma_stft(chromagram from a waveform or power spectrogram), melspectrogram(Mel-scaled power spectrogram), spectral_contrast(spectral contrast), tonnetz(tonal centroid features) 입니다. 이 데이터를 모두 행으로 늘여 놓으면 총 193 개의 입력 데이터가 만들어 집니다.

계속 읽기

바흐가 900개의 뉴런만 가지고 있었다면..

bach_ai

뉴럴 네트워크로 피아노 곡을 만든 소스가 깃허브에 올라왔습니다. 파이브레인(PyBrain)을 사용하여 개발되었고 트레이닝 데이터로는 바흐의 음악 수백곡을 사용했다고 합니다. 구성된 LSTM 리커런트 뉴럴 네트워크는 30개의 레이어에 각각 30개의 뉴런을 사용했다고 합니다. 만든 노래는 이곳에서 직접 들어 볼 수 있습니다. 읽을 것도 볼 것도 많지만 여력이 된다면 텐서플로우로 쫓아가 보도록 하겠습니다.