DATASET_DIR
: 데이터셋이 있는 폴더의 경로를DATASET_DIR
에 입력CONFIG_JSONS
: 각 장르와 악기에 대한 코드와 분류를 서로 mapping한 json 파일을 모아둔 폴더. 이 repository를 clone 하여 그대로 사용한다면 바꾸지 않아도 된다.STD_JSON
: key값이 다른 json들과 다르지 않으면서, 최대한 모든 key를 포함하는 json 파일을 선정한다. 여기서는single_tonguing_cd
,tempo
,lyrics
모두에 대해 annotation을 가지는 AP_C11_01566.json을 선정했다.
# dataset이 있는 directory의 경로
DATASET_DIR = "./221011"
# 분야, 악기 관련 코드에 대한 json파일들이 있는 directory의 경로
CONFIG_JSONS = "./classJson"
# json 파일의 무결성을 체크할때 비교기준으로 사용할 파일
STD_JSON = os.path.join(DATASET_DIR, "AP_C11_01566.json")
- 이때 json의 무결성이 지켜지지 않은 경우의 에러는 터미널에 출력한다.
- json에 기록된 재생시간, sample rate, bit depth(wav의 subtype), channel 수가 wav파일과 일치하는지 확인한다.
- json에 기록된 재생시간과 wav의 실제 재생시간을 비교할때, 허용 가능한 차이를
cfg.py
의DURATION_TOLERANCE
변수로 설정한다. - wav 파일 자체의 문제로 열리지 않는 경우의 에러는 터미널에 출력한다.
- json에 기록된 tempo가 mid 파일의 bpm과 일치하는지 확인한다.
- json에 기록된 tempo와 mid 파일의 bpm 차이를 얼마나 허용할 것인지는 설정파일
cfg.py
의BPM_TOLERANCE
변수로 설정한다.
- Windows에서 실행할 경우 update_table.bat을 실행시킨다.
- Linux 또는 git bash 에서 실행할 경우에는 update_table.sh를 실행시킨다.
- 또는 update_time_table.py, update_error_table.py, update_count_table.py 를 각각 실행시켜도 된다.
- 누락 파일 목록 : 하나의 데이터에 대해 wav, json, mid 파일이 모두 있어야 누락되지 않은 것으로 간주한다. 밑의 예시는 AP_F02_00332.wav, AP_F02_00332.mid 는 존재하지만 AP_F02_00332.json은 존재하지 않는 경우
- 에러 json파일 목록 : key 값이 다른 json파일들의 형식과 다른 경우. check_integrity.ipynb 에서 확인한 결과와 동일하다.
다음과 같은 에러가 발생하는 경우 터미널에 에러를 출력하고, count 집계에 반영하지 않았다.
- json 키값이 다른 json 파일들과 다르거나 누락된 경우
- json에 기록된 beat(장단), mode(음조직), singleTonguing(시김새) 코드가 잘못된 경우
다음과 같은 에러가 발생하는 경우 터미널에 에러를 출력하고, time 집계에 반영하지 않았다.
- json 파일에 대응되는 wav 파일이 존재하지 않는 경우
- json 파일에 필요한 key 값이 없는 경우
- json에 기록된 beat(장단), mode(음조직), singleTonguing(시김새) 코드가 잘못된 경우
- wav 파일이 열리지 않는 경우
- 위에서 cannot readable은 wav 파일이 읽히지 않는 경우이고, KeyError에 의한 오류메시지는 별도로 표시하였다. json 형식이 다른 파일에서 KeyError가 발생한다.