Conversion of Raw-audio Using Spikes Analog Digital Encoders
This repository contains implementations of different analogue-to-spike converters for raw audio signal.
This project contains Python implementations of various methods and neural models used to transform audio signals into spike/event trains, using JAX. It includes:
- Standalone ADM.
- Filterbank with ADM.
- Filterbank with Resonate and Fire neurons.
- Filterbank with phase encoding (under development).
Recommended version for installation is using uv
uv sync --frozen --all-extrasOr with pip
pip install ".[dev]"Example for use filterbank_ADM:
import jax.numpy as jnp
import matplotlib.pyplot as plt
from scipy.signal import chirp
from crusafe.conversion_methods import filterbank_ADM
sr = 44100
duration = 0.1
t = jnp.arange(int(sr * duration)) / sr
audio = chirp(t, f0=200, f1=2000, t1=duration, method="linear")
fb = filterbank_ADM(
num_neurons=16, freq_min=200, freq_max=2000, freq_distribution="linear"
)
event_time, event_address, event_magnitude = fb(audio, sampling_rate=sr)
plt.figure()
plt.scatter(x=event_time, y=event_address, c=event_magnitude, cmap="bwr")
plt.show()- On pc
To check if the models are working:
uv run pytestor if you are in the envirnoment
pytestTo check before commit:
uv run pre-commit run --all-filesto install the pre-commit (only forst time):
uv run pre-commit installonce installed it runs automatically for every commit
- On git
It does automatically runs all the tests