File size: 1,964 Bytes
2bbfbb7 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
//! Error types for IndexTTS
use thiserror::Error;
/// Main error type for IndexTTS
#[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 },
}
/// Result type for IndexTTS operations
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())
}
}
|