# Path: reservoir_nn/typing/types.py



import abc
import textwrap
import attr
import tensorflow as tf
from typing import Callable, Optional, Sequence, Tuple, Union
from reservoir_nn.typing import types
        upper_edge_hertz=7500.0),
      ScaleAudio(vmax=1),
      StridedWindow(sequence_length=1, sequence_stride=1, axis=-2),
      FlattenSpectrogram(),
    ]),
    OneHotLabel(num_classes=11)
  ], num_parallel_calls=tf.data.experimental.AUTOTUNE, deterministic=True)
])
```
"""
# Lint as: python3


AUTOTUNE = tf.data.experimental.AUTOTUNE


class DatasetTransform(abc.ABC):
  """Base class for transformations that operate on `tf.data.Dataset`s."""

  def __call__(self, dataset: tf.data.Dataset) -> tf.data.Dataset:
    return self.call(dataset)

  @abc.abstractmethod
  def call(self, dataset: tf.data.Dataset) -> tf.data.Dataset:
    return dataset


class TensorTransform(abc.ABC):
  """Base class for transformations that operate on `tf.Tensor`s."""


# Path: reservoir_nn/typing/types.py



# Path: reservoir_nn/utils/preprocessing.py
import abc
import textwrap
import attr
import tensorflow as tf
from typing import Callable, Optional, Sequence, Tuple, Union
from reservoir_nn.typing import types

        upper_edge_hertz=7500.0),
      ScaleAudio(vmax=1),
      StridedWindow(sequence_length=1, sequence_stride=1, axis=-2),
      FlattenSpectrogram(),
    ]),
    OneHotLabel(num_classes=11)
  ], num_parallel_calls=tf.data.experimental.AUTOTUNE, deterministic=True)
])
```
"""
# Lint as: python3


AUTOTUNE = tf.data.experimental.AUTOTUNE


class DatasetTransform(abc.ABC):
  """Base class for transformations that operate on `tf.data.Dataset`s."""

  def __call__(self, dataset: tf.data.Dataset) -> tf.data.Dataset:
    return self.call(dataset)

  @abc.abstractmethod
  def call(self, dataset: tf.data.Dataset) -> tf.data.Dataset:
    return dataset


class TensorTransform(abc.ABC):
  """Base class for transformations that operate on `tf.Tensor`s."""


  def __call__(self, input_: types.TensorLike) -> tf.Tensor: