Crate torsh_signal

Crate torsh_signal 

Source
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.stfttorsh_signal::stft
  • torch.istfttorsh_signal::istft
  • torch.spectrogramtorsh_signal::spectrogram
  • torch.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