Spaces:
Runtime error
Runtime error
import numpy as np | |
from . import effects | |
def volume(audio: np.ndarray) -> float: | |
return np.average(np.abs(audio)) | |
def volume_gradient(audio: np.ndarray, number:int = 1) -> float: | |
audio = effects.gradient(audio, number = number) | |
return np.average(np.abs(audio)) | |
def maximum_high(audio: np.ndarray, number:int = 1) -> float: | |
audio = effects.gradient(audio, number = number) | |
return np.max(np.abs(audio)) | |
def locate_1st_hit(audio: np.ndarray, number: int = 1): | |
audio = effects.gradient(audio, number = number) | |
return np.argmax(audio, axis=1) / len(audio[0]) | |
def is_hit(audio: np.ndarray, threshold: float = 0.5, number:int = 1) -> int: | |
return 1 if maximum_high(audio, number=number) > threshold else 0 | |
def hit_at_start(audio: np.ndarray, diff = 0.1) -> int: | |
return is_hit(audio) * (locate_1st_hit(audio) <= diff) | |
def hit_in_middle(audio: np.ndarray, diff = 0.1) -> int: | |
return is_hit(audio) * ((0.5 - diff) <= locate_1st_hit(audio) <= (0.5 + diff)) | |
def hit_at_end(audio: np.ndarray, diff = 0.1) -> int: | |
return is_hit(audio) * (locate_1st_hit(audio) >= (1-diff)) | |
BM_METRICS = { | |
"v": volume, | |
"g": volume_gradient, | |
"m": maximum_high, | |
"l": locate_1st_hit, | |
"h": is_hit, | |
"s": hit_at_start, | |
"a": hit_in_middle, | |
"e": hit_at_end, | |
} |