def _prepare_example(self, example): """Creates an example (anchor-positive) for instance discrimination.""" x = tf.math.l2_normalize(example["audio"], epsilon=1e-9) waveform_a = data.extract_window(x) mels_a = data.extract_log_mel_spectrogram(waveform_a) frames_anchors = mels_a[Ellipsis, tf.newaxis] waveform_p = data.extract_window(x) waveform_p = waveform_p + (self._noise * tf.random.normal(tf.shape(waveform_p))) mels_p = data.extract_log_mel_spectrogram(waveform_p) frames_positives = mels_p[Ellipsis, tf.newaxis] return frames_anchors, frames_positives
def _prepare_standard_example(self, example, is_training): """Creates an example for supervised training.""" x = example["audio"] if is_training: x = data.extract_window(x) x = tf.math.l2_normalize(x, epsilon=1e-9) else: x = tf.signal.frame(x, frame_length=self._n_frames * 160, frame_step=self._n_frames * 160, pad_end=True) x = tf.math.l2_normalize(x, axis=-1, epsilon=1e-9) x = data.extract_log_mel_spectrogram(x) x = x[Ellipsis, tf.newaxis] y = example["label"] return x, y