diff --git a/src/audio.rs b/src/audio.rs index 3a2152c..e9e544a 100644 --- a/src/audio.rs +++ b/src/audio.rs @@ -202,14 +202,8 @@ pub fn resample_to_16k(input: &[f32], input_sample_rate: f64) -> Vec { window: WindowFunction::BlackmanHarris2, }; - let mut resampler = SincFixedIn::::new( - 16000. / input_sample_rate, - 2.0, - params, - input.len(), - 1, - ) - .unwrap(); + let mut resampler = + SincFixedIn::::new(16000. / input_sample_rate, 2.0, params, input.len(), 1).unwrap(); let waves_in = vec![input.to_vec()]; let mut output = resampler.process(&waves_in, None).unwrap(); diff --git a/src/main.rs b/src/main.rs index ee2b0ee..e000f39 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,7 @@ -use audio::{YOUTUBE_TS_SAMPLE_RATE, resample_to_16k}; +use audio::{resample_to_16k, YOUTUBE_TS_SAMPLE_RATE}; use clap::Parser; -use ringbuf::{Consumer, LocalRb, SharedRb, HeapRb, Producer, Rb}; +use ringbuf::{Consumer, HeapRb, LocalRb, Producer, Rb, SharedRb}; use speech::{SpeechConfig, WhisperPayload}; -use vad::{VadState, WINDOW_SIZE_SAMPLES, split_audio_data_with_window_size}; use std::{ error::Error, ffi::c_int, @@ -16,6 +15,7 @@ use std::{ thread::{self, JoinHandle}, time::Instant, }; +use vad::{split_audio_data_with_window_size, VadState, WINDOW_SIZE_SAMPLES}; use whisper_rs::WhisperContext; use util::Log; @@ -26,8 +26,10 @@ mod util; mod vad; type F32Consumer = Consumer>>>>; -type SegmentProducer = Producer>>>>; -type SegmentConsumer = Consumer>>>>; +type SegmentProducer = + Producer>>>>; +type SegmentConsumer = + Consumer>>>>; enum ThreadState { End, @@ -77,7 +79,7 @@ fn main() -> Result<(), Box> { // shared buffer for vad output in 20 segment let rb = HeapRb::::new(20); - let (vad_prod, vad_cons ) = rb.split(); + let (vad_prod, vad_cons) = rb.split(); let (tx, rx) = mpsc::sync_channel::(1); let (vad_tx, vad_rx) = mpsc::sync_channel::(1); @@ -189,7 +191,12 @@ fn evoke_vad_thread( data.chunks(WINDOW_SIZE_SAMPLES).for_each(|data| { let _ = vad::vad(&mut vad_state, data.to_vec(), &mut buf); }); - logger.verbose(format!("vad process time: {}s, detect {} segment", running_calc.elapsed().as_secs(), buf.len())); + + logger.verbose(format!( + "vad process time: {}s, detect {} segment", + running_calc.elapsed().as_secs(), + buf.len() + )); if !buf.is_empty() { prod.push_iter(&mut buf.into_iter()); diff --git a/src/vad.rs b/src/vad.rs index da0f87b..2e54ca7 100644 --- a/src/vad.rs +++ b/src/vad.rs @@ -1,4 +1,4 @@ -use std::{mem::MaybeUninit, rc::Rc, io::Cursor}; +use std::{io::Cursor, mem::MaybeUninit, rc::Rc}; use ringbuf::{Consumer, LocalRb, Producer}; use tract_onnx::{ @@ -95,9 +95,9 @@ pub fn vad( state.init(); buf.push(VadSegment { data: state.rb_cons.pop_iter().collect_vec(), - duration: 15. + duration: 15., }); - return Ok(()) + return Ok(()); } let pcm = Array::from_shape_vec((1, audio_data.len()), audio_data).unwrap();