from ...mediautils.audio import process_audio, resample from ...math.average import np_moving_average from ...models.moment import Moment from ..common import find_moving_average_highlights import numpy as np import structlog class AmplitudeEditor: def __init__(self, video_path, audio_path, params): self.logger = structlog.get_logger("amplitude") self.video_path = video_path self.audio_path = audio_path self.logger.info("processing audio", path=self.audio_path) data, duration, bitrate = process_audio(self.audio_path) self.data = data self.duration = duration self.bitrate = bitrate self.factor = params["factor"] self.logger.info("resampling audio", factor=self.factor) self.subsampled_data = resample(self.data, self.factor) self.squared_subsample = np.square(self.subsampled_data) def edit(self, large_window, small_window, params): window_factor = self.bitrate / self.factor long_ma = np_moving_average(self.squared_subsample, large_window * window_factor) short_ma = np_moving_average(self.squared_subsample, small_window * window_factor) highlights = find_moving_average_highlights(short_ma, long_ma, self.factor / self.bitrate) return highlights, large_window, small_window