use thiserror::Error; #[derive(Debug, Error)] pub enum CsmError { #[error("io: {0}")] Io(#[from] std::io::Error), #[error("hf-hub: {0}")] Hub(#[from] hf_hub::api::sync::ApiError), #[error("candle: {0}")] Candle(#[from] candle_core::Error), #[error("tokenizers: {0}")] Tokenizer(String), #[error("safetensors: {0}")] SafeTensors(#[from] safetensors::SafeTensorError), #[error("hound: {0}")] Hound(#[from] hound::Error), #[error("symphonia: {0}")] Symphonia(#[from] symphonia::core::errors::Error), #[error("rubato: {0}")] Rubato(String), #[error("shape mismatch: {0}")] Shape(String), #[error("context overflow: {used}/{max} tokens")] ContextOverflow { used: usize, max: usize }, #[error("generation reached audio EOT")] EotReached, #[error("config: {0}")] Config(String), #[error("other: {0}")] Other(#[from] anyhow::Error), } pub type Result = std::result::Result; impl From for CsmError { fn from(e: tokenizers::Error) -> Self { Self::Tokenizer(e.to_string()) } }