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;
55#[cfg(feature = "tts")]
56pub mod tts;
57pub mod window;
58
59pub use audio::{load_audio, AudioInput, WHISPER_SAMPLE_RATE};
60pub use cancel::CancelFlag;
61pub use cleanup::{
62 apply_cleanup, apply_cleanup_with_segments, cleanup_text, CleanupProviderKind, CleanupResult,
63 CleanupStyle, OpenRouterCleanup, RulesCleanup, SegmentCleanupPolicy, TextCleanup,
64};
65pub use config::Config;
66pub use error::{Result, TranscriptionError};
67pub use model::{list_models, DownloadProgress, EnsureModelOptions, ModelInfo, ModelStatus};
68pub use output::{format_result, OutputFormat};
69pub use pcm::PcmBuffer;
70pub use providers::{
71 LocalWhisperProvider, OpenRouterProvider, Segment, TranscriptionOptions, TranscriptionProvider,
72 TranscriptionResult,
73};
74pub use window::{PartialClock, PartialWindowPolicy};
75
76#[cfg(feature = "tts")]
77pub use tts::{
78 format_model_list as format_tts_model_list, format_voice_list as format_tts_voice_list,
79 list_models as list_tts_models, list_voices as list_tts_voices, write_wav_i16_mono_atomic,
80 BackendKind as TtsBackendKind, LocalTtsProvider, SynthesisOptions, SynthesisProvider,
81 SynthesisResult, DEFAULT_TTS_MODEL, DEFAULT_TTS_VOICE,
82};