livespeech_sdk/lib.rs
1//! # LiveSpeech SDK
2//!
3//! A Rust SDK for real-time speech-to-speech AI conversations.
4//!
5//! ## Quick Start
6//!
7//! ```rust,no_run
8//! use livespeech_sdk::{LiveSpeechClient, Config, Region, SessionConfig, LiveSpeechEvent};
9//!
10//! #[tokio::main]
11//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
12//! // Create configuration
13//! let config = Config::builder()
14//! .region(Region::ApNortheast2)
15//! .api_key("your-api-key")
16//! .build()?;
17//!
18//! // Create client
19//! let client = LiveSpeechClient::new(config);
20//!
21//! // Subscribe to events (recommended)
22//! let mut events = client.subscribe();
23//! tokio::spawn(async move {
24//! while let Ok(event) = events.recv().await {
25//! match event {
26//! LiveSpeechEvent::Ready(_) => println!("Ready for audio"),
27//! LiveSpeechEvent::UserTranscript(e) => println!("You said: {}", e.text),
28//! LiveSpeechEvent::Response(e) => println!("AI: {}", e.text),
29//! LiveSpeechEvent::Audio(e) => println!("Audio: {} bytes", e.data.len()),
30//! LiveSpeechEvent::TurnComplete(_) => println!("Turn complete"),
31//! LiveSpeechEvent::Error(e) => eprintln!("Error: {}", e.message),
32//! _ => {}
33//! }
34//! }
35//! });
36//!
37//! // Connect and start session
38//! client.connect().await?;
39//! let session_id = client.start_session(Some(
40//! SessionConfig::new("You are a helpful assistant.")
41//! )).await?;
42//! println!("Session: {}", session_id);
43//!
44//! // Stream audio
45//! client.audio_start().await?;
46//! let audio_chunk: Vec<u8> = vec![0u8; 3200]; // PCM16 audio
47//! client.send_audio_chunk(&audio_chunk).await?;
48//! client.audio_end().await?;
49//!
50//! // Cleanup
51//! client.end_session().await?;
52//! client.disconnect().await;
53//!
54//! Ok(())
55//! }
56//! ```
57
58pub mod audio;
59pub mod client;
60pub mod error;
61pub mod types;
62
63// Re-export main types for convenience
64pub use client::{ConnectionState, LiveSpeechClient};
65pub use error::{LiveSpeechError, Result};
66pub use types::{
67 // Config types
68 Config, ConfigBuilder, ConfigError, FunctionParameters, PipelineMode, Region, SessionConfig,
69 Tool,
70 // Event types
71 AudioEvent, AudioHandler, ConnectedEvent, DisconnectedEvent, DisconnectReason, ErrorCode,
72 ErrorEvent, ErrorHandler, LiveSpeechEvent, ReadyEvent, ReconnectingEvent, ResponseEvent,
73 ResponseHandler, SessionEndedEvent, SessionStartedEvent, ToolCallEvent, TurnCompleteEvent,
74 UserTranscriptEvent,
75 // Message types
76 ClientMessage, ServerMessage, ToolResponsePayload,
77};
78
79// Re-export audio utilities
80pub use audio::{
81 bytes_to_int16, create_wav_header, decode_from_base64, encode_to_base64, float32_to_int16,
82 int16_to_bytes, int16_to_float32, wrap_pcm_in_wav, AudioEncoder,
83};