Spaces:
Running
Running
import os | |
import numpy as np | |
import torch | |
import crepe | |
from scipy.io import wavfile | |
def audio(filename): | |
"""Load audio from disk""" | |
sample_rate, audio = wavfile.read(filename) | |
# Convert to float32 | |
if audio.dtype == np.int16: | |
audio = audio.astype(np.float32) / np.iinfo(np.int16).max | |
# PyTorch is not compatible with non-writeable arrays, so we make a copy | |
return torch.tensor(np.copy(audio))[None], sample_rate | |
def model(device, capacity='full'): | |
"""Preloads model from disk""" | |
# Bind model and capacity | |
crepe.infer.capacity = capacity | |
crepe.infer.model = crepe.Crepe(capacity) | |
# Load weights | |
file = os.path.join(os.path.dirname(__file__), 'assets', f'{capacity}.pth') | |
crepe.infer.model.load_state_dict( | |
torch.load(file, map_location=device)) | |
# Place on device | |
crepe.infer.model = crepe.infer.model.to(torch.device(device)) | |
# Eval mode | |
crepe.infer.model.eval() | |