probe/probe.rs
1//! 決定的入力に対する確率プローブ。onnxruntime の数値を stdout に出して外部ツールと
2//! 突き合わせられる。
3//!
4//! 入力: 16000 サンプルの 440Hz サイン波・振幅 0.5 (f32)。
5//! x[i] = 0.5 * sin(2*pi*440*i/16000)
6//!
7//! 出力: 最初の 10 フレームの生発話確率を改行区切りで stdout へ。
8//!
9//! 実行: `cargo run -p flexaudio-vad --example probe`
10
11use flexaudio_vad::{Vad, VadConfig};
12
13fn main() {
14 // 決定的入力: 440Hz サイン振幅 0.5。
15 let n = 16000usize;
16 let mut samples = Vec::with_capacity(n);
17 for i in 0..n {
18 let v = 0.5f32 * (2.0f32 * std::f32::consts::PI * 440.0 * (i as f32) / 16000.0).sin();
19 samples.push(v);
20 }
21
22 let mut vad = Vad::new(VadConfig::default()).expect("model load");
23 // 一括投入。内部で 512 窓に束ねて推論し、生確率を取り出す。
24 vad.process(&samples);
25 let probs = vad.last_frame_probabilities();
26
27 for p in probs.iter().take(10) {
28 println!("{p:.6}");
29 }
30}