use aurum_core::audio::load_audio;
use aurum_core::config::Config;
use aurum_core::{AurumEngine, ProviderId, TranscriptionOptions};
use std::env;
#[tokio::main]
async fn main() -> aurum_core::Result<()> {
let path = env::args()
.nth(1)
.expect("usage: engine_providers <audio-file>");
let cfg = Config::load()?;
let engine = AurumEngine::from_config(cfg)?;
let known = engine.registry().known_provider_hint();
eprintln!("aurum: registered providers: {known}");
let id = engine.stt_provider_id()?;
eprintln!("aurum: using STT provider={}", id.as_str());
let provider = engine.stt_provider(&id)?;
let audio = load_audio(std::path::Path::new(&path)).await?;
let cancel = aurum_core::CancelFlag::new();
let opts = TranscriptionOptions {
model: if id.as_str() == "local" {
"tiny-q5_1".into()
} else {
engine
.config()
.model
.clone()
.unwrap_or_else(|| "tiny-q5_1".into())
},
language: "en".into(),
timestamps: false,
cancel: Some(cancel.clone()),
};
let result = provider.transcribe(&audio, &opts).await?;
println!("{}", result.text());
eprintln!(
"aurum: backend={:?} provider={}",
result.backend_kind(),
result.provider()
);
let _again = engine.stt_provider(&ProviderId::local())?.name();
engine.shutdown();
Ok(())
}