# SautiForm Africa
SautiForm Africa is a code-switching voice assistant for public-service form completion. It is designed around a narrow, auditable workflow: a citizen or field officer speaks naturally in mixed Kiswahili and English, the speech-recognition layer returns a transcript, the application extracts structured fields, identifies missing or ambiguous information, asks for clarification, validates the record and requires explicit confirmation before any submission step.
The project is being developed for the Sahara CodeSwitch Africa Challenge under **Legal & Public Services**. The prototype deliberately separates speech recognition from downstream form logic so that the same audio can be benchmarked fairly across Sahara and other ASR systems.
## Why this is an agentic voice application
SautiForm does more than transcribe speech. A transcript drives a structured action:
`audio -> ASR -> field extraction -> validation -> clarification -> read-back -> confirmation`
The initial public-service form captures:
- district;
- occupation;
- household size;
- service request.
No record is considered ready until required fields are present and the user confirms the read-back.
## Benchmark design
The main-challenge implementation is designed for four ASR backends:
1. Intron Sahara v2.5;
2. OpenAI Whisper;
3. Meta MMS;
4. a configurable fourth backend through the generic HTTP adapter.
The benchmark reports both transcription and task-level measures:
- word error rate (WER);
- character error rate (CER);
- field exact-match accuracy;
- complete-form accuracy.
Task-level metrics matter because two transcripts with similar WER can lead to very different downstream form quality.
## Quick start
```bash
python -m venv .venv
# Windows PowerShell: .venv\Scripts\Activate.ps1
# macOS/Linux: source .venv/bin/activate
pip install -e ".[dev]"
pytest -q
python -m sautiform.cli demo --text "Ninaishi Mbozi District, occupation yangu ni farmer, household ina watu sita, na …