Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
snakers4
GitHub Repository: snakers4/silero-vad
Path: blob/master/examples/rust-example/src/main.rs
1171 views
1
mod silero;
2
mod utils;
3
mod vad_iter;
4
5
fn main() {
6
let model_path = std::env::var("SILERO_MODEL_PATH")
7
.unwrap_or_else(|_| String::from("../../files/silero_vad.onnx"));
8
let audio_path = std::env::args()
9
.nth(1)
10
.unwrap_or_else(|| String::from("recorder.wav"));
11
let mut wav_reader = hound::WavReader::open(audio_path).unwrap();
12
let sample_rate = match wav_reader.spec().sample_rate {
13
8000 => utils::SampleRate::EightkHz,
14
16000 => utils::SampleRate::SixteenkHz,
15
_ => panic!("Unsupported sample rate. Expect 8 kHz or 16 kHz."),
16
};
17
if wav_reader.spec().sample_format != hound::SampleFormat::Int {
18
panic!("Unsupported sample format. Expect Int.");
19
}
20
let content = wav_reader
21
.samples()
22
.filter_map(|x| x.ok())
23
.collect::<Vec<i16>>();
24
assert!(!content.is_empty());
25
let silero = silero::Silero::new(sample_rate, model_path).unwrap();
26
let vad_params = utils::VadParams {
27
sample_rate: sample_rate.into(),
28
..Default::default()
29
};
30
let mut vad_iterator = vad_iter::VadIter::new(silero, vad_params);
31
vad_iterator.process(&content).unwrap();
32
for timestamp in vad_iterator.speeches() {
33
println!("{}", timestamp);
34
}
35
println!("Finished.");
36
}
37
38