Source code for pliers.filters.audio

''' Filters that operate on TextStim inputs. '''

from copy import deepcopy

from pliers.stimuli import AudioStim
from pliers.utils import attempt_to_import, verify_dependencies
from .base import Filter, TemporalTrimmingFilter

librosa = attempt_to_import('librosa')

class AudioFilter(Filter):

    ''' Base class for all audio filters. '''

    _input_type = AudioStim


[docs]class AudioTrimmingFilter(TemporalTrimmingFilter, AudioFilter): pass
[docs]class AudioResamplingFilter(AudioFilter): ''' Librosa-based audio resampling Filter. Uses librosa.core.resample function. Args: target_sr (float): Target sampling rate (in Hz). resample_type (str): Type of resampling. Must be one of 'kaiser_best', 'kaiser_fast', 'scipy', 'fft' or 'polyphase'. See librosa.core.resample documentation for more details. librosa_kwargs: Optional keyword args passed onto the librosa resampling function. ''' _log_attributes = ('target_sr', 'resample_type')
[docs] def __init__(self, target_sr=44100, resample_type='kaiser_best', **librosa_kwargs): verify_dependencies(['librosa']) self.target_sr = target_sr self.resample_type = resample_type self.librosa_kwargs = librosa_kwargs super().__init__()
def _filter(self, stim): resampled_stim = deepcopy(stim) resampled_stim.data = librosa.core.resample(y=stim.data, orig_sr=stim.sampling_rate, target_sr=self.target_sr, resample_type=self.resample_type, **self.librosa_kwargs) resampled_stim.sampling_rate = self.target_sr return resampled_stim