pub mod advanced_features;
pub mod advanced_quant;
pub mod batch;
pub mod compat;
pub mod cross_modal;
#[cfg(not(target_arch = "wasm32"))]
mod continuous;
pub mod domain_specific;
pub mod enhanced_multiscale;
pub mod entropy;
mod error;
#[cfg(not(target_arch = "wasm32"))]
pub mod gpu_quant;
pub mod metrics;
mod mulaw;
mod multiscale;
#[cfg(feature = "vqvae")]
pub mod neural_codec;
#[cfg(not(target_arch = "wasm32"))]
pub mod persistence;
pub mod pretraining;
pub mod profiling;
mod quantizer;
#[cfg(not(target_arch = "wasm32"))]
pub mod serde_utils;
pub mod simd_quant;
pub mod specialized;
pub mod transformer;
pub mod types;
pub mod utils;
#[cfg(feature = "wasm")]
pub mod wasm_bindings;
#[cfg(feature = "vqvae")]
pub mod vqvae_core;
#[cfg(feature = "vqvae")]
pub mod vqvae;
#[cfg(not(target_arch = "wasm32"))]
pub use continuous::{
ContinuousTokenizer, ReconstructionMetrics, TrainableContinuousTokenizer, TrainingConfig,
};
pub use error::{TokenizerError, TokenizerResult};
pub use mulaw::MuLawCodec;
pub use multiscale::{
MultiScaleTokenizer, PoolMethod, PyramidTokenizer, ScaleLevel, UpsampleMethod,
};
pub use quantizer::{LinearQuantizer, Quantizer};
pub use advanced_quant::{
AdaptiveQuantizer, DeadZoneQuantizer, EntropyConstrainedQuantizer, NonUniformQuantizer,
};
#[cfg(feature = "vqvae")]
pub use vqvae::{
ProductQuantizer, ProductQuantizerConfig, RVQVAETokenizer, ResidualVQ, VQConfig,
VQVAETokenizer, VectorQuantizer,
};
pub use batch::{BatchTokenizer, StreamingTokenizer};
pub use entropy::{
compression_ratio, compute_frequencies, ArithmeticDecoder, ArithmeticEncoder,
BitrateController, HuffmanDecoder, HuffmanEncoder, RangeDecoder, RangeEncoder,
};
#[cfg(not(target_arch = "wasm32"))]
pub use persistence::{load_config, save_config, ModelCheckpoint, ModelMetadata, ModelVersion};
pub use specialized::{
DCTConfig, DCTTokenizer, FourierConfig, FourierTokenizer, KMeansConfig, KMeansTokenizer,
WaveletConfig, WaveletFamily, WaveletTokenizer,
};
pub use advanced_features::{
add_batch_jitter, add_jitter, apply_batch_token_dropout, apply_temporal_coherence,
apply_token_dropout, HierarchicalConfig, HierarchicalTokenizer, JitterConfig,
TemporalCoherenceConfig, TemporalFilterType, TokenDropoutConfig,
};
pub use compat::{AudioMetadata, DType, ModelConfig, OnnxConfig, PyTorchCompat, TensorInfo};
#[cfg(feature = "vqvae")]
pub use neural_codec::{NeuralCodec, NeuralCodecConfig};
pub use domain_specific::{
EnvironmentalTokenizer, EnvironmentalTokenizerConfig, MusicTokenizer, MusicTokenizerConfig,
SpeechTokenizer, SpeechTokenizerConfig,
};
pub use transformer::{
FeedForward, LayerNorm, MultiHeadAttention, PositionalEncoding, TransformerConfig,
TransformerEncoderLayer, TransformerTokenizer,
};
pub use pretraining::{
ContrastiveConfig, ContrastiveLearning, MSMConfig, MaskedSignalModeling, TemporalPrediction,
TemporalPredictionConfig,
};
pub use profiling::{
AllocationEvent, EventType, MemoryProfiler, MemorySnapshot, ProfileScope, ScopeStats,
TimelineAnalyzer,
};
pub use cross_modal::{
CrossModalAligner, CrossModalSequence, CrossModalToken, CrossModalTokenizer, ModalityKind,
ModalityTokenizerConfig,
};
pub use scirs2_core::ndarray::{Array1, Array2};
pub trait SignalTokenizer {
fn encode(&self, signal: &Array1<f32>) -> TokenizerResult<Array1<f32>>;
fn decode(&self, tokens: &Array1<f32>) -> TokenizerResult<Array1<f32>>;
fn embed_dim(&self) -> usize;
fn vocab_size(&self) -> usize;
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub enum TokenizerType {
Continuous { embed_dim: usize },
MuLaw { bits: u8 },
Linear { bits: u8, min: f32, max: f32 },
VectorQuantized {
codebook_size: usize,
embed_dim: usize,
},
MultiScale {
embed_dim_per_level: usize,
num_levels: usize,
},
Pyramid {
embed_dim_per_level: usize,
num_levels: usize,
},
}
impl Default for TokenizerType {
fn default() -> Self {
TokenizerType::Continuous { embed_dim: 256 }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_tokenizer_type_default() {
let t = TokenizerType::default();
match t {
TokenizerType::Continuous { embed_dim } => assert_eq!(embed_dim, 256),
_ => panic!("Expected Continuous tokenizer"),
}
}
}