1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum AudioError {
8 #[error("TTS error ({provider}): {message}")]
10 Tts {
11 provider: String,
13 message: String,
15 },
16
17 #[error("STT error ({provider}): {message}")]
19 Stt {
20 provider: String,
22 message: String,
24 },
25
26 #[error("Music generation error: {0}")]
28 Music(String),
29
30 #[error("Audio processing error: {0}")]
32 Fx(String),
33
34 #[error("Pipeline closed: {0}")]
36 PipelineClosed(String),
37
38 #[error("VAD error: {0}")]
40 Vad(String),
41
42 #[error("Codec error: {0}")]
44 Codec(String),
45
46 #[error("Model download failed for '{model_id}': {message}")]
48 ModelDownload {
49 model_id: String,
51 message: String,
53 },
54
55 #[error("I/O error: {0}")]
57 Io(#[from] std::io::Error),
58
59 #[cfg(any(feature = "tts", feature = "stt", feature = "music"))]
61 #[error("Network error: {0}")]
62 Network(#[from] reqwest::Error),
63
64 #[cfg(feature = "desktop-audio")]
66 #[error("Device error: {0}")]
67 Device(String),
68}
69
70pub type AudioResult<T> = Result<T, AudioError>;