Skip to content

Repository files navigation

Signal Processing Toolkit

Signal Processing Toolkit is a Python 3.12+ desktop application and DSP library for signal generation, analysis, filtering, sampling, convolution, correlation, audio, and image workflows.

Installation

Clone the repository and install the project from its root:

git clone https://github.com/shrutikbalwan/SignalProcessingToolkit.git
cd SignalProcessingToolkit
python -m pip install -e .

The default installation contains the numerical DSP core only. Install the extras needed by a workflow:

# Desktop interface
python -m pip install -e ".[gui]"

# Optional feature integrations
python -m pip install -e ".[audio,image,ai,export]"

# All desktop integrations
python -m pip install -e ".[gui,audio,image,ai,hardware,export]"

Other isolated extras are ai, hardware, dev, and docs. OpenCV, sounddevice, and ONNX Runtime are not installed with the DSP core.

Running

After installation, either command launches the desktop application:

spt
python -m signal_processing_toolkit

Both entry points support standard command help and version checks without importing GUI or hardware packages:

spt --help
python -m signal_processing_toolkit --version

If the gui extra is absent, launching the desktop application prints the exact installation command needed. Importing signal_processing_toolkit or its DSP modules does not require GUI, audio, image, AI, or hardware dependencies.

Development

python -m pip install -e ".[dev,gui,audio,image,export]"
ruff format .
ruff check .
mypy src
pytest
python -m build

Project structure

SignalProcessingToolkit/
|-- src/
|   `-- signal_processing_toolkit/
|       |-- __init__.py
|       |-- __main__.py
|       |-- main.py
|       |-- ai/
|       |-- audio/
|       |-- core/
|       |-- dsp/
|       |   `-- analysis/
|       |-- hardware/
|       |-- models/
|       |-- plots/
|       |-- repositories/
|       |-- services/
|       |-- streaming/
|       `-- ui/
|-- docs/
|   `-- api/
|-- examples/
|   |-- edge_ai_motor_anomaly/
|   `-- esp32/
|-- tests/
|   |-- test_services/
|   `-- test_ui/
|-- ARCHITECTURE.md
|-- LICENSE
|-- README.md
`-- pyproject.toml

Application imports use the signal_processing_toolkit package name. The src directory is a packaging boundary and is not itself a Python package.

UI architecture

The sidebar and central QStackedWidget use the same keyed navigation descriptors, so every sidebar item has exactly one validated page. ApplicationState owns the active signal and propagates generated or loaded data to analysis and export controllers. Signal-dependent pages show explicit empty, loading, content, and error states. FFT, filtering, sampling, noise, convolution, correlation, and window processing run through Qt's global thread pool, with results marshalled back to the UI. Settings and theme choices are persisted through SettingsManager.

Signal data model

Signal arrays are sample-major: mono data uses (samples,) and multichannel data uses (samples, channels). The model supports real and complex samples, channel names, per-channel physical units, start times, structured metadata, and processing provenance. See the Signal API guide for validation, alignment, resampling, shifting, and SNR semantics.

The DSP algorithms guide documents spectral scaling, polyphase resampling, SOS and streaming filtering, correlation time origins, and every measurement formula and unit. The advanced analysis guide covers STFT/ISTFT, streaming spectrograms, coherence, analytic signals, cepstrum, wavelets, band power, and event detection.

The real-time streaming guide documents bounded pipelines, backpressure, worker lifecycle, deterministic replay, initial processing nodes, and live plot integration. The data-acquisition guide documents callback audio, serial discovery, CSV and checksummed binary sensor packets, reconnect behavior, sessions, and ESP32 examples. The Edge-AI guide documents model metadata, identical training/inference preprocessing, provider selection, streaming inference, event capture and evaluation. The pipeline editor guide documents typed DAG validation, persistence, undo/redo, templates and offline/streaming execution. The embedded-target guide documents Q7/Q15/Q31 simulation, quantized filter error analysis, portable/CMSIS/ESP-DSP exports, checksummed vectors, and host/device comparison. Performance figures are estimates until measured on hardware.

For contributors and release maintainers, see CONTRIBUTING.md, the release checklist, and the current release-readiness report. Dependency and asset license notes are in docs/licenses.md. Screenshots and videos are not bundled yet; they are tracked on the roadmap.

Optional dependency groups

Extra Purpose
gui PyQt6 desktop UI, interactive plots, and Matplotlib
audio Recording/playback and audio file support
image OpenCV-backed image processing
ai Lazy ONNX/ORT model execution through ONNX Runtime
hardware Serial hardware integration
export Excel and PDF exports
dev Tests, type checking, formatting, linting, and builds
docs Sphinx documentation toolchain

License

MIT License. See LICENSE.

Links

About

Python toolkit for modern digital signal processing, sensor data filtering, and frequency analysis.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages