Fix compile errors

This commit is contained in:
Niko 2024-01-10 18:04:02 -07:00
parent 31b5976b17
commit ffd6196caa
No known key found for this signature in database
GPG key ID: 3861E636EA1E0E2B
3 changed files with 21 additions and 22 deletions

View file

@ -23,6 +23,10 @@ pub use whisper_ctx::WhisperContextParameters;
pub use whisper_grammar::{WhisperGrammarElement, WhisperGrammarElementType}; pub use whisper_grammar::{WhisperGrammarElement, WhisperGrammarElementType};
pub use whisper_params::{FullParams, SamplingStrategy}; pub use whisper_params::{FullParams, SamplingStrategy};
pub use whisper_state::WhisperState; pub use whisper_state::WhisperState;
#[cfg(feature = "whisper-cpp-log")]
pub use whisper_sys_log::install_whisper_log_trampoline;
#[cfg(feature = "whisper-cpp-tracing")]
pub use whisper_sys_tracing::install_whisper_tracing_trampoline;
pub type WhisperSysContext = whisper_rs_sys::whisper_context; pub type WhisperSysContext = whisper_rs_sys::whisper_context;
pub type WhisperSysState = whisper_rs_sys::whisper_state; pub type WhisperSysState = whisper_rs_sys::whisper_state;

View file

@ -1,5 +1,4 @@
use log::{debug, error, info, warn}; use log::{debug, error, info, warn};
use std::sync::Once;
use whisper_rs_sys::ggml_log_level; use whisper_rs_sys::ggml_log_level;
unsafe extern "C" fn whisper_cpp_log_trampoline( unsafe extern "C" fn whisper_cpp_log_trampoline(
@ -13,34 +12,31 @@ unsafe extern "C" fn whisper_cpp_log_trampoline(
// SAFETY: we must trust whisper.cpp that it will not pass us a string that does not satisfy // SAFETY: we must trust whisper.cpp that it will not pass us a string that does not satisfy
// from_ptr's requirements. // from_ptr's requirements.
let log_str = unsafe { std::ffi::CStr::from_ptr(text) } let log_str = unsafe { std::ffi::CStr::from_ptr(text) }.to_string_lossy();
.to_string_lossy() // whisper.cpp gives newlines at the end of its log messages, so we trim them
// whisper.cpp gives newlines at the end of its log messages, so we trim them let trimmed = log_str.trim();
.trim();
match level { match level {
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_DEBUG => debug!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_DEBUG => debug!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_INFO => info!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_INFO => info!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_WARN => warn!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_WARN => warn!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_ERROR => error!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_ERROR => error!("{}", trimmed),
_ => { _ => {
warn!( warn!(
"whisper_cpp_log_trampoline: unknown log level {}: message: {}", "whisper_cpp_log_trampoline: unknown log level {}: message: {}",
level, log_str level, trimmed
) )
} }
} }
} }
static LOG_TRAMPOLINE_INSTALL: Once = Once::new();
/// Shortcut utility to redirect all whisper.cpp logging to the `log` crate. /// Shortcut utility to redirect all whisper.cpp logging to the `log` crate.
/// ///
/// Filter for logs from the `whisper-rs` crate to see all log output from whisper.cpp. /// Filter for logs from the `whisper-rs` crate to see all log output from whisper.cpp.
/// ///
/// You should only call this once (subsequent calls have no ill effect). /// You should only call this once (subsequent calls have no ill effect).
pub fn install_whisper_log_trampoline() { pub fn install_whisper_log_trampoline() {
LOG_TRAMPOLINE_INSTALL.call_once(|| unsafe { crate::LOG_TRAMPOLINE_INSTALL.call_once(|| unsafe {
whisper_rs_sys::whisper_log_set(Some(whisper_cpp_log_trampoline), std::ptr::null_mut()) whisper_rs_sys::whisper_log_set(Some(whisper_cpp_log_trampoline), std::ptr::null_mut())
}); });
} }

View file

@ -1,4 +1,3 @@
use std::sync::Once;
use tracing::{debug, error, info, warn}; use tracing::{debug, error, info, warn};
use whisper_rs_sys::ggml_log_level; use whisper_rs_sys::ggml_log_level;
@ -13,19 +12,19 @@ unsafe extern "C" fn whisper_cpp_tracing_trampoline(
// SAFETY: we must trust whisper.cpp that it will not pass us a string that does not satisfy // SAFETY: we must trust whisper.cpp that it will not pass us a string that does not satisfy
// from_ptr's requirements. // from_ptr's requirements.
let log_str = unsafe { std::ffi::CStr::from_ptr(text) } let log_str = unsafe { std::ffi::CStr::from_ptr(text) }.to_string_lossy();
.to_string_lossy() // whisper.cpp gives newlines at the end of its log messages, so we trim them
.trim(); let trimmed = log_str.trim();
match level { match level {
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_DEBUG => debug!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_DEBUG => debug!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_INFO => info!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_INFO => info!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_WARN => warn!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_WARN => warn!("{}", trimmed),
whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_ERROR => error!("{}", log_str), whisper_rs_sys::ggml_log_level_GGML_LOG_LEVEL_ERROR => error!("{}", trimmed),
_ => { _ => {
warn!( warn!(
"whisper_cpp_tracing_trampoline: unknown log level {}: message: {}", "whisper_cpp_tracing_trampoline: unknown log level {}: message: {}",
level, log_str level, trimmed
) )
} }
} }