Skip to main content

brainwires_audio/
lib.rs

1#![deny(missing_docs)]
2//! # brainwires-audio
3//!
4//! Audio capture, playback, speech-to-text, and text-to-speech for the
5//! Brainwires Agent Framework.
6
7/// Ring buffer for streaming audio data.
8pub mod buffer;
9/// Audio capture trait and implementations.
10pub mod capture;
11/// Audio device enumeration and selection.
12pub mod device;
13/// Error types for audio operations.
14pub mod error;
15/// Audio playback trait and implementations.
16pub mod playback;
17/// Speech-to-text trait and implementations.
18pub mod stt;
19/// Text-to-speech trait and implementations.
20pub mod tts;
21/// Core audio types, configs, and data structures.
22pub mod types;
23/// WAV encoding and decoding utilities.
24pub mod wav;
25
26/// Native hardware audio backends using cpal.
27#[cfg(feature = "native")]
28pub mod hardware;
29
30/// Cloud API integrations (OpenAI STT/TTS).
31#[cfg(feature = "native")]
32pub mod api;
33
34/// FLAC encoding utilities.
35#[cfg(feature = "flac")]
36pub mod flac;
37
38/// Local inference backends (whisper.cpp via whisper-rs).
39#[cfg(feature = "local-stt")]
40pub mod local;
41
42// Re-exports
43pub use buffer::AudioRingBuffer;
44pub use capture::AudioCapture;
45pub use device::{AudioDevice, DeviceDirection};
46pub use error::{AudioError, AudioResult};
47pub use playback::AudioPlayback;
48pub use stt::SpeechToText;
49pub use tts::TextToSpeech;
50pub use types::{
51    AudioBuffer, AudioConfig, OutputFormat, SampleFormat, SttOptions, Transcript,
52    TranscriptSegment, TtsOptions, Voice,
53};
54pub use wav::{decode_wav, encode_wav};
55
56#[cfg(feature = "native")]
57pub use api::{
58    AzureStt, AzureTts, CartesiaTts, DeepgramStt, DeepgramTts, ElevenLabsStt, ElevenLabsTts,
59    FishStt, FishTts, GoogleTts, MurfTts, OpenAiResponsesStt, OpenAiResponsesTts, OpenAiStt,
60    OpenAiTts,
61};
62#[cfg(feature = "flac")]
63pub use flac::{decode_flac, encode_flac};
64#[cfg(feature = "native")]
65pub use hardware::{CpalCapture, CpalPlayback};
66#[cfg(feature = "local-stt")]
67pub use local::WhisperStt;