From 8f3305e8447131544cc6de0d8162e1108e55ae99 Mon Sep 17 00:00:00 2001 From: "jordi.hasianta" Date: Thu, 15 Sep 2022 20:16:28 +0700 Subject: [PATCH] add private module to create model object for acoustics api --- opendbm/api_lib/verbal_acoustics/__init__.py | 1 + .../verbal_acoustics/_audio_intensity.py | 12 +++++++++++ .../verbal_acoustics/_formant_frequency.py | 14 +++++++++++++ .../verbal_acoustics/_glottal_noise.py | 14 +++++++++++++ .../verbal_acoustics/_harmonic_noise.py | 14 +++++++++++++ opendbm/api_lib/verbal_acoustics/_jitter.py | 14 +++++++++++++ opendbm/api_lib/verbal_acoustics/_mfcc.py | 12 +++++++++++ .../_pause_characteristics.py | 20 +++++++++++++++++++ .../verbal_acoustics/_pitch_frequency.py | 14 +++++++++++++ opendbm/api_lib/verbal_acoustics/_shimmer.py | 14 +++++++++++++ .../verbal_acoustics/_voice_prevalence.py | 14 +++++++++++++ 11 files changed, 143 insertions(+) create mode 100644 opendbm/api_lib/verbal_acoustics/__init__.py create mode 100644 opendbm/api_lib/verbal_acoustics/_audio_intensity.py create mode 100644 opendbm/api_lib/verbal_acoustics/_formant_frequency.py create mode 100644 opendbm/api_lib/verbal_acoustics/_glottal_noise.py create mode 100644 opendbm/api_lib/verbal_acoustics/_harmonic_noise.py create mode 100644 opendbm/api_lib/verbal_acoustics/_jitter.py create mode 100644 opendbm/api_lib/verbal_acoustics/_mfcc.py create mode 100644 opendbm/api_lib/verbal_acoustics/_pause_characteristics.py create mode 100644 opendbm/api_lib/verbal_acoustics/_pitch_frequency.py create mode 100644 opendbm/api_lib/verbal_acoustics/_shimmer.py create mode 100644 opendbm/api_lib/verbal_acoustics/_voice_prevalence.py diff --git a/opendbm/api_lib/verbal_acoustics/__init__.py b/opendbm/api_lib/verbal_acoustics/__init__.py new file mode 100644 index 00000000..a6383641 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/__init__.py @@ -0,0 +1 @@ +from opendbm.api_lib.verbal_acoustics.api import VerbalAcoustics diff --git a/opendbm/api_lib/verbal_acoustics/_audio_intensity.py b/opendbm/api_lib/verbal_acoustics/_audio_intensity.py new file mode 100644 index 00000000..15d1a731 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_audio_intensity.py @@ -0,0 +1,12 @@ +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib import run_intensity + + +class AudioIntensity(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_int"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_intensity(path, ".", self.r_config, save=False) diff --git a/opendbm/api_lib/verbal_acoustics/_formant_frequency.py b/opendbm/api_lib/verbal_acoustics/_formant_frequency.py new file mode 100644 index 00000000..348ffc0e --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_formant_frequency.py @@ -0,0 +1,14 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib import run_formant + + +class FormantFrequency(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_fm1", "aco_fm2", "aco_fm3", "aco_fm4"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_formant(path, ".", self.r_config, save=False) diff --git a/opendbm/api_lib/verbal_acoustics/_glottal_noise.py b/opendbm/api_lib/verbal_acoustics/_glottal_noise.py new file mode 100644 index 00000000..6d0256c6 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_glottal_noise.py @@ -0,0 +1,14 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib.dbm_features.raw_features.audio.gne import run_gne + + +class GlottalNoiseRatio(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_gne"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_gne(path, ".", self.r_config, save=False, ff_df=kwargs["ff_df"]) diff --git a/opendbm/api_lib/verbal_acoustics/_harmonic_noise.py b/opendbm/api_lib/verbal_acoustics/_harmonic_noise.py new file mode 100644 index 00000000..82280564 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_harmonic_noise.py @@ -0,0 +1,14 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib.dbm_features.raw_features.audio.hnr import run_hnr + + +class HarmonicsNoiseRatio(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_hnr"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_hnr(path, ".", self.r_config, save=False) diff --git a/opendbm/api_lib/verbal_acoustics/_jitter.py b/opendbm/api_lib/verbal_acoustics/_jitter.py new file mode 100644 index 00000000..46ff8856 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_jitter.py @@ -0,0 +1,14 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib.dbm_features.raw_features.audio.jitter import run_jitter + + +class Jitter(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_jitter"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_jitter(path, ".", self.r_config, save=False, ff_df=kwargs["ff_df"]) diff --git a/opendbm/api_lib/verbal_acoustics/_mfcc.py b/opendbm/api_lib/verbal_acoustics/_mfcc.py new file mode 100644 index 00000000..31caa022 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_mfcc.py @@ -0,0 +1,12 @@ +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib import run_mfcc + + +class MFCC(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_mfcc" + str(i) for i in range(1, 13)] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_mfcc(path, ".", self.r_config, save=False) diff --git a/opendbm/api_lib/verbal_acoustics/_pause_characteristics.py b/opendbm/api_lib/verbal_acoustics/_pause_characteristics.py new file mode 100644 index 00000000..4bb29438 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_pause_characteristics.py @@ -0,0 +1,20 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib import run_pause_segment + + +class PauseCharacteristics(AudioModel): + def __init__(self): + super().__init__() + self._params = [ + "aco_totaltime", + "aco_speakingtime", + "aco_numpauses", + "aco_pausetime", + "aco_pausefrac", + ] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_pause_segment(path, ".", self.r_config, save=False) diff --git a/opendbm/api_lib/verbal_acoustics/_pitch_frequency.py b/opendbm/api_lib/verbal_acoustics/_pitch_frequency.py new file mode 100644 index 00000000..cda595b5 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_pitch_frequency.py @@ -0,0 +1,14 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib.dbm_features.raw_features.audio.pitch_freq import run_pitch + + +class PitchFrequency(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_ff"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_pitch(path, ".", self.r_config, save=False) diff --git a/opendbm/api_lib/verbal_acoustics/_shimmer.py b/opendbm/api_lib/verbal_acoustics/_shimmer.py new file mode 100644 index 00000000..b1da3723 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_shimmer.py @@ -0,0 +1,14 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib.dbm_features.raw_features.audio.shimmer import run_shimmer + + +class Shimmer(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_shimmer"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_shimmer(path, ".", self.r_config, save=False, ff_df=kwargs["ff_df"]) diff --git a/opendbm/api_lib/verbal_acoustics/_voice_prevalence.py b/opendbm/api_lib/verbal_acoustics/_voice_prevalence.py new file mode 100644 index 00000000..2094ff38 --- /dev/null +++ b/opendbm/api_lib/verbal_acoustics/_voice_prevalence.py @@ -0,0 +1,14 @@ +import pandas as pd + +from opendbm.api_lib.model import AudioModel +from opendbm.dbm_lib.dbm_features.raw_features.audio.voice_frame_score import run_vfs + + +class VoicePrevalence(AudioModel): + def __init__(self): + super().__init__() + self._params = ["aco_voiceframe", "aco_totvoiceframe", "aco_voicepct"] + + @AudioModel.prep_func + def _fit_transform(self, path, **kwargs): + return run_vfs(path, ".", self.r_config, save=False)