use whisper_rs::{WhisperContext, FullParams, SamplingStrategy}; fn main() { let mut ctx = WhisperContext::new( &std::env::var("MODEL").unwrap_or(String::from("../models/ggml-tiny.en.bin")) ).expect("failed to load model"); // create a params object let mut params = FullParams::new(SamplingStrategy::Greedy { best_of: 0 }); params.set_n_threads( std::env::var("P").unwrap_or(String::from("1")).parse::().expect("$P must be a number") ); params.set_translate(false); params.set_language(Some("en")); params.set_print_special(false); params.set_print_progress(false); params.set_print_realtime(false); params.set_print_timestamps(false); let (header, data) = wav::read(&mut std::fs::File::open( &std::env::var("WAV").unwrap_or(String::from("../git.d/samples/jfk.wav")) ).expect("failed to open .wav")).expect("failed to decode .wav"); assert!(header.channel_count == 1); assert!(header.sampling_rate == 16000); let data16 = data.as_sixteen().expect("wav is not 32bit floats"); let audio_data = &whisper_rs::convert_integer_to_float_audio(&data16); ctx.full(params, &audio_data[..]) .expect("failed to run model"); let num_segments = ctx.full_n_segments(); for i in 0..num_segments { let segment = ctx.full_get_segment_text(i).expect("failed to get segment"); print!("{} ", segment); } println!(""); }