Expand description
§ToRSh Signal Processing Library
torsh-signal provides comprehensive, PyTorch-compatible signal processing operations
built on top of the SciRS2 ecosystem for high-performance, production-ready signal processing.
§Features
This crate offers a complete suite of signal processing tools:
§🔧 Window Functions
- Classic Windows: Hamming, Hann, Blackman, Bartlett, Rectangular
- Advanced Windows: Kaiser, Gaussian, Tukey, Cosine, Exponential
- Normalization: Magnitude and power normalization support
- Periodic/Symmetric: Full control over window boundary conditions
§📊 Spectral Analysis
- STFT/ISTFT: Short-Time Fourier Transform with full PyTorch compatibility
- Spectrograms: Magnitude and power spectrograms with customizable parameters
- Mel-Scale Processing: Complete mel-scale filterbank and conversion functions
- Frequency Analysis: Professional-grade spectral analysis tools
§🔍 Filtering Operations
- IIR Filters: Butterworth, Chebyshev, Elliptic filter designs
- FIR Filters: Windowed and optimal filter design methods
- Adaptive Filters: LMS, NLMS, RLS adaptive filtering algorithms
- Specialized Filters: Median, Gaussian, Savitzky-Golay smoothing
§🌊 Advanced Signal Processing
- Wavelets: Continuous and discrete wavelet transforms
- Audio Processing: MFCC, pitch detection, spectral features
- Convolution: Time-domain and frequency-domain convolution
- Resampling: High-quality polyphase and rational resampling
§⚡ Performance Optimization
- SIMD Acceleration: Vectorized operations using SciRS2 SIMD primitives
- Parallel Processing: Multi-threaded signal processing with load balancing
- Memory Efficiency: Streaming and zero-copy operations for large signals
- Hardware Optimization: Automatic algorithm selection based on hardware
§Quick Start
use torsh_signal::prelude::*;
use torsh_tensor::creation::ones;
// Create a test signal
let signal = ones(&[1024])?;
// Apply window function
let window = hann_window(512, false)?;
// Compute STFT
let stft_params = StftParams {
n_fft: 512,
hop_length: Some(256),
window: Some(Window::Hann),
..Default::default()
};
let stft_result = stft(&signal, stft_params)?;
// Convert to mel-scale spectrogram
let specgram = spectrogram(&signal, 512, Some(256), Some(512),
Some(Window::Hann), true, "reflect",
false, true, Some(2.0))?;
let mel_spec = mel_spectrogram(&specgram, 0.0, Some(8000.0), 80, 16000.0)?;
§PyTorch Compatibility
All functions are designed to match PyTorch’s signal processing API:
torch.stft↔torsh_signal::stfttorch.istft↔torsh_signal::istfttorch.spectrogram↔torsh_signal::spectrogramtorch.window.*↔torsh_signal::windows::*
§SciRS2 Integration
Built on the SciRS2 ecosystem for maximum performance:
- scirs2-core: Scientific computing primitives and memory management
- scirs2-signal: Advanced signal processing algorithms and optimizations
- scirs2-fft: High-performance FFT with SIMD acceleration
§Examples
See the examples/ directory for comprehensive usage examples:
- Audio signal processing pipelines
- Real-time streaming applications
- Machine learning feature extraction
- Filter design and analysis
Re-exports§
pub use advanced_filters::AdaptiveFilterProcessor;pub use advanced_filters::DigitalFilter;pub use advanced_filters::FIRDigitalFilter;pub use advanced_filters::FIRFilterDesigner;pub use advanced_filters::FilterAnalysis;pub use advanced_filters::IIRFilterDesigner;pub use audio::CepstralAnalysis;pub use audio::MFCCProcessor;pub use audio::PitchDetector;pub use audio::ScaleTransforms;pub use audio::SpectralFeatureExtractor;pub use filters::convolve1d;pub use filters::correlate1d;pub use performance::MemoryEfficientProcessor;pub use performance::OptimizationLevel;pub use performance::PerformanceConfig;pub use performance::SIMDSignalProcessor;pub use resampling::decimate;pub use resampling::interpolate;pub use resampling::linear_resample;pub use resampling::InterpolationProcessor;pub use resampling::InterpolationType;pub use resampling::PolyphaseResamplerConfig;pub use resampling::PolyphaseResamplerProcessor;pub use resampling::RationalResamplerProcessor;pub use resampling::SincResamplerConfig;pub use resampling::SincResamplerProcessor;pub use spectral::create_fb_matrix;pub use spectral::inverse_mel_scale;pub use spectral::istft;pub use spectral::mel_scale;pub use spectral::mel_spectrogram;pub use spectral::spectrogram;pub use spectral::spectrogram;pub use spectral::stft;pub use spectral::stft;pub use streaming::ChunkedProcessorConfig;pub use streaming::ChunkedSignalProcessor;pub use streaming::OverlapAddProcessor;pub use streaming::RingBuffer;pub use streaming::StreamingFilterProcessor;pub use streaming::StreamingProcessor;pub use streaming::StreamingSTFTProcessor;pub use wavelets::ContinuousWaveletProcessor;pub use wavelets::DiscreteWaveletProcessor;pub use wavelets::LiftingSchemeProcessor;pub use wavelets::ThresholdMethod;pub use wavelets::WaveletDenoiser;pub use wavelets::WaveletPacketProcessor;pub use wavelets::WaveletType;pub use wavelets::WaveletUtils;pub use windows::bartlett_window;pub use windows::blackman_window;pub use windows::cosine_window;pub use windows::exponential_window;pub use windows::gaussian_window;pub use windows::hamming_window;pub use windows::hann_window;pub use windows::kaiser_window;pub use windows::tukey_window;pub use windows::window;pub use windows::Window;
Modules§
- advanced_
filters - Advanced digital filter implementations with full SciRS2 integration
- audio
- Audio processing module with simplified SciRS2 integration
- filters
- Filtering operations for signal processing
- performance
- High-performance signal processing with SciRS2 integration
- prelude
- Prelude module for convenient imports
- resampling
- Signal resampling with simplified SciRS2 integration
- spectral
- Spectral operations for signal processing
- streaming
- Streaming signal processing for memory-efficient operations
- wavelets
- Wavelet transform capabilities with simplified SciRS2 integration
- windows
- Window functions for signal processing