mod beam;
mod greedy;
pub mod processors;
mod streaming;
pub use beam::{BeamSearchDecoder, Hypothesis};
pub use greedy::GreedyDecoder;
pub use processors::WhisperTokenSuppressor;
pub use streaming::{
StreamingConfig, StreamingResult, StreamingStats, StreamingTranscriber, TranscriberState,
};
use crate::error::WhisperResult;
use crate::TranscriptionResult;
#[derive(Debug, Clone)]
pub struct InferenceConfig {
pub max_tokens: usize,
pub temperature: f32,
}
impl Default for InferenceConfig {
fn default() -> Self {
Self {
max_tokens: 448,
temperature: 0.0,
}
}
}
pub fn run_inference(
audio_features: &[f32],
config: &InferenceConfig,
) -> WhisperResult<TranscriptionResult> {
let _ = (audio_features, config);
Ok(TranscriptionResult {
text: String::new(),
language: "en".into(),
segments: vec![],
profiling: None,
})
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_inference_config_default() {
let config = InferenceConfig::default();
assert_eq!(config.max_tokens, 448);
assert!((config.temperature - 0.0).abs() < f32::EPSILON);
}
#[test]
fn test_run_inference() {
let config = InferenceConfig::default();
let result = run_inference(&[], &config);
assert!(result.is_ok());
}
}