Skip to main content

aurum_core/
lib.rs

1//! # aurum-core
2//!
3//! Reusable **on-device speech I/O** library (experimental API).
4//!
5//! - **STT** — local whisper.cpp by default; optional OpenRouter
6//! - **TTS** — local ONNX KittenTTS (cargo feature `tts`, default on)
7//! - **Cleanup** — rules or optional LLM post-edit
8//!
9//! Tagline: *Speech both ways. On-device by default.*
10//!
11//! The API may change without notice until a deliberate major version.
12//!
13//! ## STT example (provider path)
14//!
15//! ```rust,no_run
16//! use aurum_core::audio::{AudioInput, WHISPER_SAMPLE_RATE};
17//! use aurum_core::pcm::PcmBuffer;
18//! use aurum_core::providers::{LocalWhisperProvider, TranscriptionOptions};
19//! use std::path::PathBuf;
20//!
21//! # async fn demo() -> aurum_core::error::Result<()> {
22//! let provider = LocalWhisperProvider::new(PathBuf::from("/tmp/aurum-cache"))
23//!     .with_progress(false)
24//!     .with_local_only(false);
25//! provider.preload("tiny-q5_1").await?;
26//!
27//! let mut buf = PcmBuffer::dictation();
28//! buf.push(&[0.0f32; 1600])?;
29//! let result = provider
30//!     .transcribe_pcm(
31//!         buf.samples().as_slice(),
32//!         &TranscriptionOptions {
33//!             model: "tiny-q5_1".into(),
34//!             language: "en".into(),
35//!             timestamps: false,
36//!             cancel: None,
37//!         },
38//!     )
39//!     .await?;
40//! let _ = AudioInput::from_pcm_slice(buf.samples().as_slice(), WHISPER_SAMPLE_RATE)?;
41//! println!("{}", result.text);
42//! aurum_core::providers::local::clear_context_cache();
43//! # Ok(())
44//! # }
45//! ```
46//!
47//! ## Engine path (preferred for library hosts)
48//!
49//! ```rust,no_run
50//! use aurum_core::AurumEngine;
51//!
52//! # fn demo() -> aurum_core::error::Result<()> {
53//! let engine = AurumEngine::load()?;
54//! let _ = engine.doctor();
55//! let _ = engine.support_bundle(None);
56//! engine.shutdown();
57//! # Ok(())
58//! # }
59//! ```
60
61pub mod audio;
62pub mod batch;
63pub mod bench;
64pub mod cache;
65pub mod cancel;
66pub mod capabilities;
67pub mod cleanup;
68pub mod config;
69pub mod doctor;
70pub mod download;
71pub mod dto;
72pub mod engine;
73pub mod error;
74pub mod eval;
75pub mod model;
76pub mod observability;
77pub mod output;
78pub mod partial;
79pub mod pcm;
80pub mod postprocess;
81pub mod profile;
82pub mod providers;
83pub mod remote;
84pub mod runtime;
85pub mod secret;
86pub mod support;
87#[cfg(feature = "tts")]
88pub mod tts;
89pub mod window;
90
91pub use audio::{load_audio, AudioInput, WHISPER_SAMPLE_RATE};
92pub use batch::{
93    build_items, discover_inputs, fingerprint_file, manifest_path, merge_for_resume, work_indices,
94    BatchItem, BatchItemStatus, BatchManifest, BatchSummary, AUDIO_EXTENSIONS, BATCH_MANIFEST_NAME,
95    BATCH_MANIFEST_VERSION,
96};
97pub use cancel::CancelFlag;
98pub use capabilities::{
99    preflight_cleanup, preflight_stt, preflight_tts, ProviderCapabilities,
100    CAPABILITY_SCHEMA_VERSION,
101};
102pub use cleanup::{
103    apply_cleanup, apply_cleanup_with_segments, cleanup_text, CleanupProviderKind, CleanupReport,
104    CleanupResult, CleanupStyle, OpenRouterCleanup, RulesCleanup, SegmentCleanupPolicy,
105    TextCleanup,
106};
107pub use config::{Config, EffectiveConfigDiagnostic, RawConfig, ValidatedConfig};
108pub use doctor::{run_doctor, DoctorCheck, DoctorReport, DoctorSeverity, DOCTOR_SCHEMA_VERSION};
109pub use dto::{ErrorDto, SttResultDto, ERROR_SCHEMA_VERSION, STT_RESULT_SCHEMA_VERSION};
110pub use engine::AurumEngine;
111pub use error::{AurumError, ErrorCategory, Result, TranscriptionError};
112pub use eval::{
113    build_report, char_error_rate, repetition_ratio, score_stt, silence_false_positive,
114    smoke_corpus, word_error_rate, EvalCorpus, EvalReport, SttFixture, SttScore,
115};
116pub use model::{list_models, DownloadProgress, EnsureModelOptions, ModelInfo, ModelStatus};
117pub use observability::{
118    process_metrics, DiagnosticBundle, Metrics, MetricsSnapshot, SpanTimer, METRICS_SCHEMA_VERSION,
119};
120pub use output::{
121    commit_text, format_result, write_result, write_result_to_path, CommitMode, OutputFormat,
122    OutputTransaction, SymlinkPolicy, DEFAULT_MAX_OUTPUT_BYTES,
123};
124pub use partial::{PartialSession, PartialSessionConfig, PartialUpdate};
125pub use pcm::PcmBuffer;
126pub use postprocess::{normalize_result_with_report, NormalizationReport};
127pub use profile::{
128    format_recommendation, resolve_profile, ProfileResolution, QualityProfile,
129    PROFILE_EVIDENCE_VERSION,
130};
131pub use providers::{
132    LocalWhisperProvider, OpenRouterProvider, OpenRouterSttMode, Segment, TranscriptionOptions,
133    TranscriptionProvider, TranscriptionResult,
134};
135pub use remote::{HardenedHttpClient, RemotePolicy};
136pub use runtime::{
137    GovernorConfig, Lifecycle, LifecycleState, OpContext, PermitKind, ResourceGovernor,
138};
139pub use secret::SecretString;
140pub use support::{
141    build_support_bundle, default_bundle_path, SupportBundle, SUPPORT_BUNDLE_VERSION,
142};
143pub use window::{PartialClock, PartialWindowPolicy};
144
145#[cfg(feature = "tts")]
146pub use tts::{
147    format_adapters as format_tts_adapters, format_custom_list as format_tts_custom_list,
148    format_inspect as format_tts_inspect, format_model_list as format_tts_model_list,
149    format_voice_list as format_tts_voice_list, inspect_pack as inspect_tts_pack,
150    list_adapters as list_tts_adapters, list_models as list_tts_models,
151    list_voices as list_tts_voices, propose_add_local as propose_tts_add_local,
152    resolve_voice_for_model, run_kitten_catalogue_conformance, run_pack_conformance,
153    verify_pack as verify_tts_pack, write_add_manifest as write_tts_add_manifest,
154    write_wav_i16_mono_atomic, write_wav_i16_mono_transaction, BackendKind as TtsBackendKind,
155    LocalTtsProvider, SynthesisOptions, SynthesisProvider, SynthesisResult, TrustMode,
156    DEFAULT_TTS_MODEL, DEFAULT_TTS_VOICE, KOKORO_DEFAULT_VOICE, KOKORO_TTS_MODEL,
157};