Skip to main content

adk_audio/
error.rs

1//! Error types for the adk-audio crate.
2
3use thiserror::Error;
4
5/// Errors produced by audio subsystems.
6#[derive(Debug, Error)]
7pub enum AudioError {
8    /// Text-to-speech provider error.
9    #[error("TTS error ({provider}): {message}")]
10    Tts {
11        /// Provider name (e.g. "elevenlabs", "openai").
12        provider: String,
13        /// Actionable error message.
14        message: String,
15    },
16
17    /// Speech-to-text provider error.
18    #[error("STT error ({provider}): {message}")]
19    Stt {
20        /// Provider name (e.g. "whisper", "deepgram").
21        provider: String,
22        /// Actionable error message.
23        message: String,
24    },
25
26    /// Music generation error.
27    #[error("Music generation error: {0}")]
28    Music(String),
29
30    /// Audio processing / FX error.
31    #[error("Audio processing error: {0}")]
32    Fx(String),
33
34    /// Pipeline is closed or misconfigured.
35    #[error("Pipeline closed: {0}")]
36    PipelineClosed(String),
37
38    /// Voice activity detection error.
39    #[error("VAD error: {0}")]
40    Vad(String),
41
42    /// Codec encode/decode error.
43    #[error("Codec error: {0}")]
44    Codec(String),
45
46    /// Model download or registry error.
47    #[error("Model download failed for '{model_id}': {message}")]
48    ModelDownload {
49        /// HuggingFace model identifier.
50        model_id: String,
51        /// Actionable error message.
52        message: String,
53    },
54
55    /// I/O error.
56    #[error("I/O error: {0}")]
57    Io(#[from] std::io::Error),
58
59    /// Network / HTTP error.
60    #[cfg(any(feature = "tts", feature = "stt", feature = "music"))]
61    #[error("Network error: {0}")]
62    Network(#[from] reqwest::Error),
63
64    /// Desktop audio device error (capture, playback, enumeration).
65    #[cfg(feature = "desktop-audio")]
66    #[error("Device error: {0}")]
67    Device(String),
68}
69
70/// Convenience result type for audio operations.
71pub type AudioResult<T> = Result<T, AudioError>;