basic_usage/
basic_usage.rs1use aic_sdk::{Model, ModelType, Parameter};
2use std::env;
3
4const NUM_CHANNELS: u16 = 2;
5
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7 println!("ai-coustics SDK version: {}", aic_sdk::get_version());
9
10 let license = env::var("AIC_SDK_LICENSE").map_err(|_| {
12 eprintln!("Error: AIC_SDK_LICENSE environment variable not set");
13 eprintln!("Please set it with: export AIC_SDK_LICENSE=your_license_key");
14 std::io::Error::new(std::io::ErrorKind::NotFound, "AIC_SDK_LICENSE not set")
15 })?;
16
17 let mut model = Model::new(ModelType::QuailS48, &license)?;
19 println!("Model created successfully");
20
21 let optimal_sample_rate = model.optimal_sample_rate()?;
23 println!("Optimal sample rate: {} Hz", optimal_sample_rate);
24
25 let optimal_num_frames = model.optimal_num_frames(optimal_sample_rate)?;
26 println!("Optimal frame count: {}", optimal_num_frames);
27
28 model.initialize(optimal_sample_rate, NUM_CHANNELS, optimal_num_frames, true)?;
30 println!("Model initialized successfully");
31
32 let delay = model.output_delay()?;
34 println!("Output delay: {} samples", delay);
35
36 model.set_parameter(Parameter::EnhancementLevel, 0.7)?;
38 println!("Parameter set successfully");
39
40 let enhancement_level = model.get_parameter(Parameter::EnhancementLevel)?;
41 println!("Enhancement level: {}", enhancement_level);
42
43 let mut audio_buffer_left = vec![0.0f32; optimal_num_frames];
45 let mut audio_buffer_right = vec![0.0f32; optimal_num_frames];
46
47 let mut audio_planar = vec![
49 audio_buffer_left.as_mut_slice(),
50 audio_buffer_right.as_mut_slice(),
51 ];
52
53 match model.process_planar(&mut audio_planar) {
55 Ok(()) => println!("Planar processing succeeded"),
56 Err(e) => println!("Planar processing failed: {}", e),
57 }
58
59 let mut audio_buffer_interleaved = vec![0.0f32; NUM_CHANNELS as usize * optimal_num_frames];
61
62 match model.process_interleaved(
64 &mut audio_buffer_interleaved,
65 NUM_CHANNELS,
66 optimal_num_frames,
67 ) {
68 Ok(()) => println!("Interleaved processing succeeded"),
69 Err(e) => println!("Interleaved processing failed: {}", e),
70 }
71
72 match model.reset() {
74 Ok(()) => println!("Model reset succeeded"),
75 Err(e) => println!("Model reset failed: {}", e),
76 }
77
78 println!("All tests completed");
80
81 Ok(())
82}