Speech_Enhancement_Demo / custom_scaler.py
DurreSudoku's picture
Upload folder using huggingface_hub
68d7781 verified
import torch
class min_max_scaler():
def __init__(self, upper_bound=1, lower_bound=0):
self.upper = upper_bound
self.lower = lower_bound
self.minimum = torch.ones(1) * torch.inf
self.maximum = - torch.ones(1) *torch.inf
def fit(self, set_maximum=0.0, set_minimum=-100.0):
"""Find min and max of given subset OR set min and max manually.
Since dB-spectrograms are on the scale [-100, 0] by default, default values are set to those values.
Args:
set_maximum (float, optional): set maximum value manually. Defaults to 0.0.
set_minimum (float, optional): set minimum value manually. Defaults to -100.0.
Returns:
None: None
"""
if set_minimum is not None and set_maximum is not None:
self.minimum = set_minimum
self.maximum = set_maximum
return None
def transform(self, spectrogram):
if self.minimum == torch.inf:
raise ValueError("Cannot transform before scaler is fitted with min-max-values")
return (self.upper - self.lower) * (spectrogram - self.minimum) / (self.maximum - self.minimum) + self.lower
def inverse_transform(self, spectrogram):
if self.minimum == torch.inf:
raise ValueError("Cannot inverse transform before scaler is fitted with min-max-values")
return (spectrogram - self.lower) * (self.maximum - self.minimum) / (self.upper - self.lower) + self.minimum