#![cfg_attr(not(test), deny(clippy::unwrap_used))]
#![cfg_attr(not(test), deny(clippy::expect_used))]
#![cfg_attr(not(test), deny(clippy::panic))]
#![cfg_attr(test, allow(deprecated))]
#![deny(unsafe_op_in_unsafe_fn)]
pub mod ahc;
pub mod asr;
pub use asr::{Asr, AsrError};
#[deprecated(
since = "0.12.0",
note = "not on the production offline or streaming path; use clusterer::Clusterer (offline) or streaming::StreamingPipeline / ArrivalOrderSpeakerCache (online)"
)]
pub mod cluster;
pub mod der;
pub mod features;
#[cfg(feature = "ffi")]
pub mod ffi;
pub(crate) mod hungarian;
pub mod kmeans;
#[cfg(feature = "spectral")]
pub mod spectral;
pub use features::{FbankConfig, FbankExtractor};
pub mod format;
pub mod overlap;
pub mod rttm;
pub mod streaming;
pub mod types;
pub mod utils;
pub use utils::merge_segments;
pub mod wav;
pub mod window;
#[cfg(feature = "download")]
pub mod models;
#[cfg(feature = "segmentation")]
pub mod segmentation;
#[cfg(feature = "segmentation")]
pub use segmentation::{
AggregationConfig, Aggregator, FrameLabel, MIN_AUDIO_SAMPLES, PowersetClass, PowersetDecoder,
RawSegment, SegmentationError, Segmenter, WindowOutput,
};
#[cfg(all(feature = "onnx", feature = "segmentation"))]
pub use segmentation::{PowersetConfig, PowersetSegmenter};
pub mod embedder;
pub use embedder::{DummyExtractor, Embedder, EmbedderError, apply_overlap_mask};
#[cfg(all(feature = "onnx", feature = "embedder"))]
pub use embedder::{CamPlusPlusExtractor, ResNet34Adapter};
#[cfg(feature = "clusterer")]
pub mod clusterer;
#[cfg(feature = "clusterer")]
#[allow(deprecated)]
pub use clusterer::KMeansClusterer;
#[cfg(feature = "clusterer")]
pub use clusterer::{
AhcClusterer, Clusterer, ClustererError, KmeansClusterer, MinClusterSizeClusterer,
};
#[cfg(all(feature = "clusterer", feature = "spectral"))]
pub use clusterer::NmeScClusterer;
#[cfg(all(feature = "clusterer", feature = "vbx"))]
pub use clusterer::vbx::{VbxClusterer, VbxClustererConfig};
#[cfg(feature = "resegmentation")]
pub mod resegmentation;
#[cfg(feature = "resegmentation")]
pub use resegmentation::{
OverlapRegionInput, OverlapResegmenter, ResegmentError, ResegmentInputs, Resegmenter,
SpeakerCentroid, compute_centroids,
};
#[cfg(all(feature = "resegmentation", feature = "segmentation"))]
pub use resegmentation::extract_overlap_time_ranges;
pub mod labeling;
pub use labeling::{
UncoveredPolicy, assign_speakers_by_midpoint, label_words, speaker_at, speaker_at_stable,
};
#[cfg(feature = "attribution")]
pub mod attribution;
#[cfg(feature = "attribution")]
pub use attribution::{
AttributionConfig, SpeakerEmbedding, WhoSaidWhat, WordAnchor, attribute_and_fill,
attribute_and_fill_with_config, attribute_words, attribute_words_with_config, fill_turn_text,
fill_turn_text_with_config, interpolate_word_timestamps, speaker_embeddings_from_segments,
who_said_what, who_said_what_with_config,
};
pub mod pipeline;
#[cfg(all(
feature = "onnx",
feature = "download",
feature = "segmentation",
feature = "embedder",
feature = "clusterer",
feature = "resegmentation",
))]
pub mod pipeline_v2;
#[cfg(all(
feature = "onnx",
feature = "download",
feature = "segmentation",
feature = "embedder",
feature = "clusterer",
feature = "resegmentation",
))]
pub use pipeline_v2::{Pipeline, PipelineConfig, PipelineError};
#[cfg(any(feature = "cli", feature = "mcp"))]
pub mod cli_common;
pub mod vad;
pub use vad::{EnergyVad, VadConfig, VadError, VoiceActivityDetector, segment_speech};
#[cfg(feature = "onnx")]
pub mod silero_vad;
#[cfg(feature = "onnx")]
pub use silero_vad::SileroVad;
#[cfg(feature = "vad-earshot")]
pub mod earshot_vad;
#[cfg(feature = "vad-earshot")]
pub use earshot_vad::{
ADAPTER_TYPE as EARSHOT_ADAPTER_TYPE, EarshotVad, FRAME_SIZE as EARSHOT_FRAME_SIZE,
};
#[cfg(feature = "onnx")]
pub mod onnx;
#[cfg(feature = "onnx")]
pub mod fbank_onnx;
#[cfg(feature = "sortformer")]
pub mod sortformer;
pub use der::{DerDecomposition, DerResult, SpeakerRecall, WderResult, compute_der, compute_wder};
#[cfg(feature = "download")]
pub use models::{ModelRegistry, ProfileModels, RegistryError};
pub use overlap::OverlapRegion;
pub use types::ClusterConfig;
pub use types::{
Confidence, ConfigError, DEFAULT_AHC_THRESHOLD, DiarizationConfig, DiarizationResult, Profile,
SampleRate, Segment, SpeakerId, SpeakerIdRemap, SpeakerSummary, SpeakerTurn, TimeRange,
Transcript, Word, WordAlignment, confidence_from_distance, confidence_from_similarity,
exclusive_turns, mean_speaker_embeddings, remap_segments, remap_turns,
segment_confidences_from_embeddings,
};
pub use window::{WindowBuffer, WindowIter};
#[cfg(feature = "onnx")]
pub use fbank_onnx::FbankOnnxExtractor;