master
Bel LaPointe 2023-11-28 22:24:10 -07:00
parent 1009c4230e
commit 72a1420638
3 changed files with 67 additions and 4 deletions

View File

@ -48,6 +48,21 @@ dependencies = [
"pkg-config", "pkg-config",
] ]
[[package]]
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_system_properties"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.1.0" version = "1.1.0"
@ -173,6 +188,20 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "chrono"
version = "0.4.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
dependencies = [
"android-tzdata",
"iana-time-zone",
"js-sys",
"num-traits",
"wasm-bindgen",
"windows-targets 0.48.5",
]
[[package]] [[package]]
name = "clang-sys" name = "clang-sys"
version = "1.6.1" version = "1.6.1"
@ -315,6 +344,29 @@ dependencies = [
"windows-sys", "windows-sys",
] ]
[[package]]
name = "iana-time-zone"
version = "0.1.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
"windows-core",
]
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cc",
]
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "2.1.0" version = "2.1.0"
@ -720,6 +772,7 @@ name = "rust-whisper"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"byteorder", "byteorder",
"chrono",
"cpal", "cpal",
"signal-hook", "signal-hook",
"tokio", "tokio",
@ -1037,6 +1090,15 @@ dependencies = [
"windows-targets 0.42.2", "windows-targets 0.42.2",
] ]
[[package]]
name = "windows-core"
version = "0.51.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
dependencies = [
"windows-targets 0.48.5",
]
[[package]] [[package]]
name = "windows-sys" name = "windows-sys"
version = "0.48.0" version = "0.48.0"

View File

@ -12,3 +12,4 @@ tokio = "1.27"
cpal = "0.15.2" cpal = "0.15.2"
signal-hook = "0.3.17" signal-hook = "0.3.17"
byteorder = "1.5.0" byteorder = "1.5.0"
chrono = "0.4.31"

View File

@ -2,6 +2,7 @@ use whisper_rs::{WhisperContext, FullParams, SamplingStrategy, WhisperError};
use cpal::traits::{HostTrait, DeviceTrait, StreamTrait}; use cpal::traits::{HostTrait, DeviceTrait, StreamTrait};
use signal_hook::{iterator::Signals, consts::signal::SIGINT}; use signal_hook::{iterator::Signals, consts::signal::SIGINT};
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
use chrono;
fn main() { fn main() {
let w = new_whisper( let w = new_whisper(
@ -63,6 +64,7 @@ fn main() {
downsampled_data.iter().for_each(|x| buffer.push(*x)); downsampled_data.iter().for_each(|x| buffer.push(*x));
if Instant::now() - last > stream_step { if Instant::now() - last > stream_step {
let result = w.transcribe(&buffer).unwrap(); let result = w.transcribe(&buffer).unwrap();
eprintln!("{}", chrono::Local::now());
println!("{}", result); println!("{}", result);
let retain = buffer.len() - (buffer.len() as f32 * stream_churn) as usize; let retain = buffer.len() - (buffer.len() as f32 * stream_churn) as usize;
@ -83,7 +85,7 @@ fn main() {
eprintln!("listening on {}", device.name().unwrap()); eprintln!("listening on {}", device.name().unwrap());
let mut signals = Signals::new(&[SIGINT]).unwrap(); let mut signals = Signals::new(&[SIGINT]).unwrap();
for sig in signals.forever() { for sig in signals.forever() {
println!("sig {}", sig); eprintln!("sig {}", sig);
break; break;
} }
stream.pause().unwrap(); stream.pause().unwrap();
@ -115,9 +117,8 @@ impl Whisper {
} }
fn _transcribe(&self, data: &Vec<f32>) -> Result<String, WhisperError> { fn _transcribe(&self, data: &Vec<f32>) -> Result<String, WhisperError> {
//eprintln!("{:?} ({})", data, data.len());
let mut params = FullParams::new(SamplingStrategy::Greedy { best_of: 0 }); let mut params = FullParams::new(SamplingStrategy::Greedy { best_of: 0 });
params.set_no_context(true);
params.set_n_threads(self.threads); params.set_n_threads(self.threads);
params.set_translate(false); params.set_translate(false);
params.set_detect_language(false); params.set_detect_language(false);
@ -126,7 +127,6 @@ impl Whisper {
params.set_print_progress(false); params.set_print_progress(false);
params.set_print_realtime(false); params.set_print_realtime(false);
params.set_print_timestamps(false); params.set_print_timestamps(false);
params.set_no_context(true);
let mut state = self.ctx.create_state()?; let mut state = self.ctx.create_state()?;
state.full(params, &data[..])?; state.full(params, &data[..])?;