Skip to main content

autoagents_speech/
lib.rs

1//! # AutoAgents Speech
2//!
3//! Speech (TTS/STT) provider abstractions for the AutoAgents framework.
4//!
5//! This crate provides trait-based abstraction layers for speech providers, allowing
6//! different backends to be used interchangeably within the AutoAgents ecosystem.
7//!
8//! ## Features
9//!
10//! ### TTS (Text-to-Speech)
11//! - **Speech Generation**: Generate audio from text
12//! - **Voice Management**: Use predefined voices
13//! - **Streaming Support**: Optional streaming for real-time audio generation
14//! - **Model Management**: Support for multiple models and languages
15//!
16//! ### STT (Speech-to-Text) - Coming Soon
17//!
18//! ## Architecture
19//!
20//! The crate follows a trait-based design with provider implementations in the `providers` module:
21//!
22//! ### TTS Traits
23//! - `TTSProvider`: Marker trait combining all TTS capabilities
24//! - `TTSSpeechProvider`: Speech generation capabilities
25//! - `TTSModelsProvider`: Model and language support
26//!
27//! ## Providers
28//!
29//! Enable providers using feature flags:
30//! - `pocket-tts`: Pocket-TTS model support
31//!
32//! ## Example
33//!
34//! ```rust
35//! use autoagents_speech::{TTSProvider, SpeechRequest, VoiceIdentifier, AudioFormat};
36//!
37//! async fn generate_speech(provider: &dyn TTSProvider, text: &str) {
38//!     let request = SpeechRequest {
39//!         text: text.to_string(),
40//!         voice: VoiceIdentifier::new("alba"),
41//!         format: AudioFormat::Wav,
42//!         sample_rate: Some(24000),
43//!     };
44//!
45//!     let response = provider.generate_speech(request).await.unwrap();
46//!     println!("Generated {} samples", response.audio.samples.len());
47//! }
48//! ```
49
50pub mod error;
51mod provider;
52pub mod types;
53
54// Provider implementations
55pub mod providers;
56
57// Re-export main types
58pub use error::{TTSError, TTSResult};
59pub use provider::{TTSModelsProvider, TTSProvider, TTSSpeechProvider};
60pub use types::{
61    AudioChunk, AudioData, AudioFormat, ModelInfo, SharedAudioData, SpeechRequest, SpeechResponse,
62    VoiceIdentifier,
63};
64
65#[cfg(feature = "playback")]
66pub mod playback;