ale/src/editors/amplitude/editor.py

30 lines
1.3 KiB
Python

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