#![doc = include_str!("../README.md")]
#![cfg_attr(docsrs, feature(doc_cfg))]
#![cfg_attr(docsrs, allow(unused_attributes))]
#![deny(missing_docs)]
#![allow(clippy::doc_lazy_continuation)]
#![allow(
clippy::too_many_arguments,
clippy::needless_range_loop,
clippy::module_inception,
clippy::collapsible_if
)]
#![deny(unsafe_code)]
pub mod align;
pub mod core;
pub mod time;
pub mod types;
pub use align::{BoundsSource, Run, SegmentLike, dispatch_segments};
#[cfg(feature = "runner")]
#[cfg_attr(docsrs, doc(cfg(feature = "runner")))]
pub use align::dispatch;
pub use mediatime::{TimeRange, Timebase, Timestamp};
pub use types::{
AlignmentError, AlignmentFailure, AsrError, AsrFailure, Backpressure, ChunkId,
GapExceedsTolerance, InconsistentTimebase, InvalidTimebase, Lang,
LanguageUnsupportedForAlignment, PtsRegression, PushKind, TranscriberError, Transcript,
VadAheadOfAudio, VadSegment, Word, WorkFailure, WorkerHangTimeout, WorkerKind,
};
pub use core::{
AlignmentResult, AsrParams, AsrParamsOverride, AsrResult, Command, Event, LanguagePolicy,
SamplingStrategy, Transcriber, TranscriberOptions,
};
#[cfg(any(feature = "runner", feature = "emissions"))]
#[cfg_attr(docsrs, doc(cfg(any(feature = "runner", feature = "emissions"))))]
pub mod runner;
#[cfg(feature = "runner")]
#[cfg_attr(docsrs, doc(cfg(feature = "runner")))]
pub use runner::{AsrChunkContext, AsrSource, RunnerError, WhisperAsrSource};
#[cfg(feature = "runner")]
#[cfg_attr(docsrs, doc(cfg(feature = "runner")))]
pub use whispercpp::{Context as WhisperContext, ContextParams as WhisperContextParameters};
#[cfg(feature = "alignment")]
#[cfg_attr(docsrs, doc(cfg(feature = "alignment")))]
pub use runner::{
AlignWorkItem, Aligner, AlignerKey, AlignmentFallback, AlignmentLookup, AlignmentSet,
AlignmentSetBuilder, ChineseNormalizer, DEFAULT_MAX_INTRA_SILENT_RUN,
DEFAULT_MIN_SPEECH_COVERAGE, DynTextNormalizer, EnglishNormalizer, JapaneseNormalizer,
KoreanNormalizer, LatinNormalizer, NormalizationError, NormalizedText, TextNormalizer, bundled,
default_normalizer_for, run_one_alignment,
};
#[cfg(feature = "alignment")]
#[cfg_attr(docsrs, doc(cfg(feature = "alignment")))]
pub use ort;
#[cfg(feature = "emissions")]
#[cfg_attr(docsrs, doc(cfg(feature = "emissions")))]
pub mod emissions {
pub use crate::{
core::oov::{
OovDecision, OovEvent, OovKind, ResolvedOov, default_oov_decisions,
fail_closed_all_decisions, wildcard_all_decisions,
},
runner::aligner::{
ChineseNormalizer, DynTextNormalizer, EnglishNormalizer, JapaneseNormalizer,
KoreanNormalizer, LatinNormalizer, NormalizationError, NormalizedText, TextNormalizer,
WildcardBoundary,
algorithm::{
compose::{DEFAULT_MAX_INTRA_SILENT_RUN, DEFAULT_MIN_SPEECH_COVERAGE},
encode::{LogProbsShapeError, LogProbsValueClass, LogProbsValueError},
errors::{EmissionsError, EmissionsFailure},
},
core::PreparedChunk,
default_normalizer_for,
emissions_aligner::{EmissionsAligner, EmissionsAlignerBuilder},
emissions_api::{Emissions, OutputClock, SampleSpan, SpanError, SpeechCoverage, SpeechSpans},
},
};
}
#[cfg(all(feature = "bench-internals", feature = "alignment"))]
#[doc(hidden)]
pub mod __bench {
pub use crate::runner::aligner::algorithm::{
encode::LogProbsTV,
normalize::{scalar, zero_mean_unit_var_normalize},
tokenize::{TokenizedText, detect_oov_events, tokenize_with_word_map},
trellis_beam::{
ALIGN_BEAM_WIDTH, PathPointPublic, WILDCARD_TOKEN_ID, WordSegment, align_to_word_segments,
backtrack_beam, get_trellis,
},
};
#[cfg(target_arch = "aarch64")]
pub use crate::runner::aligner::algorithm::normalize::neon;
#[cfg(target_arch = "x86_64")]
pub use crate::runner::aligner::algorithm::normalize::{x86_avx2, x86_avx512, x86_sse41};
}