mirror of https://github.com/coqui-ai/TTS.git
68 lines
1.8 KiB
Python
68 lines
1.8 KiB
Python
import numpy as np
|
|
|
|
|
|
def _pad_data(x, length):
|
|
_pad = 0
|
|
assert x.ndim == 1
|
|
return np.pad(x, (0, length - x.shape[0]), mode="constant", constant_values=_pad)
|
|
|
|
|
|
def prepare_data(inputs):
|
|
max_len = max((len(x) for x in inputs))
|
|
return np.stack([_pad_data(x, max_len) for x in inputs])
|
|
|
|
|
|
def _pad_tensor(x, length):
|
|
_pad = 0.0
|
|
assert x.ndim == 2
|
|
x = np.pad(x, [[0, 0], [0, length - x.shape[1]]], mode="constant", constant_values=_pad)
|
|
return x
|
|
|
|
|
|
def prepare_tensor(inputs, out_steps):
|
|
max_len = max((x.shape[1] for x in inputs))
|
|
remainder = max_len % out_steps
|
|
pad_len = max_len + (out_steps - remainder) if remainder > 0 else max_len
|
|
return np.stack([_pad_tensor(x, pad_len) for x in inputs])
|
|
|
|
|
|
def _pad_stop_target(x, length):
|
|
_pad = 0.0
|
|
assert x.ndim == 1
|
|
return np.pad(x, (0, length - x.shape[0]), mode="constant", constant_values=_pad)
|
|
|
|
|
|
def prepare_stop_target(inputs, out_steps):
|
|
"""Pad row vectors with 1."""
|
|
max_len = max((x.shape[0] for x in inputs))
|
|
remainder = max_len % out_steps
|
|
pad_len = max_len + (out_steps - remainder) if remainder > 0 else max_len
|
|
return np.stack([_pad_stop_target(x, pad_len) for x in inputs])
|
|
|
|
|
|
def pad_per_step(inputs, pad_len):
|
|
return np.pad(inputs, [[0, 0], [0, 0], [0, pad_len]], mode="constant", constant_values=0.0)
|
|
|
|
|
|
# pylint: disable=attribute-defined-outside-init
|
|
class StandardScaler:
|
|
def set_stats(self, mean, scale):
|
|
self.mean_ = mean
|
|
self.scale_ = scale
|
|
|
|
def reset_stats(self):
|
|
delattr(self, "mean_")
|
|
delattr(self, "scale_")
|
|
|
|
def transform(self, X):
|
|
X = np.asarray(X)
|
|
X -= self.mean_
|
|
X /= self.scale_
|
|
return X
|
|
|
|
def inverse_transform(self, X):
|
|
X = np.asarray(X)
|
|
X *= self.scale_
|
|
X += self.mean_
|
|
return X
|