use std::path::Path; use chlorate::{RecognitionMode, ResultType, SodaBuilder, SodaResponse}; macro_rules! f_p { ($r:expr) => { concat!("tests/audio/", $r) }; } #[test] fn weather() { test_audio( f_p!("whatstheweatherlike.wav"), "en_models", "what's the weather like", ); } #[test] fn blizzy() { test_audio( f_p!("quickfoxblizzy.wav"), "en_models", "the quick brown fox jumped over the lazy dog and Blizzy is short", ); } fn test_audio>(path: P, model: &str, expected: &str) { let mut data = std::fs::File::open(path).unwrap(); let mut client = SodaBuilder::new() .channel_count(1) .sample_rate(16000) .recognition_mode(RecognitionMode::Caption) .language_pack_directory(String::from(model)) .api_key("00000000-0000-0000-0000-000000000000".into()) .build(|r: SodaResponse| { if let Some(recognition_result) = r.recognition_result { if let Some(rt) = recognition_result.result_type { if rt == ResultType::Final as i32 { assert_eq!(recognition_result.hypothesis[0], expected); } } } }); client.add_simulated_audio(&mut data); }