parent
a5dcd23bf2
commit
115a06bb37
@ -0,0 +1,50 @@
|
||||
"""Contain the online bayesian normalization augmentation model."""
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
from data_utils.augmentor.base import AugmentorBase
|
||||
|
||||
|
||||
class OnlineBayesianNormalizationAugmentor(AugmentorBase):
|
||||
"""Augmentation model for adding online bayesian normalization.
|
||||
|
||||
:param rng: Random generator object.
|
||||
:type rng: random.Random
|
||||
:param target_db: Target RMS value in decibels.
|
||||
:type target_db: float
|
||||
:param prior_db: Prior RMS estimate in decibels.
|
||||
:type prior_db: float
|
||||
:param prior_samples: Prior strength in number of samples.
|
||||
:type prior_samples: int
|
||||
:param startup_delay: Default 0.0s. If provided, this function will
|
||||
accrue statistics for the first startup_delay
|
||||
seconds before applying online normalization.
|
||||
:type starup_delay: float.
|
||||
"""
|
||||
|
||||
def __init__(self,
|
||||
rng,
|
||||
target_db,
|
||||
prior_db,
|
||||
prior_samples,
|
||||
startup_delay=0.0):
|
||||
self._target_db = target_db
|
||||
self._prior_db = prior_db
|
||||
self._prior_samples = prior_samples
|
||||
self._startup_delay = startup_delay
|
||||
self._rng = rng
|
||||
self._startup_delay=startup_delay
|
||||
|
||||
def transform_audio(self, audio_segment):
|
||||
"""Normalizes the input audio using the online Bayesian approach.
|
||||
|
||||
Note that this is an in-place transformation.
|
||||
|
||||
:param audio_segment: Audio segment to add effects to.
|
||||
:type audio_segment: AudioSegment|SpeechSegment
|
||||
"""
|
||||
audio_segment.normalize_online_bayesian(self._target_db,
|
||||
self._prior_db,
|
||||
self._prior_samples,
|
||||
self._startup_delay)
|
@ -0,0 +1,30 @@
|
||||
"""Contain the resample augmentation model."""
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
from data_utils.augmentor.base import AugmentorBase
|
||||
|
||||
|
||||
class ResampleAugmentor(AugmentorBase):
|
||||
"""Augmentation model for resampling.
|
||||
|
||||
:param rng: Random generator object.
|
||||
:type rng: random.Random
|
||||
:param new_sample_rate: New sample rate in Hz
|
||||
:type new_sample_rate: int
|
||||
"""
|
||||
|
||||
def __init__(self, rng, new_sample_rate):
|
||||
self._new_sample_rate = new_sample_rate
|
||||
self._rng = rng
|
||||
|
||||
def transform_audio(self, audio_segment):
|
||||
"""Resamples the input audio to a target sample rate.
|
||||
|
||||
Note that this is an in-place transformation.
|
||||
|
||||
:param audio: Audio segment to add effects to.
|
||||
:type audio: AudioSegment|SpeechSegment
|
||||
"""
|
||||
audio_segment.resample(self._new_sample_rate)
|
@ -0,0 +1,43 @@
|
||||
"""Contain the speech perturbation augmentation model."""
|
||||
from __future__ import absolute_import
|
||||
from __future__ import division
|
||||
from __future__ import print_function
|
||||
|
||||
from data_utils.augmentor.base import AugmentorBase
|
||||
|
||||
|
||||
class SpeedPerturbAugmentor(AugmentorBase):
|
||||
"""Augmentation model for adding speed perturbation.
|
||||
|
||||
See reference paper here:
|
||||
http://www.danielpovey.com/files/2015_interspeech_augmentation.pdf
|
||||
|
||||
:param rng: Random generator object.
|
||||
:type rng: random.Random
|
||||
:param min_speed_rate: Lower bound of new speed rate to sample.
|
||||
:type min_speed_rate: float
|
||||
:param max_speed_rate: Upper bound of new speed rate to sample.
|
||||
:type max_speed_rate: float
|
||||
"""
|
||||
|
||||
def __init__(self, rng, min_speed_rate, max_speed_rate):
|
||||
|
||||
if (min_speed_rate < 0.5):
|
||||
raise ValueError("Sampling speed below 0.9 can cause unnatural effects")
|
||||
if (max_speed_rate > 1.5):
|
||||
raise ValueError("Sampling speed above 1.1 can cause unnatural effects")
|
||||
self._min_speed_rate = min_speed_rate
|
||||
self._max_speed_rate = max_speed_rate
|
||||
self._rng = rng
|
||||
|
||||
def transform_audio(self, audio_segment):
|
||||
"""Sample a new speed rate from the given range and
|
||||
changes the speed of the given audio clip.
|
||||
|
||||
Note that this is an in-place transformation.
|
||||
|
||||
:param audio_segment: Audio segment to add effects to.
|
||||
:type audio_segment: AudioSegment|SpeechSegment
|
||||
"""
|
||||
sampled_speed = self._rng.uniform(self._min_speed_rate, self._max_speed_rate)
|
||||
audio_segment.change_speed(sampled_speed)
|
Loading…
Reference in new issue