Skip to main content

whisper_cpp_plus/
error.rs

1use thiserror::Error;
2
3#[derive(Error, Debug)]
4pub enum WhisperError {
5    #[error("Failed to load model: {0}")]
6    ModelLoadError(String),
7
8    #[error("Invalid audio format: expected 16kHz mono f32")]
9    InvalidAudioFormat,
10
11    #[error("Transcription failed: {0}")]
12    TranscriptionError(String),
13
14    #[error("Invalid context")]
15    InvalidContext,
16
17    #[error("Out of memory")]
18    OutOfMemory,
19
20    #[error("Invalid parameter: {0}")]
21    InvalidParameter(String),
22
23    #[error("FFI error: code {code}")]
24    CppError { code: i32 },
25
26    #[error("Invalid UTF-8 string from C")]
27    InvalidUtf8,
28
29    #[error("Null pointer error")]
30    NullPointer,
31}
32
33pub type Result<T> = std::result::Result<T, WhisperError>;
34
35impl From<std::ffi::NulError> for WhisperError {
36    fn from(_: std::ffi::NulError) -> Self {
37        WhisperError::InvalidParameter("String contains null byte".to_string())
38    }
39}
40
41impl From<std::str::Utf8Error> for WhisperError {
42    fn from(_: std::str::Utf8Error) -> Self {
43        WhisperError::InvalidUtf8
44    }
45}