rwer 0.2.0

A modern Rust crate for WER, CER, and related ASR evaluation metrics
Documentation
use rwer::{Compose, RemovePunctuation, ToLower, Transform};
use rwer::{cer, process_words, visualize_alignment, wer};

fn main() {
    let reference = "the cat sat on the mat";
    let hypothesis = "the cat sat on a mat";

    println!("=== Basic WER/CER ===");
    println!("WER: {:.2}%", wer(reference, hypothesis) * 100.0);
    println!("CER: {:.2}%", cer(reference, hypothesis) * 100.0);

    println!("\n=== All Metrics ===");
    let output = process_words(reference, hypothesis);
    println!("{output}");

    println!("=== Alignment Visualization ===");
    println!("{}", visualize_alignment(&output));

    println!("=== Transform Pipeline ===");
    let pipeline: Box<dyn Transform> = Box::new(Compose::new(vec![
        Box::new(ToLower),
        Box::new(RemovePunctuation),
    ]));

    let ref_norm = pipeline.transform("Hello, World!");
    let hyp_norm = pipeline.transform("hello world");
    println!("Normalized WER: {:.2}%", wer(&ref_norm, &hyp_norm) * 100.0);
}