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 stable `0.1.0`.
12//!
13//! ## STT example
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(),
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(), WHISPER_SAMPLE_RATE)?;
41//! println!("{}", result.text);
42//! aurum_core::providers::local::clear_context_cache();
43//! # Ok(())
44//! # }
45//! ```
46
47pub mod audio;
48pub mod cancel;
49pub mod cleanup;
50pub mod config;
51pub mod error;
52pub mod model;
53pub mod output;
54pub mod pcm;
55pub mod postprocess;
56pub mod providers;
57#[cfg(feature = "tts")]
58pub mod tts;
59pub mod window;
60
61pub use audio::{load_audio, AudioInput, WHISPER_SAMPLE_RATE};
62pub use cancel::CancelFlag;
63pub use cleanup::{
64    apply_cleanup, apply_cleanup_with_segments, cleanup_text, CleanupProviderKind, CleanupResult,
65    CleanupStyle, OpenRouterCleanup, RulesCleanup, SegmentCleanupPolicy, TextCleanup,
66};
67pub use config::Config;
68pub use error::{Result, TranscriptionError};
69pub use model::{list_models, DownloadProgress, EnsureModelOptions, ModelInfo, ModelStatus};
70pub use output::{format_result, OutputFormat};
71pub use pcm::PcmBuffer;
72pub use providers::{
73    LocalWhisperProvider, OpenRouterProvider, Segment, TranscriptionOptions, TranscriptionProvider,
74    TranscriptionResult,
75};
76pub use window::{PartialClock, PartialWindowPolicy};
77
78#[cfg(feature = "tts")]
79pub use tts::{
80    format_model_list as format_tts_model_list, format_voice_list as format_tts_voice_list,
81    list_models as list_tts_models, list_voices as list_tts_voices, write_wav_i16_mono_atomic,
82    BackendKind as TtsBackendKind, LocalTtsProvider, SynthesisOptions, SynthesisProvider,
83    SynthesisResult, DEFAULT_TTS_MODEL, DEFAULT_TTS_VOICE,
84};