Audio Signal Processing
May 30, 2026 | 5 min read
Moving Average Filter
def moving_average(signal: list[float], window: int) -> list[float]:
result = []
total = sum(signal[:window])
result.append(total / window)
for i in range(window, len(signal)):
total += signal[i] - signal[i - window]
result.append(total / window)
return result
RMS Energy
def rms(signal: list[float]) -> float:
total = 0.0
for s in signal:
total += s * s
return (total / len(signal)) ** 0.5
Sampling Rate Conversion
def resample(signal: list[float], factor: int) -> list[float]:
return [signal[i * factor] for i in range(len(signal) // factor)]