whisper-cpp-plus 0.1.4

Safe Rust bindings for whisper.cpp with real-time PCM streaming and VAD support
Documentation
use thiserror::Error;

#[derive(Error, Debug)]
pub enum WhisperError {
    #[error("Failed to load model: {0}")]
    ModelLoadError(String),

    #[error("Invalid audio format: expected 16kHz mono f32")]
    InvalidAudioFormat,

    #[error("Transcription failed: {0}")]
    TranscriptionError(String),

    #[error("Invalid context")]
    InvalidContext,

    #[error("Out of memory")]
    OutOfMemory,

    #[error("Invalid parameter: {0}")]
    InvalidParameter(String),

    #[error("FFI error: code {code}")]
    CppError { code: i32 },

    #[error("Invalid UTF-8 string from C")]
    InvalidUtf8,

    #[error("Null pointer error")]
    NullPointer,
}

pub type Result<T> = std::result::Result<T, WhisperError>;

impl From<std::ffi::NulError> for WhisperError {
    fn from(_: std::ffi::NulError) -> Self {
        WhisperError::InvalidParameter("String contains null byte".to_string())
    }
}

impl From<std::str::Utf8Error> for WhisperError {
    fn from(_: std::str::Utf8Error) -> Self {
        WhisperError::InvalidUtf8
    }
}