--- library_name: agri-awwer tags: - asr - evaluation - agriculture - metrics arxiv: "2602.03868" language: - hi - te - or --- # Agri AWWER — Agriculture-Weighted Word Error Rate Evaluation Toolkit A lightweight Python toolkit for evaluating Automatic Speech Recognition (ASR) systems in agricultural domains. Provides the **Agriculture-Weighted Word Error Rate (AWWER)** metric alongside standard metrics (WER, CER, MER). AWWER penalises errors on domain-critical agricultural terms more heavily than errors on general vocabulary, giving a more realistic picture of how well an ASR system serves agricultural applications. ## Installation ```bash # From HuggingFace (recommended) pip install git+https://huggingface.co/DigiGreen/Agri_AWWER_Toolkit # For improved WER/CER/MER via jiwer pip install "agri-awwer[jiwer]" ``` **Zero required dependencies** — the toolkit works out of the box with only the Python standard library. `jiwer` is optional and used automatically when available for standard metrics. ## Quick Start ### AWWER — Domain-Weighted Error Rate ```python from agri_awwer import calculate_awwer # Define domain word weights (1-4 scale) weights = { "gehun": 4, # wheat — core agriculture term "keet": 4, # pest "mitti": 3, # soil "barish": 3, # rain "gaon": 1, # village — general vocabulary } reference = "gehun mein keet laga hai" hypothesis = "gaon mein keet laga hai" awwer = calculate_awwer(reference, hypothesis, weights) print(f"AWWER: {awwer:.3f}") # gehun→gaon is a weight-4 error, so AWWER > standard WER ``` ### Standard Metrics ```python from agri_awwer import calculate_wer, calculate_cer, calculate_mer ref = "gehun mein keet laga hai" hyp = "gaon mein keet laga hai" print(f"WER: {calculate_wer(ref, hyp):.3f}") print(f"CER: {calculate_cer(ref, hyp):.3f}") print(f"MER: {calculate_mer(ref, hyp):.3f}") ``` ### Detailed AWWER Breakdown ```python from agri_awwer import calculate_awwer_components result = calculate_awwer_components(reference, hypothesis, weights) print(f"AWWER: {result['awwer']:.3f}") print(f"Substitutions: {result['n_substitutions']}") print(f"Deletions: {result['n_deletions']}") print(f"Insertions: {result['n_insertions']}") print(f"High-weight errors: {result['high_weight_errors']}") ``` ### Parse Weights from JSON ```python import json from agri_awwer import calculate_awwer_from_string weights_json = json.dumps([["gehun", 4], ["keet", 4], ["mitti", 3]]) awwer = calculate_awwer_from_string(ref, hyp, weights_json) ``` ## Weight Scale | Weight | Category | Examples | |--------|----------|----------| | **4** | Core agriculture terms | Crop names, pests, farming practices | | **3** | Strongly agriculture-related | Soil types, weather, planting seasons | | **2** | Indirectly related | Quantities, measurement units, locations | | **1** | General vocabulary | Default for words not in the lexicon | ## Language Support Built-in text normalization for: - **Hindi** (default) — chandrabindu, visarga, nukta removal - **Telugu** — candrabindu, visarga removal - **Odia** — candrabindu, visarga, nukta, isshar removal Pass the `language` parameter to any metric function: ```python calculate_awwer(ref, hyp, weights, language="telugu") calculate_wer(ref, hyp, language="odia") ``` ## Related Resources - **Paper**: [Benchmarking Automatic Speech Recognition for Indian Languages in Agricultural Contexts](https://arxiv.org/abs/2602.03868) - **Dataset**: [Agri STT Benchmarking Dataset](https://huggingface.co/datasets/DigiGreen/Agri_STT_Benchmarking_Dataset) — 10,864 audio-transcript pairs across Hindi, Telugu, and Odia ## Citation ```bibtex @misc{digigreen2025awwer, title = {Agri {AWWER}: Agriculture-Weighted Word Error Rate Evaluation Toolkit}, author = {{Digital Green}}, year = {2025}, url = {https://huggingface.co/DigiGreen/Agri_AWWER_Toolkit}, } ``` ## License Apache 2.0