[ANT5015정리] #1 Autoencoder

Jude's Sound Lab·2022년 6월 16일
0

Note for late 2022

목록 보기
2/11

전체 코드는 아래의 링크를 참조
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'))
profile
chords & code // harmony with structure

0개의 댓글