다음과 같이 데이터를 데이터셋을 훈련용(train)과 검증용(val)으로 나누는 비율을 정의합니다. 여기서는 80%를 훈련용, 20%를 검증용으로 나눈다.
train_dataset : dataset_pair 리스트의 처음 80% 데이터를 훈련용으로 할당한다.
val_dataset : dataset_pair 리스트의 나머지 20% 데이터를 검증용으로 할당한다.
그 후 json 파일로 저장을 한뒤 파일들을 불러와 데이터셋의 크기를 출력해 데이터의 크기를 알아본다.
이 클래스는 PyTorch의 Dataset 클래스를 상속받아 새로운 데이터셋 클래스를 정의한다.
data_list : 오디오 파일 경로와 레이블 정보를 담은 리스트이다.
audio_len : 각 오디오 샘플의 길이 (초 단위)이다.
mfcc_transform : 오디오 데이터를 MFCC(Mel Frequency Cepstral Coefficients)로 변환하는 객체이며, sample_rate=16000은 샘플링 레이트가 16kHz임을 의미하고, n_mfcc=40은 40개의 MFCC 계수를 추출함을 의미한다.
여기서 MFCC란?
MFCC는 오디오 신호에서 추출할 수 있는 feature로, 소리의 고유한 특징을 나타내는 수치이다.
https://brightwon.tistory.com/11
MFCC(Mel-Frequency Cepstral Coefficient) 이해하기
이 글은 음성/음악 등 오디오 신호 처리 분야에서 널리 쓰이는 특징값(Feature) 중 하나인 MFCC(Mel-Frequency Cepstral Coefficient)에 대해 정리한 글입니다. 알고리즘 구현보다는 MFCC의 전반적인 이해와 실
brightwon.tistory.com
- __getitem__: 인덱스를 받아서 해당 위치의 오디오 샘플 두 개 (audio1_path, audio2_path)와 레이블을 가져온다.
- 오디오 데이터를 crop_and_pad 메서드를 통해 고정된 길이로 자르고 패딩한다
- waveform을 PyTorch 텐서로 변환한 뒤 MFCC 변환을 수행한다.
- 변환된 MFCC 데이터를 정규화(standardization) 한다.
- 샘플링 레이트(sr1, sr2)가 16kHz인지 확인하고, 그렇지 않으면 에러 메시지를 출력한다.두 개의 MFCC 변환 결과(mfcc1, mfcc2)와 레이블을 반환한다.