Expand description
§kizzasi-io
Physical world connectors for Kizzasi - MQTT, Audio, Video, and comprehensive sensor streams with state-of-the-art signal processing capabilities.
§Core Features
§Stream Sources
- MQTT: IoT/industrial sensor integration with TLS, QoS, and reconnection
- Audio: Multi-channel audio I/O via cpal (ASIO, JACK support)
- Video: Frame capture with FFmpeg and camera input (v4l2/DirectShow/AVFoundation)
- Network: WebSocket, TCP/UDP sockets, serial ports
- Protocols: OSC, ZeroMQ, ROS2 (when available)
- Files: WAV, CSV, HDF5 reading/writing
§Signal Processing
§Basic Filters
- FIR: Sinc lowpass/highpass, moving average, differentiator
- IIR: Butterworth lowpass/highpass, notch filters
§Advanced Adaptive Filtering
- Kalman Filter: Optimal linear state estimation with prediction/update cycles
- Particle Filter: Non-Gaussian/nonlinear Bayesian estimation
- LMS/NLMS: Least Mean Squares adaptive filtering
- RLS: Recursive Least Squares for rapid adaptation
§Cepstral Analysis
- Real Cepstrum: Pitch detection and formant analysis
- Complex Cepstrum: Homomorphic deconvolution
- Formant Tracking: Speech resonance detection
- Liftering: Quefrency domain filtering
- Cepstral Distance: Speech quality assessment
§Time-Frequency Analysis
- Gabor Transform: Optimal time-frequency resolution with Gaussian windows
- S-Transform: Frequency-dependent resolution (Stockwell transform)
- Wigner-Ville: High-resolution quadratic distribution
- Choi-Williams: Cross-term suppression for multi-component signals
- Reassigned Spectrogram: Enhanced resolution through energy reassignment
§Spectral Analysis
- STFT: Short-Time Fourier Transform with multiple window functions
- Spectrograms: Time-frequency magnitude/phase representations
- MFCC: Mel-frequency cepstral coefficients extraction
- Power Spectrum: Optimized FFT for power-of-2 sizes
§Wavelets
- DWT/IDWT: Discrete Wavelet Transform (Haar, Daubechies, Symlet, Coiflet)
- SWT: Stationary Wavelet Transform
- Denoising: Wavelet-based noise reduction
§Resampling
- Polyphase: Efficient integer-ratio resampling
- Linear/Cubic: Interpolation-based resampling
- Streaming: Real-time sinc-based resampling
§Performance Optimization
- Zero-copy buffers: SharedSignalBuffer, ZeroCopyBuffer, BufferPool
- Lock-free queues: Thread-safe concurrent data structures
- Ring buffers: Real-time circular buffering with statistics
- SIMD: Vectorized signal operations (when enabled)
- Async streams: Tokio-based asynchronous stream processing
§Stream Processing
- Pipelines: Composable signal transformations
- Synchronization: Multi-stream time alignment with PLL
- Multiplexing: Round-robin, time-ordered, weighted merging
- Adaptive buffering: Dynamic buffer sizing
- Rate control: Adaptive rate limiting
§Diagnostics & Monitoring
- Health monitoring: Stream status, latency, throughput
- Signal quality: SNR, clipping detection, crest factor
- Latency tracking: Percentile-based latency statistics
- Buffer tracking: Underrun/overrun detection
§Data Processing
- Compression: RLE, Delta, DPCM, Quantization with adaptive selection
- Calibration: Multi-point, non-linear, temperature compensation
- Batch processing: Windowed, parallel batch operations
- Recording/Playback: Binary, JSON, CSV stream capture
§Video Processing
- Optical Flow: Lucas-Kanade, Dense Gradient, Block Matching
- Filters: Gaussian/Box blur, Sobel/Laplacian edges, morphology
- Frame operations: Format conversion, normalization, buffering
§Examples
§Basic Signal Generation and Filtering
use kizzasi_io::{SineGenerator, SignalGenerator, FirFilter};
use scirs2_core::ndarray::Array1;
// Generate a sine wave
let mut generator = SineGenerator::new(440.0, 1.0, 44100.0);
let signal = generator.generate(1024);
// Apply lowpass filter
let mut filter = FirFilter::sinc_lowpass(0.25, 31).unwrap();
let filtered = filter.process(&signal);§Adaptive Filtering with Kalman Filter
use kizzasi_io::KalmanFilter;
use scirs2_core::ndarray::{arr1, Array2};
// 1D position tracking
let initial_state = arr1(&[0.0]);
let initial_cov = Array2::eye(1);
let transition = Array2::eye(1);
let observation = Array2::eye(1);
let process_noise = Array2::eye(1) * 0.01;
let measurement_noise = Array2::eye(1) * 0.1;
let mut kf = KalmanFilter::new(
initial_state, initial_cov, transition,
observation, process_noise, measurement_noise
).unwrap();
// Update with measurement
kf.predict();
kf.update(&arr1(&[1.5])).unwrap();
println!("State estimate: {:?}", kf.state());§Time-Frequency Analysis
use kizzasi_io::{GaborTransform, SineGenerator, SignalGenerator};
let mut gen = SineGenerator::new(440.0, 1.0, 16000.0);
let signal = gen.generate(1024);
let mut gabor = GaborTransform::new(16000.0);
let result = gabor.compute(&signal, 256, 128, 32.0).unwrap();
println!("Time-frequency representation: {} × {} bins",
result.num_frames, result.num_bins);§COOLJAPAN Ecosystem
This crate uses scirs2-core for all array operations following KIZZASI_POLICY.md.
Structs§
- Adaptive
Beamformer - Adaptive beamformer using LMS algorithm
- Adaptive
Buffer - Adaptive buffer that adjusts size based on usage patterns
- Adaptive
Buffer Stats - Statistics about adaptive buffer performance
- Adaptive
Compressor - Adaptive compressor that selects best method
- Adaptive
Config - Configuration for adaptive buffer
- Adaptive
Rate Controller - Adaptive rate controller that adjusts based on buffer levels
- Aggregate
Health - Aggregate statistics for multiple streams
- Arbitrary
SrcResampler - Arbitrary sample rate converter using adaptive filtering
- Async
Memory Stream - Async in-memory signal stream for testing
- Async
Multiplexer - Async multiplexer using channels
- Audio
Config - Configuration for audio I/O
- Audio
Input - Audio input stream
- Audio
Output - Audio output stream (playback)
- Auto
Calibrator - Auto-calibration using known reference signal
- Batch
Accumulator - Batch accumulator for collecting samples
- Batch
Config - Batch configuration
- Batch
Processor - Batch processor for applying operations to batches
- Batch
Stats - Statistics accumulator for batch processing
- Buffer
Level Tracker - Buffer level tracker
- Buffer
Pool - Pool of reusable buffers to reduce allocation overhead
- Calibration
Curve - Calibration curve for non-linear sensor response
- Calibration
Manager - Calibration manager for multiple sensors
- Calibration
Params - Calibration parameters for a sensor
- Cepstral
Distance - Cepstral distance measure for speech quality assessment
- Channel
Splitter - Channel-based stream splitter
- Channel
Stream - Async channel-based stream adapter
- Chirp
Generator - Chirp (frequency sweep) generator
- Choi
Williams - Choi-Williams distribution
- Clip
Transform - Clipping transform (limit values to range)
- Complex
Cepstrum - Complex cepstrum analyzer
- Compressed
Signal - Compressed signal data
- Compression
Metadata - Metadata needed for decompression
- Cubic
Resampler - Cubic interpolation resampler (better quality than linear)
- DOAEstimator
- Direction of Arrival (DOA) estimation
- Decimate
Transform - Decimation transform (downsample by factor)
- Delay
AndSum - Delay-and-Sum beamformer
- Derivative
Transform - Derivative transform (compute differences)
- DwtMulti
Level - Multi-level DWT result
- DwtResult
- Discrete Wavelet Transform (DWT) result
- EmdConfig
- Configuration for EMD algorithm
- EmdResult
- Result of EMD decomposition
- Empirical
Mode Decomposition - Empirical Mode Decomposition (EMD) implementation
- Ensemble
Emd - Ensemble EMD (EEMD) for noise-assisted decomposition
- Farrow
Resampler - Farrow structure for fractional delay and arbitrary sample rate conversion
- FastICA
- FastICA algorithm for Independent Component Analysis
- FirFilter
- FIR (Finite Impulse Response) filter
- Formant
Tracker - Formant tracker for speech analysis
- Gabor
Result - Gabor transform result
- Gabor
Transform - Gabor transform analyzer
- Health
Monitor - Stream health monitor
- IirFilter
- IIR (Infinite Impulse Response) filter
- Impulse
Generator - Impulse generator (single spike)
- Intrinsic
Mode Function - Intrinsic Mode Function with its properties
- Kalman
Filter - Kalman Filter for optimal linear state estimation
- Latency
Stats - Latency statistics
- Latency
Tracker - Latency tracker with start/stop timing
- Linear
Resampler - Simple linear interpolation resampler
- LmsFilter
- LMS (Least Mean Squares) Adaptive Filter
- Lock
Free Queue - Lock-free SPSC (Single Producer Single Consumer) queue
- Lock
Free Ring Buffer - Lock-free ring buffer with overwrite semantics
- MVDR
- Minimum Variance Distortionless Response (MVDR) beamformer
- Memory
Stream - In-memory signal stream for testing
- Microphone
Array - Microphone array configuration
- MosPredictor
- MOS (Mean Opinion Score) predictor
- Moving
Average Transform - Moving average transform (smooth signal)
- Mqtt
Client - MQTT client for receiving sensor data
- Mqtt
Config - Configuration for MQTT connection
- Mqtt
Message - MQTT message
- Mqtt
Stream - Synchronous wrapper for MqttClient as SignalStream
- Multi
Point Calibrator - Multi-point calibration using least squares
- Multi
Tone Generator - Multi-tone generator (sum of multiple sine waves)
- Multiplex
Config - Multiplexer configuration
- NMF
- Non-negative Matrix Factorization
- Nlms
Filter - NLMS (Normalized LMS) Adaptive Filter
- Normalize
Transform - Normalization transform (scale to [0, 1] or [-1, 1])
- Offset
Transform - Offset transform (add constant)
- PCA
- Principal Component Analysis
- Parallel
Batch Processor - Parallel batch processor using multiple threads
- Parallel
Pipeline - Parallel pipeline - process multiple pipelines in parallel and combine results
- Particle
Filter - Particle Filter for non-Gaussian/nonlinear state estimation
- Pesq
Calculator - PESQ-inspired perceptual quality metric Simplified version of ITU-T P.862
- Phase
Lock Loop - Phase-locked loop for maintaining stream synchronization
- Pink
Noise Generator - Pink noise generator (1/f spectrum)
- Pipeline
- A pipeline of stream transformations
- Polqa
Calculator - POLQA-inspired metric (Perceptual Objective Listening Quality Assessment)
- Quality
Metrics - Comprehensive quality metrics
- Quefrency
Filter - Quefrency domain filter
- Rate
Limiter - Rate limiter for controlling data flow
- Real
Cepstrum - Real cepstrum analyzer
- Reassigned
Result - Reassigned spectrogram result
- Reassigned
Spectrogram - Reassigned spectrogram
- Recorded
Frame - Recorded frame with optional timestamp
- Recorder
Config - Recorder configuration
- Resampler
- Resampler using polyphase filter implementation
- Ring
Buffer - Ring buffer for real-time signal processing
- Ring
Buffer Iter - Ring buffer iterator
- RlsFilter
- RLS (Recursive Least Squares) Adaptive Filter
- STransform
- S-transform (Stockwell transform)
- STransform
Result - S-transform result
- Sawtooth
Generator - Sawtooth wave generator
- Scale
Transform - Scaling transform (multiply by constant)
- Shared
Signal Buffer - Zero-copy signal buffer using Arc for shared ownership
- Signal
Compressor - Signal compressor
- Signal
Processor - Signal processor for pre-processing sensor data
- Signal
Quality - Signal quality metrics
- Signal
Queue - Lock-free signal queue for audio/sensor data
- Signal
Ring Buffer - Float ring buffer with signal processing operations
- Sinc
Streaming Resampler - High-quality streaming resampler using Sinc interpolation
- Sine
Generator - Sine wave generator
- SnrCalculator
- Signal-to-Noise Ratio calculator
- Spectrogram
- Spectrogram data structure
- Square
Generator - Square wave generator
- Step
Generator - Step function generator
- Stoi
Calculator - Short-Time Objective Intelligibility (STOI) metric Measures speech intelligibility in noisy conditions
- Stream
Config - Configuration for signal streams
- Stream
Demultiplexer - Stream demultiplexer - splits one stream into multiple outputs
- Stream
Health - Stream health metrics
- Stream
Multiplexer - Stream multiplexer - combines multiple streams into one
- Stream
Player - Stream player for playback
- Stream
Recorder - Stream recorder
- Stream
Synchronizer - Multi-stream synchronizer
- Streaming
Resampler - Real-time streaming resampler for audio processing
- Sync
Config - Configuration for stream synchronizer
- Temporal
Decorrelation - Temporal decorrelation for source separation
- Time
Synchronizer - Time synchronizer using NTP-like algorithm
- Time
Varying Resampler - Time-varying resampler for dynamic sample rate conversion
- Timestamped
Sample - Timestamped data sample
- TlsConfig
- TLS/SSL configuration
- Triangle
Generator - Triangle wave generator
- Unbounded
Queue - Lock-free unbounded MPMC (Multi Producer Multi Consumer) queue
- Wavelet
Analyzer - Wavelet analyzer for performing wavelet transforms
- White
Noise Generator - White noise generator using a simple LCG for reproducibility
- Wigner
Ville - Wigner-Ville distribution
- Wigner
Ville Result - Wigner-Ville distribution result
- Windowed
Batch Processor - Windowed batch processor for sliding window operations
- Zero
Copy Buffer - Zero-copy byte buffer for raw data streams
- Zero
Copy Buffer Mut - Mutable zero-copy buffer builder
Enums§
- Adaptive
Strategy - Strategy for adapting buffer size
- Audio
Backend - Audio backend selection
- Combine
Strategy - Compression
Method - Compression method for signal data
- Filter
- Filter types for signal processing
- Health
Status - Health status of a stream
- Interpolation
Method - IoError
- Errors that can occur in the IO module
- Multiplex
Strategy - Strategy for multiplexing multiple streams
- Nonlinearity
- Nonlinearity function for ICA
- QosLevel
- MQTT Quality of Service level
- Ratio
Modulation - Type of ratio modulation
- Recorder
Format - Recording format
- Wavelet
Type - Wavelet types for wavelet transforms
- Window
Type - Window function types for spectral analysis
Traits§
- Async
Signal Stream - Async trait for signal streams
- Signal
Generator - Signal generator trait
- Signal
Stream - Trait for signal streams
- Stream
Transform - Trait for stream transformations that can be chained