aurum_core/lib.rs
1//! # aurum-core
2//!
3//! Reusable on-device speech-to-text library (experimental API).
4//!
5//! Aurum converts audio to text using local whisper.cpp models
6//! by default, with an optional OpenRouter remote provider.
7//!
8//! The API may change without notice until a stable `0.1.0`.
9//!
10//! ## Example
11//!
12//! ```rust,no_run
13//! use aurum_core::audio::{AudioInput, WHISPER_SAMPLE_RATE};
14//! use aurum_core::pcm::PcmBuffer;
15//! use aurum_core::providers::{LocalWhisperProvider, TranscriptionOptions};
16//! use std::path::PathBuf;
17//!
18//! # async fn demo() -> aurum_core::error::Result<()> {
19//! let provider = LocalWhisperProvider::new(PathBuf::from("/tmp/aurum-cache"))
20//! .with_progress(false)
21//! .with_local_only(false);
22//! provider.preload("tiny-q5_1").await?;
23//!
24//! // Mic host: push PCM, then finalize (no files / ffmpeg).
25//! let mut buf = PcmBuffer::dictation();
26//! buf.push(&[0.0f32; 1600])?;
27//! let result = provider
28//! .transcribe_pcm(
29//! buf.samples(),
30//! &TranscriptionOptions {
31//! model: "tiny-q5_1".into(),
32//! language: "en".into(),
33//! timestamps: false,
34//! cancel: None,
35//! },
36//! )
37//! .await?;
38//! let _ = AudioInput::from_pcm_slice(buf.samples(), WHISPER_SAMPLE_RATE)?;
39//! println!("{}", result.text);
40//! aurum_core::providers::local::clear_context_cache();
41//! # Ok(())
42//! # }
43//! ```
44
45pub mod audio;
46pub mod cancel;
47pub mod cleanup;
48pub mod config;
49pub mod error;
50pub mod model;
51pub mod output;
52pub mod pcm;
53pub mod postprocess;
54pub mod providers;
55pub mod window;
56
57pub use audio::{load_audio, AudioInput, WHISPER_SAMPLE_RATE};
58pub use cancel::CancelFlag;
59pub use cleanup::{
60 apply_cleanup, apply_cleanup_with_segments, cleanup_text, CleanupProviderKind, CleanupResult,
61 CleanupStyle, OpenRouterCleanup, RulesCleanup, SegmentCleanupPolicy, TextCleanup,
62};
63pub use config::Config;
64pub use error::{Result, TranscriptionError};
65pub use model::{list_models, DownloadProgress, EnsureModelOptions, ModelInfo, ModelStatus};
66pub use output::{format_result, OutputFormat};
67pub use pcm::PcmBuffer;
68pub use providers::{
69 LocalWhisperProvider, OpenRouterProvider, Segment, TranscriptionOptions, TranscriptionProvider,
70 TranscriptionResult,
71};
72pub use window::{PartialClock, PartialWindowPolicy};