rust-whisper-baked with --wav to wav_channel

master
Bel LaPointe 2024-01-02 14:18:37 -07:00
parent 601fe517d7
commit dd6f980266
1 changed files with 11 additions and 33 deletions

View File

@ -7,43 +7,21 @@ use std::thread;
fn main() { fn main() {
let flags = rust_whisper_lib::Flags::parse(); let flags = rust_whisper_lib::Flags::parse();
match flags.wav.clone() { match flags.wav.clone() {
Some(path) => wav_ch(flags, path), Some(_) => wav_channel(flags),
None => channel(flags), None => channel(flags),
}; };
} }
fn wav_ch(flags: rust_whisper_lib::Flags, path: String) { fn wav_channel(flags: rust_whisper_lib::Flags) {
let mut audio = rust_whisper_baked_lib::f32_from_wav_file(&path).unwrap(); rust_whisper_baked_lib::wav_channel(
flags.clone(),
let (send, recv) = std::sync::mpsc::sync_channel(100); move |result: Result<rust_whisper_lib::Transcribed, String>| {
let n = audio.len() / match audio.len() % 100 { match result {
0 => 100, Ok(transcribed) => { println!("{}", transcribed.to_string()); },
_ => 99, Err(msg) => { eprintln!("error: {}", msg); },
}; };
for _ in 0..100 { },
send.send(audio.drain(0..n).collect()).unwrap(); );
}
let (fin_send, fin_recv) = std::sync::mpsc::sync_channel::<Option<i32>>(1);
thread::spawn(move || {
let mut i = 0;
rust_whisper_baked_lib::channel(
flags.clone(),
move |result: Result<rust_whisper_lib::Transcribed, String>| {
match result {
Ok(transcribed) => { println!("{}", transcribed.to_string()); },
Err(msg) => { eprintln!("error: {}", msg); },
};
i += 1;
if i == 100 {
fin_send.send(None).unwrap();
}
},
recv,
);
});
let _ = fin_recv.recv();
} }
fn wav(flags: rust_whisper_lib::Flags, _path: String) { fn wav(flags: rust_whisper_lib::Flags, _path: String) {