Source code for polyglotdb.acoustics.intensity

from conch import analyze_segments
from conch.analysis.intensity import PraatSegmentIntensityTrackFunction

from polyglotdb.acoustics.segments import generate_utterance_segments
from polyglotdb.acoustics.utils import PADDING
from polyglotdb.exceptions import AcousticError


[docs] def analyze_intensity( corpus_context, source="praat", call_back=None, stop_check=None, multiprocessing=True, ): """ Analyze intensity of an entire utterance, and save the resulting intensity tracks into the database. Parameters ---------- corpus_context : :class:`~polyglot.corpus.context.CorpusContext` corpus context to use source : str Source program to use (only `praat` available) call_back : callable call back function, optional stop_check : function stop check function, optional multiprocessing : bool Flag to use multiprocessing rather than threading """ segment_mapping = generate_utterance_segments( corpus_context, padding=PADDING, file_type="consonant" ) segment_mapping = segment_mapping.grouped_mapping("speaker") if call_back is not None: call_back("Analyzing files...") if "intensity" not in corpus_context.hierarchy.acoustics: corpus_context.hierarchy.add_acoustic_properties( corpus_context, "intensity", [("Intensity", float)] ) corpus_context.encode_hierarchy() for i, ((speaker,), v) in enumerate(segment_mapping.items()): intensity_function = generate_base_intensity_function(corpus_context) output = analyze_segments( v, intensity_function, stop_check=stop_check, multiprocessing=multiprocessing, ) corpus_context.save_acoustic_tracks("intensity", output, speaker)
[docs] def generate_base_intensity_function(corpus_context): """ Generate an Intensity function from Conch Parameters ---------- corpus_context : :class:`~polyglotdb.CorpusContext` CorpusContext to use for getting path to Praat (if not on the system path) Returns ------- :class:`~conch.analysis.intensity.PraatSegmentIntensityTrackFunction` Intensity analysis function """ if getattr(corpus_context.config, "praat_path", None) is None: raise (AcousticError("Could not find the Praat executable")) intensity_function = PraatSegmentIntensityTrackFunction( praat_path=corpus_context.config.praat_path, time_step=0.01 ) return intensity_function