From bdfbeb6c60a4c85c056206fd085db1318efae932 Mon Sep 17 00:00:00 2001 From: travolin Date: Thu, 17 Aug 2023 17:09:26 -0700 Subject: [PATCH] Add access to segment text as bytes --- src/whisper_state.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/whisper_state.rs b/src/whisper_state.rs index be288ef..c49e2b6 100644 --- a/src/whisper_state.rs +++ b/src/whisper_state.rs @@ -413,6 +413,26 @@ impl<'a> WhisperState<'a> { Ok(r_str.to_string()) } + /// Get the bytes of the specified segment. + /// + /// # Arguments + /// * segment: Segment index. + /// + /// # Returns + /// Ok(Vec) on success, Err(WhisperError) on failure. + /// + /// # C++ equivalent + /// `const char * whisper_full_get_segment_text(struct whisper_context * ctx, int i_segment)` + pub fn full_get_segment_bytes(&self, segment: c_int) -> Result, WhisperError> { + let ret = + unsafe { whisper_rs_sys::whisper_full_get_segment_text_from_state(self.ptr, segment) }; + if ret.is_null() { + return Err(WhisperError::NullPointer); + } + let c_str = unsafe { CStr::from_ptr(ret) }; + Ok(c_str.to_bytes().to_vec()) + } + /// Get number of tokens in the specified segment. /// /// # Arguments