|
|
|
|
|
|
|
|
use thiserror::Error; |
|
|
|
|
|
|
|
|
#[derive(Error, Debug)] |
|
|
pub enum Error { |
|
|
#[error("Audio processing error: {0}")] |
|
|
Audio(String), |
|
|
|
|
|
#[error("Text processing error: {0}")] |
|
|
Text(String), |
|
|
|
|
|
#[error("Model inference error: {0}")] |
|
|
Model(String), |
|
|
|
|
|
#[error("Configuration error: {0}")] |
|
|
Config(String), |
|
|
|
|
|
#[error("IO error: {0}")] |
|
|
Io(#[from] std::io::Error), |
|
|
|
|
|
#[error("File not found: {0}")] |
|
|
FileNotFound(String), |
|
|
|
|
|
#[error("Invalid format: {0}")] |
|
|
InvalidFormat(String), |
|
|
|
|
|
#[error("ONNX Runtime error: {0}")] |
|
|
Onnx(String), |
|
|
|
|
|
#[error("Tokenization error: {0}")] |
|
|
Tokenization(String), |
|
|
|
|
|
#[error("Model loading error: {0}")] |
|
|
ModelLoading(String), |
|
|
|
|
|
#[error("Inference error: {0}")] |
|
|
Inference(String), |
|
|
|
|
|
#[error("Vocoder error: {0}")] |
|
|
Vocoder(String), |
|
|
|
|
|
#[error("Unsupported operation: {0}")] |
|
|
Unsupported(String), |
|
|
|
|
|
#[error("Download error: {0}")] |
|
|
Download(String), |
|
|
|
|
|
#[error("Shape mismatch: expected {expected}, got {actual}")] |
|
|
ShapeMismatch { expected: String, actual: String }, |
|
|
} |
|
|
|
|
|
|
|
|
pub type Result<T> = std::result::Result<T, Error>; |
|
|
|
|
|
impl From<serde_yaml::Error> for Error { |
|
|
fn from(err: serde_yaml::Error) -> Self { |
|
|
Error::Config(err.to_string()) |
|
|
} |
|
|
} |
|
|
|
|
|
impl From<serde_json::Error> for Error { |
|
|
fn from(err: serde_json::Error) -> Self { |
|
|
Error::Config(err.to_string()) |
|
|
} |
|
|
} |
|
|
|
|
|
impl From<hound::Error> for Error { |
|
|
fn from(err: hound::Error) -> Self { |
|
|
Error::Audio(err.to_string()) |
|
|
} |
|
|
} |
|
|
|
|
|
impl From<ndarray::ShapeError> for Error { |
|
|
fn from(err: ndarray::ShapeError) -> Self { |
|
|
Error::ShapeMismatch { |
|
|
expected: "valid shape".into(), |
|
|
actual: err.to_string(), |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
impl From<regex::Error> for Error { |
|
|
fn from(err: regex::Error) -> Self { |
|
|
Error::Text(err.to_string()) |
|
|
} |
|
|
} |
|
|
|