Coverage for src/bob/bio/spear/transformer/resample.py: 95%
19 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-06 22:04 +0100
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-06 22:04 +0100
1#!/usr/bin/env python
2# @author: Yannick Dayer <yannick.dayer@idiap.ch>
3# @date: Wed 25 May 2022 17:27:31 UTC+02
5import logging
7from typing import List, Optional
9import numpy
11from sklearn.base import BaseEstimator, TransformerMixin
13from bob.bio.spear.audio_processing import resample
15logger = logging.getLogger(__name__)
18class Resample(BaseEstimator, TransformerMixin):
19 """Transforms a Sample's audio data with a new sample rate."""
21 def __init__(self, target_sample_rate: Optional[int] = None) -> None:
22 """
23 Parameters
24 ----------
25 target_sample_rate:
26 The target sample rate for the audio output.
27 """
28 super().__init__()
29 self.target_sample_rate = target_sample_rate
31 def transform(
32 self, audio_streams: List[numpy.ndarray], sample_rates: List[int]
33 ) -> List[numpy.ndarray]:
34 output = []
35 for audio, sample_rate in zip(audio_streams, sample_rates):
36 output.append(resample(audio, sample_rate, self.target_sample_rate))
37 return output
39 def fit(self, X, y=None):
40 return self
42 def _more_tags(self):
43 return {
44 "stateless": True,
45 "requires_fit": False,
46 "bob_transform_extra_input": [("sample_rates", "rate")],
47 } # TODO: add multi-output tag