전체 코드는 아래의 링크를 참조
https://github.com/jdasam/ant5015-2022Spring/blob/d94d104ef43b16434a6eaa38d0a27696b13cce2e/11th_week_Autoencoder.ipynb
import torch
import torch.nn as nn
import torchaudio
from pathlib import Path
import pandas as pd
import IPython.display as ipd
from torch.utils.data import DataLoader
from tqdm.auto import tqdm
import matplotlib.pyplot as plt
'''
Let's only use testset
이것이 무슨 데이터인지 조사가 필요하다.
'''
!wget http://download.magenta.tensorflow.org/datasets/nsynth/nsynth-test.jsonwav.tar.gz
# 압축을 풀어주고
!tar -xf nsynth-test.jsonwav.tar.gz
synth 데이터를 path 모듈을 활용해서 불러온뒤 idx로 적절한 파일을 찾아내는 클래스를 만들어준다.
class NSynthDataSet:
def __init__(self, path):
if isinstance(path, str):
path = Path(path)
print('yes str')
else:
print('no str')
self.path = path
json_path = path / "examples.json"
self.meta = pd.read_json(json_path).to_dict()
self.file_list = list(self.path.rglob('*.wav'))
def __getitem__(self, idx):
fn = self.file_list[idx]
audio, sr = torchaudio.load(fn)
pitch = self.meta[fn.stem]['pitch']
pitch_vec = torch.zeros(120)
pitch_vec[pitch-1] = 1
return audio, pitch_vec
def __len__(self):
return len(self.meta.keys())
dataset = NSynthDataSet(Path('nsynth-test'))