From e74a5ac0caa31a804a642cb3c92611e1d6c48b73 Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Wed, 20 Dec 2023 23:43:06 -0500 Subject: [PATCH] fix so each buffer page isnt stream_step from last BUT stream_step of content --- rust-whisper-baked-lib/src/lib.rs | 21 +++++++++++---------- rust-whisper-lib/src/lib.rs | 6 +----- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/rust-whisper-baked-lib/src/lib.rs b/rust-whisper-baked-lib/src/lib.rs index 3191e85..607ec4e 100644 --- a/rust-whisper-baked-lib/src/lib.rs +++ b/rust-whisper-baked-lib/src/lib.rs @@ -1,20 +1,21 @@ use rust_whisper_lib; -pub fn wav( - mut flags: rust_whisper_lib::Flags, - handler_fn: F -) where F: FnMut(Result) + Send + 'static { - flags.model_path = None; - flags.model_buffer = Some(include_bytes!("../../models/ggml-small.en.bin").to_vec()); - rust_whisper_lib::wav(flags.clone(), handler_fn, flags.wav.unwrap()); -} - pub fn channel( mut flags: rust_whisper_lib::Flags, handler_fn: F, stream: std::sync::mpsc::Receiver>, ) where F: FnMut(Result) + Send + 'static { flags.model_path = None; - flags.model_buffer = Some(include_bytes!("../../models/ggml-tiny.en.bin").to_vec()); + flags.model_buffer = Some(include_bytes!("../../models/ggml-small.en.bin").to_vec()); rust_whisper_lib::channel(flags.clone(), handler_fn, stream); } + +pub fn wav( + mut flags: rust_whisper_lib::Flags, + handler_fn: F +) where F: FnMut(Result) + Send + 'static { + flags.model_path = None; + flags.model_buffer = Some(include_bytes!("../../models/ggml-distil-large-v2.bin").to_vec()); + rust_whisper_lib::wav(flags.clone(), handler_fn, flags.wav.unwrap()); +} + diff --git a/rust-whisper-lib/src/lib.rs b/rust-whisper-lib/src/lib.rs index bc415f5..3194c6a 100644 --- a/rust-whisper-lib/src/lib.rs +++ b/rust-whisper-lib/src/lib.rs @@ -1,5 +1,4 @@ use whisper_rs::{WhisperContext, FullParams, SamplingStrategy, WhisperError}; -use std::time::{Duration, Instant}; use clap::Parser; use std::thread; use std::fs::File; @@ -63,16 +62,14 @@ pub fn channel(flags: Flags, handler_fn: F, stream: std::sync::mpsc::Receiver handler_fn, ).unwrap(); let stream_retain = (flags.stream_retain * 16_000.0) as usize; - let stream_step = Duration::new(flags.stream_step, 0); match &flags.debug { true => { File::create("/tmp/page.rawf32audio").unwrap(); }, false => {}, }; let mut buffer = vec![]; - let mut last = Instant::now(); for data in stream.iter() { data.iter().for_each(|x| buffer.push(*x)); - if Instant::now() - last > stream_step { + if buffer.len() >= (flags.stream_step * 16_000) as usize { w.transcribe_async(&buffer).unwrap(); match &flags.debug { @@ -93,7 +90,6 @@ pub fn channel(flags: Flags, handler_fn: F, stream: std::sync::mpsc::Receiver buffer[i] = buffer[buffer.len() - stream_retain + i]; } buffer.truncate(stream_retain); - last = Instant::now(); } } }