TorchFX is a modern Python library for high-performance digital signal processing in audio, leveraging PyTorch and GPU acceleration. Built for researchers, engineers, and developers who need fast, flexible, and differentiable audio processing.
- ⚡ GPU Acceleration - Built on PyTorch for high-performance audio processing on CUDA-enabled devices
- 🔗 Composable Pipelines - Chain filters with the pipe operator (
|) for sequential processing - ➕ Parallel Processing - Combine filters with the add operator (
+) for parallel filter combination - 🧠 PyTorch Native - All filters are
torch.nn.Modulesubclasses, enabling gradient-based optimization - 🎯 Simple & Intuitive - Clean, object-oriented API designed for ease of use
- ⚙️ Highly Extensible - Create custom filters and effects by extending base classes
- 📊 Performance Optimized - Substantial performance gains over SciPy for long and multichannel signals
pip install torchfxOr install from source:
git clone https://github.com/matteospanio/torchfx
cd torchfx
pip install -e .import torch
from torchfx import Wave
from torchfx.filter import LoButterworth, ParametricEQ
# Load audio
wave = Wave.from_file("audio.wav")
# Create filters
lowpass = LoButterworth(cutoff=5000, order=4, fs=wave.fs)
eq = ParametricEQ(frequency=1000, q=2.0, gain=3.0, fs=wave.fs)
# Sequential processing with pipe operator (|)
processed = wave | lowpass | eq
# Parallel processing with add operator (+)
stereo_enhancer = lowpass + eq
enhanced = wave | stereo_enhancer
# Save result
processed.save("output.wav")- Full Documentation - Complete guides and API reference
- Getting Started - Installation and first steps
- Tutorials - Practical examples and use cases
- API Reference - Detailed API documentation
- Blog - Updates, releases, and insights
- Contributing Guide - How to contribute to TorchFX
- Style Guide - Coding standards and conventions
- Roadmap - Future plans and priorities
We welcome contributions from everyone! Please read our Contributing Guide to get started.
If you use TorchFX in your research, please cite our paper:
@misc{spanio2025torchfxmodernapproachaudio,
title={TorchFX: A modern approach to Audio DSP with PyTorch and GPU acceleration},
author={Matteo Spanio and Antonio Rodà},
year={2025},
eprint={2504.08624},
archivePrefix={arXiv},
primaryClass={eess.AS},
url={https://arxiv.org/abs/2504.08624},
}This project is licensed under the terms of the GNU General Public License v3.0. See the LICENSE file for details.
This project uses the following third-party libraries:
- PyTorch – BSD-style license
- Torchaudio – BSD 2-Clause License
- NumPy – BSD 3-Clause License
- SciPy – BSD 3-Clause License
- SoundFile – BSD 3-Clause License
Their respective license texts are included in the licenses/ directory.