From a Multilingual Streaming ASR Backbone to Kenyan-Language Systems: Data-Centric Adaptation of Nemotron 3.5 for Kikuyu, Dholuo, and Kalenjin

arXiv cs.CL Papers

Summary

This paper presents an engineering study adapting NVIDIA Nemotron 3.5 ASR Streaming 0.6B to Kikuyu, Dholuo, and Kalenjin, achieving 42.97% and 33.98% WER on internal sets for Kikuyu and Dholuo, respectively, through data-centric techniques including corpus auditing, normalization, and streaming evaluation.

arXiv:2607.18912v1 Announce Type: new Abstract: Automatic speech recognition (ASR) for African languages is constrained by orthographic inconsistency, annotation artifacts, missing audio, speaker and domain imbalance, and evaluation procedures that differ from deployment. We present an end-to-end engineering study adapting NVIDIA Nemotron 3.5 ASR Streaming 0.6B to Kikuyu, Dholuo, and Kalenjin. Starting from a Kenyan Swahili-adapted checkpoint, we retain its cache-aware FastConformer RNN-T, prompt conditioning, and streaming decoder during full-parameter fine-tuning. The study covers corpus auditing, Unicode normalization, split checks, duration filtering, low-rate continuation, validation-based checkpoint selection, true-streaming evaluation, artifact preservation, and isolated serving. On internal, adaptively consulted evaluation sets excluded from gradient updates at context [56,13], selected Kikuyu and Dholuo models achieve 42.97% and 33.98% WER, respectively. Dholuo records 9.59% CER and 8.13% no-space CER under its frozen historical label policy; Kikuyu records 7.79% no-space CER. Kalenjin remains a work in progress: v1-v reaches 68.74% WER on a 2,411-row clean-v3 diagnostic subset excluding long-pause annotations, digit-bearing references, and targets shorter than three tokens. Its checkpoint selection used a mixed-source validation manifest containing test-origin rows, so the score is not an independent generalization estimate. We also report negative findings involving non-speech labels, short-utterance over-generation, boundary-sensitive WER, and cloud job-lifecycle failures. We make no state-of-the-art claim because the internal sets, repeated consultation, and normalization differ from public benchmarks. This work provides an auditable account of adapting a multilingual streaming model into language-specific systems without discarding streaming constraints.
Original Article
View Cached Full Text

Cached at: 07/22/26, 08:24 AM

# From a Multilingual Streaming ASR Backbone to Kenyan-Language Systems: Data-Centric Adaptation of Nemotron 3.5 for Kikuyu, Dholuo, and Kalenjin
Source: [https://arxiv.org/html/2607.18912](https://arxiv.org/html/2607.18912)
\(July 2026\)

###### Abstract

Automatic speech recognition \(ASR\) for African languages is constrained by orthographic inconsistency, annotation artifacts, missing audio, speaker and domain imbalance, and evaluation procedures that differ from deployment\. We present an end\-to\-end engineering study adapting NVIDIA Nemotron 3\.5 ASR Streaming 0\.6B to Kikuyu, Dholuo, and Kalenjin\. Starting from a Kenyan Swahili\-adapted checkpoint, we retain its cache\-aware FastConformer RNN\-T, prompt conditioning, and streaming decoder during full\-parameter fine\-tuning\. The study covers corpus auditing, Unicode normalization, split checks, duration filtering, low\-rate continuation, validation\-based checkpoint selection, true\-streaming evaluation, artifact preservation, and isolated serving\.

On internal, adaptively consulted evaluation sets excluded from gradient updates at context\[56,13\], selected Kikuyu and Dholuo models achieve 42\.97% and 33\.98% WER, respectively\. Dholuo records 9\.59% CER and 8\.13% no\-space CER under its frozen historical label policy; Kikuyu records 7\.79% no\-space CER\. Kalenjin remains a work in progress: v1\-v reaches 68\.74% WER on a 2,411\-row clean\-v3 diagnostic subset excluding annotation markers, digit\-bearing references, and targets shorter than three tokens\. Its checkpoint selection used a mixed\-source validation manifest containing test\-origin rows, so the score is not an independent generalization estimate\. We also report negative findings involving non\-speech labels, short\-utterance over\-generation, boundary\-sensitive WER, and cloud job\-lifecycle failures\. We make no state\-of\-the\-art claim because the internal sets, repeated consultation, and normalization differ from public benchmarks\. This work provides an auditable account of adapting a multilingual streaming model into language\-specific systems without discarding streaming constraints\.

Keywords:automatic speech recognition; low\-resource languages; African languages; Kikuyu; Dholuo; Kalenjin; streaming ASR; RNN\-Transducer; FastConformer; PyTorch; NeMo; data curation

Status and interpretation\.Kikuyu and Dholuo are completed engineering case studies with preserved champion checkpoints and live streaming deployments\. Kalenjin is included as an ongoing case study because its failures and successive corpus revisions are scientifically informative\. All numerical results in this report are internal project evaluations unless a public benchmark is named explicitly\. The held\-out sets were never used for gradient updates, but repeated milestone inspection influenced research decisions; they therefore must not be represented as a pristine one\-shot external benchmark\.

###### Contents

1. [1Introduction](https://arxiv.org/html/2607.18912#S1)1. [1\.1Research Questions](https://arxiv.org/html/2607.18912#S1.SS1) 2. [1\.2Contributions](https://arxiv.org/html/2607.18912#S1.SS2) 3. [1\.3What This Paper Does Not Claim](https://arxiv.org/html/2607.18912#S1.SS3)
2. [2Related Work](https://arxiv.org/html/2607.18912#S2)1. [2\.1End\-to\-End and Streaming ASR](https://arxiv.org/html/2607.18912#S2.SS1) 2. [2\.2Multilingual and African ASR](https://arxiv.org/html/2607.18912#S2.SS2) 3. [2\.3Subword Modeling, Augmentation, and Prompt Conditioning](https://arxiv.org/html/2607.18912#S2.SS3)
3. [3System Architecture](https://arxiv.org/html/2607.18912#S3)1. [3\.1Base Model](https://arxiv.org/html/2607.18912#S3.SS1) 2. [3\.2Cache\-Aware Attention Context](https://arxiv.org/html/2607.18912#S3.SS2) 3. [3\.3RNN\-T Objective](https://arxiv.org/html/2607.18912#S3.SS3)
4. [4Why a Kenyan Swahili Bridge?](https://arxiv.org/html/2607.18912#S4)
5. [5Data Sources, Governance, and Split Semantics](https://arxiv.org/html/2607.18912#S5)1. [5\.1Source Corpora](https://arxiv.org/html/2607.18912#S5.SS1) 2. [5\.2Usage Rights and Community Governance](https://arxiv.org/html/2607.18912#S5.SS2) 3. [5\.3Split Integrity](https://arxiv.org/html/2607.18912#S5.SS3)
6. [6Data Preparation and Language\-Specific Curation](https://arxiv.org/html/2607.18912#S6)1. [6\.1Common Preparation Pipeline](https://arxiv.org/html/2607.18912#S6.SS1) 2. [6\.2Dholuo Preparation Accounting](https://arxiv.org/html/2607.18912#S6.SS2) 3. [6\.3Kikuyu Orthography and Unicode Decisions](https://arxiv.org/html/2607.18912#S6.SS3) 4. [6\.4Kalenjin: From Clean\-v1 to Clean\-v3](https://arxiv.org/html/2607.18912#S6.SS4) 5. [6\.5Why Deletion Was Sometimes Preferable to Repair](https://arxiv.org/html/2607.18912#S6.SS5)
7. [7Implementation and Experimental Infrastructure](https://arxiv.org/html/2607.18912#S7)1. [7\.1Software Stack](https://arxiv.org/html/2607.18912#S7.SS1) 2. [7\.2Persistent Data Layout](https://arxiv.org/html/2607.18912#S7.SS2) 3. [7\.3Why Tarred Audio Was Used](https://arxiv.org/html/2607.18912#S7.SS3) 4. [7\.4Compute Selection](https://arxiv.org/html/2607.18912#S7.SS4) 5. [7\.5Run Dispatch and Lifecycle](https://arxiv.org/html/2607.18912#S7.SS5)
8. [8Fine\-Tuning Protocol](https://arxiv.org/html/2607.18912#S8)1. [8\.1Full\-Parameter Adaptation](https://arxiv.org/html/2607.18912#S8.SS1) 2. [8\.2Core and Stage\-Specific Hyperparameters](https://arxiv.org/html/2607.18912#S8.SS2) 3. [8\.3Staged Continuation](https://arxiv.org/html/2607.18912#S8.SS3) 4. [8\.4Checkpoint Selection and Export](https://arxiv.org/html/2607.18912#S8.SS4)
9. [9Evaluation Protocol](https://arxiv.org/html/2607.18912#S9)1. [9\.1Metrics](https://arxiv.org/html/2607.18912#S9.SS1) 2. [9\.2True\-Streaming Evaluation](https://arxiv.org/html/2607.18912#S9.SS2) 3. [9\.3Latency and Runtime Interpretation](https://arxiv.org/html/2607.18912#S9.SS3) 4. [9\.4Held\-Out Status and Repeated Use](https://arxiv.org/html/2607.18912#S9.SS4) 5. [9\.5Comparability to External Leaderboards](https://arxiv.org/html/2607.18912#S9.SS5)
10. [10Experimental Results](https://arxiv.org/html/2607.18912#S10)1. [10\.1Kikuyu Learning Trajectory](https://arxiv.org/html/2607.18912#S10.SS1)1. [10\.1\.1Streaming context ablation](https://arxiv.org/html/2607.18912#S10.SS1.SSS1) 2. [10\.2Dholuo Learning Trajectory](https://arxiv.org/html/2607.18912#S10.SS2) 3. [10\.3Kalenjin Work in Progress](https://arxiv.org/html/2607.18912#S10.SS3) 4. [10\.4Cross\-Language Snapshot](https://arxiv.org/html/2607.18912#S10.SS4)
11. [11Error Analysis](https://arxiv.org/html/2607.18912#S11)1. [11\.1Why Aggregate WER Is Insufficient](https://arxiv.org/html/2607.18912#S11.SS1) 2. [11\.2Kikuyu and Dholuo Boundary Sensitivity](https://arxiv.org/html/2607.18912#S11.SS2) 3. [11\.3Kalenjin Stratified Findings](https://arxiv.org/html/2607.18912#S11.SS3) 4. [11\.4Short\-Utterance Over\-Generation](https://arxiv.org/html/2607.18912#S11.SS4) 5. [11\.5Code\-Switching and Borrowed Terms](https://arxiv.org/html/2607.18912#S11.SS5) 6. [11\.6Representative Qualitative Patterns](https://arxiv.org/html/2607.18912#S11.SS6) 7. [11\.7Error\-Analysis Priorities](https://arxiv.org/html/2607.18912#S11.SS7)
12. [12Prototype Streaming Deployment and Artifact Promotion](https://arxiv.org/html/2607.18912#S12)1. [12\.1True\-Streaming Backend](https://arxiv.org/html/2607.18912#S12.SS1) 2. [12\.2Language Isolation](https://arxiv.org/html/2607.18912#S12.SS2) 3. [12\.3Authentication and API Protection](https://arxiv.org/html/2607.18912#S12.SS3) 4. [12\.4Checkpoint Confidentiality](https://arxiv.org/html/2607.18912#S12.SS4) 5. [12\.5Artifact Promotion](https://arxiv.org/html/2607.18912#S12.SS5)
13. [13Reproducibility and Artifact Provenance](https://arxiv.org/html/2607.18912#S13)1. [13\.1What Is Preserved](https://arxiv.org/html/2607.18912#S13.SS1) 2. [13\.2Reproducibility Levels](https://arxiv.org/html/2607.18912#S13.SS2) 3. [13\.3Experiment Ledger](https://arxiv.org/html/2607.18912#S13.SS3)
14. [14Responsible Development](https://arxiv.org/html/2607.18912#S14)1. [14\.1Community and Language Expertise](https://arxiv.org/html/2607.18912#S14.SS1) 2. [14\.2Privacy and Consent](https://arxiv.org/html/2607.18912#S14.SS2) 3. [14\.3Unequal Error Costs](https://arxiv.org/html/2607.18912#S14.SS3) 4. [14\.4Language Variety and Representation](https://arxiv.org/html/2607.18912#S14.SS4)
15. [15Limitations](https://arxiv.org/html/2607.18912#S15)
16. [16Discussion](https://arxiv.org/html/2607.18912#S16)1. [16\.1What Drove Improvement](https://arxiv.org/html/2607.18912#S16.SS1) 2. [16\.2Why a Streaming Base Matters](https://arxiv.org/html/2607.18912#S16.SS2) 3. [16\.3Data Quality Versus Data Quantity](https://arxiv.org/html/2607.18912#S16.SS3) 4. [16\.4Implications for Other Low\-Resource Languages](https://arxiv.org/html/2607.18912#S16.SS4)
17. [17Future Work](https://arxiv.org/html/2607.18912#S17)
18. [18Conclusion](https://arxiv.org/html/2607.18912#S18)
19. [ACorpus Construction and Normalization Specification](https://arxiv.org/html/2607.18912#A1)1. [A\.1Manifest Contract](https://arxiv.org/html/2607.18912#A1.SS1) 2. [A\.2Common Audio Pipeline](https://arxiv.org/html/2607.18912#A1.SS2) 3. [A\.3Common Text Operations](https://arxiv.org/html/2607.18912#A1.SS3) 4. [A\.4Kikuyu Orthography Policy](https://arxiv.org/html/2607.18912#A1.SS4) 5. [A\.5Dholuo Text Policy](https://arxiv.org/html/2607.18912#A1.SS5) 6. [A\.6Kalenjin Cleaning Generations](https://arxiv.org/html/2607.18912#A1.SS6) 7. [A\.7Why Valid Hard Examples Were Not Broadly Removed](https://arxiv.org/html/2607.18912#A1.SS7)
20. [BDetailed Corpus Ledgers](https://arxiv.org/html/2607.18912#A2)1. [B\.1Dholuo Full\-Corpus Preparation](https://arxiv.org/html/2607.18912#A2.SS1) 2. [B\.2Kalenjin clean\-v1 Ledger](https://arxiv.org/html/2607.18912#A2.SS2) 3. [B\.3Kalenjin clean\-v3 Derivation Ledger](https://arxiv.org/html/2607.18912#A2.SS3) 4. [B\.4Kikuyu Curated Corpus Summary](https://arxiv.org/html/2607.18912#A2.SS4)
21. [CModel Configuration Ledger](https://arxiv.org/html/2607.18912#A3)1. [C\.1Restored Foundation Configuration](https://arxiv.org/html/2607.18912#A3.SS1) 2. [C\.2Recorded Fine\-Tuning Configuration](https://arxiv.org/html/2607.18912#A3.SS2) 3. [C\.3Training Objective](https://arxiv.org/html/2607.18912#A3.SS3)
22. [DComplete Experiment Registry](https://arxiv.org/html/2607.18912#A4)1. [D\.1Kikuyu Continuation Series](https://arxiv.org/html/2607.18912#A4.SS1) 2. [D\.2Dholuo Full\-Data Series](https://arxiv.org/html/2607.18912#A4.SS2) 3. [D\.3Kalenjin Research Series](https://arxiv.org/html/2607.18912#A4.SS3) 4. [D\.4Interpreting Continuation Stages](https://arxiv.org/html/2607.18912#A4.SS4)
23. [ECheckpoint Selection, Promotion, and Preservation](https://arxiv.org/html/2607.18912#A5)1. [E\.1Selection Rule](https://arxiv.org/html/2607.18912#A5.SS1) 2. [E\.2Why a\.nemoArchive Is the Deployment Unit](https://arxiv.org/html/2607.18912#A5.SS2) 3. [E\.3Target Champion Evidence Contract](https://arxiv.org/html/2607.18912#A5.SS3) 4. [E\.4Integrity Verification](https://arxiv.org/html/2607.18912#A5.SS4)
24. [FReproducibility Recipes](https://arxiv.org/html/2607.18912#A6)1. [F\.1Environment and Secret Boundary](https://arxiv.org/html/2607.18912#A6.SS1) 2. [F\.2Recommended Preflight Invariants](https://arxiv.org/html/2607.18912#A6.SS2) 3. [F\.3Detached Continuation Training](https://arxiv.org/html/2607.18912#A6.SS3) 4. [F\.4Foreground\-Wait True\-Streaming Evaluation](https://arxiv.org/html/2607.18912#A6.SS4)
25. [GTrue\-Streaming Evaluation Protocol](https://arxiv.org/html/2607.18912#A7)1. [G\.1Why Offline Transcription Is Not a Substitute](https://arxiv.org/html/2607.18912#A7.SS1) 2. [G\.2Evaluator Procedure](https://arxiv.org/html/2607.18912#A7.SS2) 3. [G\.3Metric Definitions](https://arxiv.org/html/2607.18912#A7.SS3) 4. [G\.4Latency and Throughput](https://arxiv.org/html/2607.18912#A7.SS4) 5. [G\.5Proposed Unified Evaluation Report Contract](https://arxiv.org/html/2607.18912#A7.SS5)
26. [HError Analysis Protocol](https://arxiv.org/html/2607.18912#A8)1. [H\.1Taxonomy](https://arxiv.org/html/2607.18912#A8.SS1) 2. [H\.2Edit Decomposition and Stratification](https://arxiv.org/html/2607.18912#A8.SS2) 3. [H\.3Targeted Native\-Speaker Consultation and Proposed Review Protocol](https://arxiv.org/html/2607.18912#A8.SS3) 4. [H\.4Short\-Utterance Over\-Generation Study](https://arxiv.org/html/2607.18912#A8.SS4)
27. [IOperational Failure and Recovery Ledger](https://arxiv.org/html/2607.18912#A9)
28. [JDeployment Architecture and Security Boundary](https://arxiv.org/html/2607.18912#A10)1. [J\.1Isolated Language Services](https://arxiv.org/html/2607.18912#A10.SS1) 2. [J\.2What Authentication Does and Does Not Protect](https://arxiv.org/html/2607.18912#A10.SS2) 3. [J\.3Model Exfiltration Risk](https://arxiv.org/html/2607.18912#A10.SS3)
29. [KArtifact Provenance and Preservation](https://arxiv.org/html/2607.18912#A11)1. [K\.1Artifact Manifest](https://arxiv.org/html/2607.18912#A11.SS1) 2. [K\.2Preservation Tiers](https://arxiv.org/html/2607.18912#A11.SS2)
30. [LResponsible Development, Data Governance, and Release](https://arxiv.org/html/2607.18912#A12)
31. [MExtended Limitations and Threats to Validity](https://arxiv.org/html/2607.18912#A13)1. [M\.1Internal Validity](https://arxiv.org/html/2607.18912#A13.SS1) 2. [M\.2Construct Validity](https://arxiv.org/html/2607.18912#A13.SS2) 3. [M\.3External Validity](https://arxiv.org/html/2607.18912#A13.SS3) 4. [M\.4Comparison Validity](https://arxiv.org/html/2607.18912#A13.SS4)
32. [NProposed Confirmatory Evaluation Protocol](https://arxiv.org/html/2607.18912#A14)
33. [References](https://arxiv.org/html/2607.18912#bib)

## 1Introduction

Speech interfaces are increasingly used to search for information, dictate text, operate devices, access public services, and mediate human–computer interaction\. Yet these interfaces remain least reliable for communities whose languages are sparsely represented in commercial and academic training corpora\. The phrase “low resource” is often interpreted as a single shortage—too little audio—but operational work reveals a broader problem\. A language may have hundreds of hours of recordings and still be difficult to model because transcriptions encode inconsistent spelling, non\-speech events appear as lexical tokens, audio objects are missing, duration tails destabilize batching, domain labels are incomplete, or public splits are not independent in the way their names suggest\.

This paper studies that broader problem through the development of C\-elo ASR, a family of streaming ASR systems for Kenyan languages\. The completed systems target Kikuyu \(Gikuyu\) and Dholuo \(Luo\); a third system for Kalenjin is under active development\. All three are adapted from Nemotron 3\.5 ASR Streaming 0\.6B using PyTorch\-based NVIDIA NeMo tooling\. Rather than replace the streaming recognizer with an offline encoder–decoder, we retain cache\-aware inference from training through deployment\. The resulting research question is therefore not simply whether a large multilingual model can transcribe another language\. It is whether that model can be adapted, evaluated, preserved, and served as a true streaming system under realistic data and infrastructure constraints\.

The work is motivated by four observations\. First, a geographically and operationally relevant intermediate checkpoint may provide a practical initialization between a global base model and a Kenyan target language, even when the bridge and target languages are not in the same linguistic subgroup\. This study did not isolate its advantage over direct adaptation from the raw NVIDIA base\. Second, data quality decisions are model decisions: replacing, retaining, or dropping an uncertain character sequence changes the supervision seen by every subsequent training stage\. Third, offline WER alone is insufficient for a streaming product because an offline evaluator can conceal state\-reset bugs, future\-context leakage, unstable partial hypotheses, and latency costs\. Fourth, long fine\-tuning runs produce diminishing gains; without a disciplined experiment ledger it is easy to mistake cumulative compute for scientific progress\.

### 1\.1Research Questions

The study is organized around the following questions\.

RQ1What adaptation behavior is observed when a Kenyan Swahili\-adapted streaming checkpoint is used to initialize Kikuyu, Dholuo, and Kalenjin models while preserving the original online architecture?

RQ2Which corpus defects were observed, how were they handled, and how did corpus and normalization revisions change the supervision and measured ASR quality?

RQ3What improvement trajectory is observed under staged low\-rate continuation, and where do returns become small enough to motivate data or decoding work instead?

RQ4How were trainer validation and true\-streaming internal evaluation used, and what limitations arise from repeated held\-out consultation and mixed\-source selection?

RQ5Which engineering practices were implemented to move from a research checkpoint to an isolated live service, and which authorization and reproducibility controls remain incomplete?

### 1\.2Contributions

This report makes six contributions\.

1. 1\.It documents a complete adaptation path for a cache\-aware FastConformer RNN\-T from a multilingual base through a Kenyan Swahili bridge to language\-specific Kikuyu and Dholuo champions, with an ongoing Kalenjin extension\.
2. 2\.It provides auditable corpus accounting, including row counts, hours, skip reasons, split provenance, and language\-specific cleaning decisions rather than reporting only the nominal size of each source dataset\.
3. 3\.It reports full continuation lineages and versioned true\-streaming evaluations under stated manifests and configurations, including a Kikuyu v4 checkpoint\-average candidate that did not outperform the selected checkpoint and diminishing late\-stage gains\.
4. 4\.It analyzes the gap between WER, conventional CER, and no\-space CER, showing why word\-boundary conventions materially affect interpretation in morphologically rich and orthographically variable settings\.
5. 5\.It describes a prototype operational architecture for isolated model serving, browser streaming, session\-gated configuration, artifact checksums, and private checkpoint mirrors, while identifying authorization controls that remain incomplete\.
6. 6\.It publishes negative evidence from Kalenjin development—marker contamination, alphanumeric labels, short\-utterance behavior, and domain/type stratification—so that future work is not reduced to a single final score\.

### 1\.3What This Paper Does Not Claim

The reported numbers do not establish state\-of\-the\-art performance against PazaBench or other public ASR benchmarks and multilingual model families\[[3](https://arxiv.org/html/2607.18912#bib.bib3)\]\. Such a claim requires identical audio, references, normalization, decoding, and metric code\. The internal test sets used here are drawn from the project datasets and were reviewed at multiple milestones\. The results are therefore evidence of progress within a controlled project protocol, not a substitute for an independently administered benchmark\.

Likewise, the paper does not claim that the three languages form a homogeneous technical category\. Kikuyu is a Bantu language with contrastive orthographic diacritics; Dholuo and Kalenjin belong to Nilotic language families and present different lexical and segmentation patterns\. The commonality lies in the engineering setting: Kenyan speech data, limited public ASR infrastructure, code switching, heterogeneous domains, and the need for low\-latency deployment\.

## 2Related Work

### 2\.1End\-to\-End and Streaming ASR

End\-to\-end ASR replaces hand\-designed acoustic, pronunciation, and language\-model pipelines with neural sequence models optimized directly from paired audio and text\. Connectionist temporal classification, attention\-based encoder–decoders, and transducers are the dominant families\. RNN\-Transducer \(RNN\-T\) is particularly useful for streaming because it factors prediction into an acoustic encoder, a label\-history prediction network, and a joint network that emits either a token or blank without requiring the complete utterance\[[7](https://arxiv.org/html/2607.18912#bib.bib7)\]\.

The Conformer architecture combines self\-attention, which captures long\-range dependencies, with convolution, which captures local acoustic structure\[[6](https://arxiv.org/html/2607.18912#bib.bib6)\]\. FastConformer improves computational efficiency through aggressive subsampling and scalable attention variants\[[4](https://arxiv.org/html/2607.18912#bib.bib4)\]\. Stateful and cache\-aware Conformer inference reuses encoder states across chunks, avoiding full\-prefix recomputation and permitting bounded future context\[[5](https://arxiv.org/html/2607.18912#bib.bib5)\]\. These properties distinguish a genuinely streaming implementation from an application that repeatedly runs an offline model over overlapping windows\.

Whisper demonstrates the robustness available from large\-scale weak supervision, but its standard sequence\-to\-sequence formulation and fixed windows are optimized primarily for offline transcription rather than stateful token\-by\-token streaming\[[11](https://arxiv.org/html/2607.18912#bib.bib11)\]\. This does not imply that Whisper cannot be used interactively; it means that latency, state, and recomputation trade\-offs differ from an RNN\-T designed for bounded\-context inference\.

### 2\.2Multilingual and African ASR

Multilingual pretraining can transfer acoustic and linguistic representations to languages with limited labeled data\. Ritchie et al\. study multilingual acoustic modeling and self\-supervised transfer for African large\-vocabulary ASR\[[17](https://arxiv.org/html/2607.18912#bib.bib17)\]\. Nahabwe et al\. provide a unified comparison of pretrained ASR model families across African languages and controlled data scales\[[18](https://arxiv.org/html/2607.18912#bib.bib18)\]\.

The AfriVoices\-KE resource expands this landscape with roughly 3,000 hours of speech from five Kenyan languages and thousands of speakers\[[13](https://arxiv.org/html/2607.18912#bib.bib13)\]\. Its scale is important, but large nominal duration does not eliminate the need for split auditing and transcription\-quality analysis\.

The present study differs from broad leaderboard work in scope\. It follows two systems from raw dataset preparation to deployment and retains a third unfinished system to expose the iterative failure modes\. The paper therefore complements benchmark studies: benchmarks compare model families on standardized data, while this work examines what happens between receiving a dataset and operating a language\-specific streaming endpoint\.

### 2\.3Subword Modeling, Augmentation, and Prompt Conditioning

SentencePiece learns subword units directly from text without language\-specific tokenization rules\[[9](https://arxiv.org/html/2607.18912#bib.bib9)\]\. Subword modeling reduces out\-of\-vocabulary failures and allows a multilingual model to share components across languages, although a tokenizer inherited from the base or bridge checkpoint may segment target\-language forms inefficiently\. SpecAugment masks time and frequency regions in acoustic features and is a standard regularizer for ASR\[[10](https://arxiv.org/html/2607.18912#bib.bib10)\]\. In this work, tokenizer and augmentation behavior are inherited from the restored checkpoint so that the first adaptation experiments change as few architectural variables as possible\.

Nemotron 3\.5 ASR represents the target\-language choice as a 128\-dimensional one\-hot vector, broadcasts it across encoder time steps, concatenates it with the acoustic encoder output, and projects the fused representation before RNN\-T decoding\[[1](https://arxiv.org/html/2607.18912#bib.bib1)\]\. This input selects language\-conditioned recognition behavior; it is not a translation instruction\. Our experiments retain the Kenyan Swahili prompt identifiersw\-KEbecause the initialization checkpoint was trained with that carrier prompt\. The target\-language evidence enters through paired target audio and text during full\-model fine\-tuning\.

## 3System Architecture

### 3\.1Base Model

The upstream model family is NVIDIA’s Nemotron 3\.5 ASR Streaming 0\.6B, distributed as a NeMo model archive\[[1](https://arxiv.org/html/2607.18912#bib.bib1),[2](https://arxiv.org/html/2607.18912#bib.bib2)\]\. All target\-language adaptations reported in this study initialize from Tony Kipkemboi’s public Kenyan Swahili\-adapted bridge checkpoint\[[12](https://arxiv.org/html/2607.18912#bib.bib12)\]\.

The restored bridge archive contains approximately 637 million trainable parameters, a 24\-layer cache\-aware FastConformer acoustic encoder with model dimension 1024, a 128\-dimensional one\-hot language identifier, and a SentencePiece inventory of 13,087 units\. The recognizer uses an RNN\-T objective and decoder\. The NeMo archive packages the model weights, configuration, and tokenizer assets, supporting consistent restoration under a compatible NeMo software environment\.

Streamingaudio chunksAcousticfront end24\-layer cache\-awareFastConformer encoder\(d=1024d=1024\)left\-context andconvolution cachesconcatenation andprompt\-fusion projectionRNN\-Tjoint networkRNN\-T predictionnetworklanguage\-ID one\-hot\(K=128K=128;sw\-KE\)incrementalsubword tokens

Figure 1:Conceptual architecture retained through adaptation and deployment\. The encoder and decoder are stateful across chunks; the figure omits implementation\-specific feature and subsampling details that remain serialized in the source checkpoint\.
### 3\.2Cache\-Aware Attention Context

The model exposes an attention context pair written as\[L,R\], where the project uses a large cached left context and bounded right context\. The deployed configuration is\[56,13\]\. In the inspected model family, context units correspond to 80 ms encoder\-frame increments\. The right\-context value counts future units, while the model card’s nominal chunk span includes the current unit\. Consequently,\[56,13\]has approximately 1\.04 s of future context and a 1\.12 s nominal chunk span;\[56,3\]has approximately 240 ms of future context and a 320 ms nominal chunk span\. Larger right context generally improves recognition but delays commitment and increases the amount of future audio required before emitting stable output\.

Table 1:Attention\-context configurations used during project experiments\.The validation WER used for checkpoint ranking is produced by the standard NeMo trainer validation path over complete utterances; it is not the cache\-aware true\-streaming evaluator described in Section[9](https://arxiv.org/html/2607.18912#S9)\. True\-streaming internal evaluation is run separately after checkpoint export\. For the historical Kalenjin v1\-v run, the configuredvalidation\.jsonwas additionally mixed\-source, as disclosed in the data\-split and Kalenjin\-results sections\.

The numerical context is only one part of latency\. Perceived delay also depends on audio chunk size, microphone buffering, resampling, network transport, model cold start, GPU scheduling, decoder behavior, and endpointing\. For that reason, an evaluation runtime over a batch of files cannot be interpreted as per\-utterance latency\.

### 3\.3RNN\-T Objective

Let𝐱=\(x1,…,xT\)\\mathbf\{x\}=\(x\_\{1\},\\ldots,x\_\{T\}\)be the acoustic feature sequence,𝐲=\(y1,…,yU\)\\mathbf\{y\}=\(y\_\{1\},\\ldots,y\_\{U\}\)the target subword sequence, and𝐪ℓ\\mathbf\{q\}\_\{\\ell\}the 128\-dimensional one\-hot language condition\. The prompt\-fusion operation defined in Appendix[C](https://arxiv.org/html/2607.18912#A3)produces the language\-conditioned acoustic representation𝐡~tenc\\widetilde\{\\mathbf\{h\}\}^\{\\mathrm\{enc\}\}\_\{t\}\. The RNN\-T model sums over monotonic alignments𝒜​\(𝐱,𝐲\)\\mathcal\{A\}\(\\mathbf\{x\},\\mathbf\{y\}\)containing output labels and blank symbols:

P​\(𝐲∣𝐱,𝐪ℓ\)=∑𝐚∈𝒜​\(𝐱,𝐲\)∏\(t,u\)∈𝐚P​\(at,u∣𝐡~tenc,𝐡upred\)\.P\(\\mathbf\{y\}\\mid\\mathbf\{x\},\\mathbf\{q\}\_\{\\ell\}\)=\\sum\_\{\\mathbf\{a\}\\in\\mathcal\{A\}\(\\mathbf\{x\},\\mathbf\{y\}\)\}\\prod\_\{\(t,u\)\\in\\mathbf\{a\}\}P\\\!\\left\(a\_\{t,u\}\\mid\\widetilde\{\\mathbf\{h\}\}^\{\\mathrm\{enc\}\}\_\{t\},\\mathbf\{h\}^\{\\mathrm\{pred\}\}\_\{u\}\\right\)\.\(1\)The base transducer term is

ℒRNNT=−log⁡P​\(𝐲∣𝐱,𝐪ℓ\),\\mathcal\{L\}\_\{\\mathrm\{RNNT\}\}=\-\\log P\(\\mathbf\{y\}\\mid\\mathbf\{x\},\\mathbf\{q\}\_\{\\ell\}\),\(2\)and the reported implementation adds the FastEmit sequence\-level emission regularizer\[[8](https://arxiv.org/html/2607.18912#bib.bib8)\]:

ℒtrain=ℒRNNT\+λFE​ℛFE,λFE=0\.005\.\\mathcal\{L\}\_\{\\mathrm\{train\}\}=\\mathcal\{L\}\_\{\\mathrm\{RNNT\}\}\+\\lambda\_\{\\mathrm\{FE\}\}\\mathcal\{R\}\_\{\\mathrm\{FE\}\},\\qquad\\lambda\_\{\\mathrm\{FE\}\}=0\.005\.\(3\)The exact regularizer is delegated to NeMo’s RNN\-T loss implementation\. FastEmit encourages earlier label emission, which is useful for streaming but does not by itself guarantee good endpointing or partial\-hypothesis stability\.

## 4Why a Kenyan Swahili Bridge?

Direct adaptation from a broad multilingual checkpoint is possible, but the project instead starts from a public Kenyan Swahili Nemotron 3\.5 streaming checkpoint released by Tony Kipkemboi\[[12](https://arxiv.org/html/2607.18912#bib.bib12)\]\. The rationale is practical rather than genealogical\. Swahili, Kikuyu, Dholuo, and Kalenjin do not all belong to one language subgroup, but Kenyan speech shares recording environments, names, loanwords, code\-switch patterns, and regional acoustic conditions that may be absent from a globally averaged base model\. The bridge also demonstrates that the prompt\-conditioned RNN\-T can already be fine\-tuned in the target NeMo environment\.

The bridge is treated as an initialization, not as a lexical teacher\. The prompt remainssw\-KE, while all trainable parameters are updated from target\-language audio–transcript pairs\. Thus the output language is determined by the supervised target data and learned parameter updates; the prompt label does not cause target speech to be translated into Swahili\.

This design creates an explicit experimental limitation\. The study does not yet include a controlled comparison against adaptation from the untouched NVIDIA base under identical seeds and compute\. Consequently, the bridge is a well\-motivated engineering choice, not a proven causal improvement\. A future ablation should train base\-to\-target and bridge\-to\-target branches using the same manifests, optimizer state, step budget, and evaluator\.

## 5Data Sources, Governance, and Split Semantics

### 5\.1Source Corpora

The study uses African Next Voices \(ANV\) datasets distributed through Hugging Face for Kikuyu, Dholuo, and Kalenjin\[[14](https://arxiv.org/html/2607.18912#bib.bib14),[15](https://arxiv.org/html/2607.18912#bib.bib15),[16](https://arxiv.org/html/2607.18912#bib.bib16),[13](https://arxiv.org/html/2607.18912#bib.bib13)\]\. Each source provides audio, transcriptions, and metadata such as recording type, domain, and recorder identifier when available\. Both scripted and unscripted speech are present\.

The manuscript reports effective post\-cleaning data rather than only the row counts displayed on a dataset landing page\. Rows can disappear because audio is missing or undecodable, the transcript is empty, the duration exceeds the configured threshold, replacement characters make the text uncertain, or a later language\-specific audit identifies non\-speech artifacts\.

Table 2:Audited role\-specific corpora in the final corpus definitions\. For Kalenjin, validation\-development denotes the corrected disjoint split; historical v1\-v instead used the mixed\-source selection manifest described in Section[10](https://arxiv.org/html/2607.18912#S10)\. Hours are decoded audio duration after filtering\.For Kalenjin, we report the corrected, disjoint validation\-development split containing 8,953 utterances\. The historical v1\-v run instead selected checkpoints using the mixed\-source 11,364\-rowvalidation\.json; see Section[10](https://arxiv.org/html/2607.18912#S10)\.

### 5\.2Usage Rights and Community Governance

The datasets contain human speech and should not be treated as anonymous numerical material\. The raw ANV audio, speaker metadata, and other source\-controlled materials are not redistributed by this work\. Access, attribution, and permitted downstream use remain governed by the applicable dataset\-provider terms\. At the time of publication, the model repositories are maintained as private preservation mirrors rather than public releases\.

Native\-speaker review played a direct role in data decisions\. For Kikuyu, reviewers helped distinguish orthographic corruption from legitimate diacritics\. For Kalenjin, a reviewer confirmed that the lexical content of the reviewed examples was generally valid and that the exact forms\[cs\],\(cs\),\[pause\], and\(pause\)were annotation wrappers rather than spoken words\. The later clean\-v3 exclusion of rows containing the literal phraselong pausewas a separate conservative, scope\-defining project decision; it was not part of the speaker\-confirmed marker set\. This review is not a substitute for broad community governance, but it prevented the pipeline from treating uncertain editorial assumptions as linguistic facts\.

### 5\.3Split Integrity

Kikuyu and Dholuo use the official ANV train, validation, and test splits as the source of truth\. No validation or test row is included in gradient updates\. The Dholuo audit found zero recorder overlap across train, validation, and test in the metadata available to the project\.

Kalenjin required an additional correction\. The raw validation package contained bothdevanddev\_testsource rows, while the raw test split corresponded todev\_test\. Using the full raw validation split would therefore duplicate test material during model selection\. The corrected pipeline creates a disjointvalidation\_dev\.jsonfrom only thedevrows and reservesdev\_testfor test\. Hash and provenance audits over the clean training validation and test manifests found zero overlap\.

This correction describes the role\-specific manifests produced by the current pipeline, but it was not used by the historical Kalenjin v1\-v training command\. That run selected checkpoints with the mixed\-sourcevalidation\.json, which containeddev\_test\-origin rows also represented in the clean\-v3 test manifest\. Accordingly, its logged validation WER of 0\.66772 is not a disjoint validation estimate, and the downstream clean\-v3 test result is reported only as an adaptively consulted diagnostic\.

This distinction is critical\. A split can be named “validation” and still violate the intended statistical role if its provenance contains a future test subset\. The project therefore records both the exported split name and the source\-row split for every retained example\.

## 6Data Preparation and Language\-Specific Curation

### 6\.1Common Preparation Pipeline

The common pipeline performs the following stages:

1. 1\.stream or load each source row while retaining source split, filename, recording type, domain, and recorder metadata;
2. 2\.decode the audio, reject missing or undecodable files, and measure duration from the decoded signal;
3. 3\.reject empty or unusable transcripts and rows beyond the maximum duration configured for the language and corpus generation;
4. 4\.apply a deterministic text normalizer and language\-specific corrections;
5. 5\.write a NeMo JSON\-lines manifest containing the audio path, duration, normalized text, and audit metadata;
6. 6\.persist per\-reason skip counts, hours, type counts, domain counts, recorder counts, and normalization\-change counts;
7. 7\.package audio into tarred shards for efficient training while preserving manifest\-to\-shard correspondence;
8. 8\.run split\-overlap and file\-existence audits before dispatching a GPU training job\.

Table 3:Maximum accepted duration in the final reported corpus generation for each language\.The executable normalizer is the canonical specification\. The implementation records the normalization rules and corpus ledgers\. A future public release should additionally include unit tests with before\-and\-after strings because Unicode punctuation and visually similar letters are easy to misdescribe in prose\. Rows with uncertain text are dropped rather than rewritten when the project lacks enough linguistic evidence to assert the intended form\.

### 6\.2Dholuo Preparation Accounting

The raw Dholuo training pass observed 117,564 rows and retained 92,287\. The retained audio totals 206\.8679 hours and includes 85,394 scripted and 6,893 unscripted examples\. The preparation report records 1,913 rows with replacement characters, 41 decode failures, 11,159 over\-duration rows, and 12,164 empty transcriptions\. Some rows can trigger more than one diagnostic during exploration; the production manifest writer assigns a final exclusion reason deterministically\.

The raw Dholuo validation pass observed 13,853 rows and retained 11,152 \(25\.1899 hours\)\. It excluded 221 replacement\-character rows, 1,138 over\-duration rows, three decode failures, and 1,339 empty transcriptions\. The retained split contains 10,271 scripted and 881 unscripted examples\. The test set retains 5,480 examples totaling 12\.16 hours\.

Table 4:Dholuo preparation ledger for the train and validation splits\.
### 6\.3Kikuyu Orthography and Unicode Decisions

Kikuyu curation required special attention to the contrastive characters ĩ and ũ as represented in the project’s Unicode text\. Early audits found visually related but unintended forms such aså,ä,ï, andūin places where the intended Kikuyu character could be established from project evidence\. The reviewed correction path includedå→\\rightarrow~u,ä→\\rightarrow~i, followed byï→\\rightarrow~iandū→\\rightarrow~ufor confirmed cases\. Accepted text is serialized in Unicode Normalization Form C \(NFC\) so that canonically equivalent character sequences do not create distinct labels\.

The important methodological choice is what happened when the mapping was not certain\. The pipeline did not apply arbitrary transliteration merely to retain more hours\. Rows containing unresolved suspicious characters were excluded in the final curated generation\. This reduced nominal data volume but prevented the model from learning a mixture of valid orthography and encoding noise\.

The final filtered\-v4 Kikuyu corpus contains 114,457 training utterances \(182\.31 hours\), 13,667 validation utterances \(19\.64 hours\), and 6,795 internal\-test utterances \(10\.62 hours\)\. The validation and test splits were excluded from gradient updates but were consulted adaptively during the iterative research process\.

### 6\.4Kalenjin: From Clean\-v1 to Clean\-v3

The first Kalenjin preparation pass observed 82,378 training rows and retained 68,012 \(158\.9356 hours\)\. It excluded 450 rows with replacement characters, 392 decode failures, 12,621 over\-duration rows, one transcript empty after normalization, and 902 empty transcriptions\. The retained data included 58,927 scripted and 9,085 unscripted examples\.

The first validation pass observed 13,845 rows and retained 12,084 \(25\.5004 hours\), while the first test pass observed 3,315 and retained 2,557 \(5\.6431 hours\)\. These manifests were useful for early learning experiments but retained annotation markers that punctuation normalization converted into apparent words\.

Clean\-v2 explicitly removes the confirmed marker forms\[cs\],\(cs\),\[pause\], and\(pause\)\. An evaluation of the existing v1\-iii checkpoint against clean\-v2 separated metric changes caused by reference cleanup from those caused by learned parameters\. However, further audit found the literal phraselong pause, digit\-bearing references such as20082018andwe5107, and very short normalized targets associated with over\-generation\.

Clean\-v3 derives from clean\-v2 and applies three row\-level filters: it drops the*entire row*when the normalized reference contains the literal phraselong pause, when it contains any digit, or when it contains fewer than three normalized tokens\. The digit rule intentionally excludes all digit\-bearing references in this experimental generation, including forms that may be linguistically recoverable; it should not be interpreted as evidence that every number or identifier is invalid speech\. The pipeline does not merely delete a suspicious substring and retain the remaining words, because doing so could create audio–text misalignment\. The resulting clean\-v3 corpus contains 64,007 training utterances \(151\.28 hours\), 8,953 disjoint validation\-development utterances \(18\.92 hours\), and 2,411 test utterances \(5\.33 hours\)\.

Table 5:Kalenjin corpus generations and their purpose\.
### 6\.5Why Deletion Was Sometimes Preferable to Repair

Deleting an entire row sacrifices data, but partial text repair can be more damaging when the suspicious token corresponds to audible material of unknown extent\. For example, deletinglong pausefrom the text is safe only if it is a non\-speech annotation and not a phrase read aloud\. Deleting20082018is unsafe if the speaker actually says a date whose words should be represented\. Without row\-level listening and language\-aware transcription, retaining the rest of the text can create a target that is systematically shorter than the audio\.

The project uses three decision levels:

1. 1\.deterministic normalization for cases whose intended character or marker interpretation is verified;
2. 2\.row\-level native\-speaker review for ambiguous but potentially valuable cases;
3. 3\.conservative row exclusion when the intended supervision cannot be reconstructed reliably\.

This policy is intentionally reversible\. The raw data and exclusion report are preserved so that a later transcription campaign can recover excluded audio with corrected labels\.

## 7Implementation and Experimental Infrastructure

### 7\.1Software Stack

The training and inference system is implemented in Python using PyTorch through NVIDIA NeMo’s ASR abstractions\[[2](https://arxiv.org/html/2607.18912#bib.bib2)\]\. NeMo supplies the model restoration, tarred\-audio data loaders, prompt\-aware RNN\-T model class, mixed\-precision execution, distributed\-training integration, checkpoint callbacks, and cache\-aware streaming inference utilities\. PyTorch remains the numerical and automatic\-differentiation substrate: all trainable tensors, optimizer state, gradient computation, and GPU kernels ultimately execute through PyTorch\.

The remote training jobs run in project\-defined, version\-controlled container image configurations on Modal GPU workers\. Weights, manifests, tarred audio shards, logs, evaluation reports, and exported\.nemoarchives are stored in persistent Modal volumes rather than ephemeral container filesystems\. Weights & Biases records optimization metrics and validation trajectories\. The deployment layer uses language\-specific FastAPI WebSocket services for the isolated true\-streaming backends\. The browser client obtains language\-specific endpoint configuration through a protected application route and then opens the configured stream; it never receives storage credentials or checkpoint paths\.

### 7\.2Persistent Data Layout

Each language has an isolated persistent volume with a common logical layout:

Listing 1:Logical persistent\-volume layout used by each language project\./

anv\_<language\>/

<corpus\_generation\>/

manifests/\{train,validation,test\}\.json

audio/\{train,validation,test\}/\.\.\.

shards/\.\.\.

manifest\_summary\.json

checkpoints/<run\_name\>/<run\_name\>/<timestamp\>/checkpoints/\.\.\.

eval/<evaluation\_name\>/\.\.\.

reports/\.\.\.

logs/<run\_name\>/\.\.\.

models/\.\.\.

The container mounts this volume at/data; consequently, a volume path such as/checkpoints/\.\.\.appears inside a running worker as/data/checkpoints/\.\.\.\. This distinction became operationally important when verifying paths with the Modal CLI: the CLI lists paths relative to the volume root, while training code sees the mount point\.

### 7\.3Why Tarred Audio Was Used

Reading tens of thousands of independent audio objects from a remote persistent filesystem creates metadata and open\-call overhead\. The pipeline therefore supports tarred WebDataset\-style audio shards, with manifests carrying shard assignments and NeMo reading sequentially from archives\. This improved input throughput, but introduced a strict integrity requirement: every manifest entry, shard identifier, archive name, and row count had to agree\. Early failures caused by stale shard metadata or missingshard\_idfields were treated as data\-build failures rather than training failures\. The production rule became: generate manifests and shards in one versioned operation, validate all members, and never mix a manifest from one generation with archives from another\.

### 7\.4Compute Selection

Short probes were used to validate compatibility before committing expensive accelerator time\. Full experiments used NVIDIA H100 or H200 workers depending on availability and memory requirements\. The H200 was chosen for the principal full\-data Dholuo and Kalenjin continuation runs because its larger memory headroom accommodated the 0\.6B model, duration\-based batches, validation decoding, and checkpoint serialization without changing the optimization objective\. The accelerator choice is therefore an infrastructure variable, not a claimed modeling contribution\.

### 7\.5Run Dispatch and Lifecycle

Long jobs were dispatched with Modal’s detached execution mode so that a laptop sleep, terminal closure, or transient network failure would not cancel the remote input\. This was not merely ergonomic\. During development, a foregroundremote\(\)call lost its gRPC connection and Modal propagated a cancellation signal to the active training input\. The corrected production invocation usedmodal run \-\-detachand an entrypoint that retained the spawned function call independently of the local client lifecycle\.

Some successful jobs ended with a Modal message stating that the runner had been shutting down longer than its grace period\. Such a message was not interpreted in isolation\. A run was considered successfully trained only when the logs showed that the target step was reached, the final checkpoint and\.nemoarchive were saved, the persistent volume was committed, and the W&B run closed\. The post\-completion runner warning was recorded as an infrastructure incident, not silently discarded\.

## 8Fine\-Tuning Protocol

### 8\.1Full\-Parameter Adaptation

All reported language models use full\-parameter fine\-tuning rather than adapters or a frozen acoustic encoder\. Letθ\\thetadenote all acoustic encoder, prompt\-fusion projection, prediction\-network, and joint\-network parameters\. Given an audio sequence𝐱\\mathbf\{x\}, one\-hot language identifier𝐪ℓ\\mathbf\{q\}\_\{\\ell\}, and target subword sequence𝐲\\mathbf\{y\}, training minimizes the RNN\-T negative log likelihood

ℒRNNT​\(θ\)=−log​∑π∈ℬ−1​\(𝐲\)Pθ​\(π∣𝐱,𝐪ℓ\),\\mathcal\{L\}\_\{\\mathrm\{RNNT\}\}\(\\theta\)=\-\\log\\sum\_\{\\pi\\in\\mathcal\{B\}^\{\-1\}\(\\mathbf\{y\}\)\}P\_\{\\theta\}\(\\pi\\mid\\mathbf\{x\},\\mathbf\{q\}\_\{\\ell\}\),\(4\)whereπ\\piranges over blank\-augmented alignments that collapse to𝐲\\mathbf\{y\}\. The implementation useswarprnnt\_numbaand a FastEmit coefficient of 0\.005 to encourage timely token emission without replacing the transducer objective\[[8](https://arxiv.org/html/2607.18912#bib.bib8)\]\.

### 8\.2Core and Stage\-Specific Hyperparameters

The continuation lineage reused a recurring low\-learning\-rate configuration, but warm\-up, checkpoint retention, and some controlled challenger settings were not invariant across every run\. Table[6](https://arxiv.org/html/2607.18912#S8.T6)distinguishes the core configuration of the selected fixed\-rate late\-stage path from stage\-specific settings explicitly preserved in the project records\. Exact values are not inferred for stages whose launch configurations were not explicitly recorded in the inspected artifacts\.

Table 6:Core and stage\-specific configuration documented for selected late\-stage continuation runs\.
### 8\.3Staged Continuation

The project uses a checkpoint lineage: a selected model from one stage initializes the next stage\. This is useful operationally because each stage can be evaluated before additional compute is spent\. It also permits corpus corrections between stages, as in Kalenjin clean\-v2 and clean\-v3\.

Staged continuation must not be described as mathematically identical to a single uninterrupted run of the combined length\. Restoring a\.nemomodel archive restores model parameters and configuration, but the continuation scripts initialize a new optimizer and scheduler unless a complete trainer checkpoint is resumed\. The data order, warm\-up, random state, and optimizer moments can therefore differ\. In this paper, a statement such as “v7 continues from v6” means parameter initialization from the selected v6 model, not exact continuation of v6’s optimizer trajectory\.

### 8\.4Checkpoint Selection and Export

Each full validation produces a validation\-WER measurement\. The checkpoint callback retains a run\-specific top\-kksubset of checkpoint candidates\. The selection rule is

k∗=arg⁡mink∈𝒦⁡WERvalidation​\(k\),k^\{\*\}=\\arg\\min\_\{k\\in\\mathcal\{K\}\}\\mathrm\{WER\}\_\{\\mathrm\{validation\}\}\(k\),\(5\)where𝒦\\mathcal\{K\}is the set of checkpoints retained by the callback of that run \. The target promotion procedure restores the selected checkpoint and exports it to a self\-contained NeMo\.nemoarchive\. That archive bundles the model configuration, tokenizer assets, and weights required by NeMo restoration\.

The only multi\-checkpoint averaging result reported here is from the Kikuyu v4 filtered experiment\. The selected individual checkpoint obtained 53\.3505% WER and 10\.7256% NS\-CER, whereas the top\-three checkpoint average obtained 53\.3887% WER and 10\.7683% NS\-CER under the same filtered full\-test protocol\. The top\-three average therefore did not improve upon the selected individual checkpoint\. We did not conduct additional ablations to determine the cause of this result\. For v13, we exported the validation\-selected best individual checkpoint, denoted*best1*\. The archived v13 experiment record contains no checkpoint\-averaging evaluation, so we report only the individual checkpoint result\.

Dholuo v7 is a documented historical exception to this export procedure\. The run reached a best validation WER of 0\.33944, but the held\-out evaluation and preserved deployment package used the final v7\.nemoexport, whose final logged validation WER was 0\.33949\. The best\-validation trainer checkpoint was preserved separately and was not the artifact used to obtain the reported Dholuo internal evaluation metrics\.

## 9Evaluation Protocol

### 9\.1Metrics

For a reference containingNNwords, word error rate is

WER=S\+D\+IN,\\mathrm\{WER\}=\\frac\{S\+D\+I\}\{N\},\(6\)whereSS,DD, andIIare the minimum\-edit substitution, deletion, and insertion counts\. Character error rate is computed analogously over Unicode characters:

CER=Sc\+Dc\+IcNc\.\\mathrm\{CER\}=\\frac\{S\_\{c\}\+D\_\{c\}\+I\_\{c\}\}\{N\_\{c\}\}\.\(7\)Because inconsistent word\-boundary decisions can dominate strict WER in agglutinative or under\-standardized text, the project also reports no\-space CER:

NS​\-​CER=CER​\(ρ​\(r\),ρ​\(h\)\),ρ​\(s\)=remove\-spaces​\(s\),\\mathrm\{NS\\mbox\{\-\}CER\}=\\mathrm\{CER\}\\bigl\(\\rho\(r\),\\rho\(h\)\\bigr\),\\qquad\\rho\(s\)=\\text\{remove\-spaces\}\(s\),\(8\)for referencerrand hypothesishh\. No\-space CER is complementary; it does not replace WER or standard CER\.

### 9\.2True\-Streaming Evaluation

This post\-training evaluator is distinct from the full\-utterance trainer validation used to rank checkpoints\. The internal true\-streaming evaluator uses the cache\-aware streaming path rather than transcribing complete files through an offline convenience API\. Audio is segmented into successive chunks according to the model’s streaming configuration\. For each active utterance, the evaluator carries forward the encoder cache, cache lengths, and RNN\-T decoding state\. Only the current chunk and permitted right context are available when producing the next partial result\. The final hypothesis is scored after the utterance is flushed\.

Unless otherwise stated, reported tests use promptsw\-KE, attention context\[56,13\], greedy decoding, and the language’s versioned internal evaluation manifest\. This alignment between evaluation and deployment is important: an offline WER can conceal regressions caused by chunking, cache management, or emission timing\.

### 9\.3Latency and Runtime Interpretation

The evaluator records total wall\-clock runtime for the complete test set\. This is useful for detecting gross throughput regressions, but it is not an end\-user latency benchmark\. The runs include loading, batching, data access, Python overhead, and aggregate GPU execution\. A production latency study should separately report cold\-start time, real\-time factor, first\-token latency, partial\-update cadence, finalization delay, concurrency, and hardware\. Accordingly, this paper calls the measured quantity*evaluation runtime*, not streaming latency\.

### 9\.4Held\-Out Status and Repeated Use

The Kikuyu and Dholuo test manifests were not used for gradient updates\. However, repeated model decisions were informed by full\-test results across successive continuation stages\. The sets are therefore best described as*internal held\-out evaluation sets*, not untouched one\-shot benchmarks\. This distinction limits the strength of external generalization claims\. A future public release should freeze an additional speaker\-disjoint test set or use an independent benchmark whose references and normalization are never consulted during development\.

### 9\.5Comparability to External Leaderboards

Numbers from public leaderboards are meaningful only when audio, reference normalization, segmentation, language variety, decoding mode, and metric implementation match\. The internal C\-elo results are not claimed to be directly paired with PazaBench\[[3](https://arxiv.org/html/2607.18912#bib.bib3)\]or other public scores\. They can motivate a controlled external evaluation, but they do not by themselves establish state of the art\. This paper therefore reports exact internal protocols and avoids substituting visual leaderboard comparison for a reproduced benchmark\.

## 10Experimental Results

### 10\.1Kikuyu Learning Trajectory

The Kikuyu lineage combined increasingly strict orthographic curation with staged continuation\. Table[7](https://arxiv.org/html/2607.18912#S10.T7)reports the internal true\-streaming results for the principal retained stages\. Later stages use the same evaluation configuration and demonstrate a consistent reduction in both WER and no\-space CER\.

Table 7:Kikuyu internal true\-streaming results\. Lower is better\.The v13 run continued from v12 for 70,000 optimizer steps\. Its best validation WER was 0\.41163 near epoch 65; the final validation at step 70,000 was 0\.41244\. This small late\-stage regression is why the best checkpoint, not the final checkpoint, was exported\. Relative to v12, v13 reduced internal\-evaluation WER by 1\.7308 absolute points \(3\.87% relative\) and no\-space CER by 0\.3877 absolute points \(4\.74% relative\)\. Relative to the v4 filtered reference, the cumulative absolute reductions were 10\.3828 WER points and 2\.9309 no\-space CER points\.

#### 10\.1\.1Streaming context ablation

An internal ablation compared\[56,13\]with\[56,3\]while holding the checkpoint and evaluation pipeline fixed\. The larger right\-context setting improved WER by approximately 0\.90 absolute points and no\-space CER by approximately 0\.40 points\. The deployed default was therefore fixed at\[56,13\]\. This is an accuracy\-oriented operating point and should not be interpreted as the only valid latency setting\.

### 10\.2Dholuo Learning Trajectory

Dholuo exhibits a particularly clear continuation curve\. Validation WER fell from 0\.49586 in the first full\-data stage to 0\.33944 in v7\. Table[8](https://arxiv.org/html/2607.18912#S10.T8)separates the validation\-selection trajectory from held\-out evaluations available for the final stages\.

The historical Dholuo preparation pipeline did not remove the literal tokencs\. Normalization removed surrounding brackets or parentheses but did not remove the resulting token\. Run logs directly confirm its presence in validation references, and the same frozen normalization function was used when constructing the train, validation, and test manifests\.

Comparisons among checkpoints are interpretable only within the same evaluation split and under the same label policy, decoder, attention context, and scoring implementation\. Validation metrics are used for model selection, whereas test metrics summarize a separately defined evaluation population; the two are not compared numerically with one another\. Results under this historical Dholuo policy should not be compared directly with scores produced after removingcsor applying a different normalization policy\.

Table 8:Dholuo full\-data continuation lineage\. Best validation WER reports checkpoint\-selection results\. The v7 test metrics were measured from the final exported\.nemo, whose final logged validation WER was 0\.33949; the separately preserved best\-validation checkpoint reached 0\.33944\. An em dash denotes an unreported metric\.The v7 final export’s full internal true\-streaming evaluation produced 33\.9791% WER, 9\.5855% standard CER, and 8\.1340% no\-space CER on 5,480 utterances\. The complete evaluation took 222\.45 seconds on its evaluation worker\. Under the same Dholuo test manifest and scoring protocol, v7 reduced WER relative to v6 by 1\.3711 absolute points \(3\.88% relative\), standard CER by 0\.2657 points, and no\-space CER by 0\.1691 points\. The smaller CER change relative to WER suggests that some of the remaining errors concern segmentation and word boundaries rather than entirely incorrect character sequences\.

The v7 validation curve continued to decline through most of the run but had nearly plateaued by 40,000 steps\. This, together with the diminishing test improvement, motivated treating v7 as the final Dholuo champion rather than automatically launching another long continuation\.

### 10\.3Kalenjin Work in Progress

Kalenjin remains an active research track rather than a production claim\. The lineage demonstrates that the model is learning, while also showing a large residual error burden and the importance of corpus revision\.

Table 9:Kalenjin adaptively consulted diagnostic progression\. Corpus generations differ, and v1\-v used mixed\-source checkpoint selection, so adjacent rows should be interpreted with their stated reference set and limitations\.The v1\-v run initialized from v1\-iv and trained for 70,000 steps on clean\-v3\. Its best and final logged selection WER were both 0\.66772, but the historical command usedvalidation\.jsonrather than the disjointvalidation\_dev\.json\. That mixed\-source manifest containeddev\_test\-origin rows also represented in the clean\-v3 test set; therefore 0\.66772 is not a disjoint validation estimate\. The true\-streaming clean\-v3 diagnostic produced 68\.74% WER on 2,411 utterances and took 92\.16 seconds\. This filtered set excludes rows containinglong pause, any digit, or fewer than three normalized tokens\. Because the set was repeatedly consulted during development and checkpoint selection had test\-origin exposure, 68\.74% is an adaptive diagnostic result rather than an independent generalization estimate\. Because the evaluator output for this stage did not archive standard and no\-space CER, those cells remain unreported rather than reconstructed from incomplete logs\.

The Kalenjin result is not yet comparable in maturity to Kikuyu or Dholuo\. It documents a repeatable internal diagnostic after marker and artifact cleanup, and it identifies where native\-speaker\-guided error correction should focus\.

### 10\.4Cross\-Language Snapshot

Table 10:Current project snapshot under the internal true\-streaming protocols\. Kikuyu and Dholuo use adaptively consulted internal evaluation sets; Dholuo uses its frozen historical normalization policy\. Kalenjin is a filtered adaptive diagnostic with mixed\-source checkpoint\-selection exposure\. These metrics are not substitutes for evaluation on a common external benchmark\.The apparent ordering across languages must not be read as a controlled language\-difficulty comparison\. The corpora differ in speakers, domains, scripted/unscripted balance, orthographic variation, utterance length, and reference quality\. The table summarizes project state; it does not establish that one language is intrinsically easier than another\.

## 11Error Analysis

### 11\.1Why Aggregate WER Is Insufficient

An ASR system can improve aggregate WER while remaining unreliable for a particular speaker group, recording condition, domain, or utterance type\. The project therefore treats WER as the beginning of diagnosis rather than the end\. For each evaluated utterance, the analysis table can retain reference, hypothesis, word\-edit counts, character\-edit counts, duration, scripted/unscripted type, domain, recorder identifier, and source split\. This enables both quantitative slicing and native\-speaker review\.

The most useful distinction is between an*acoustic error*, where the hypothesis is not phonetically faithful; an*orthographic error*, where a plausible sound sequence is written differently; a*boundary error*, where neighboring morphemes or words are joined or split; and an*annotation mismatch*, where the reference contains metadata or text that was not spoken\. These categories have different remedies\. More optimization cannot reliably fix a corrupted reference, while text normalization alone cannot fix poor acoustic coverage\.

### 11\.2Kikuyu and Dholuo Boundary Sensitivity

The gap between strict WER and no\-space CER is informative\. Kikuyu v13 has 42\.9677% WER but 7\.7947% no\-space CER; Dholuo v7 has 33\.9791% WER and 8\.1340% no\-space CER\. This does not mean that the models make only 8% meaningful errors, because removing spaces intentionally ignores word boundaries\. It does show that many hypotheses preserve a substantial portion of the character sequence even when strict tokenization yields substitutions, insertions, or deletions\.

For example, a reference may contain a compound as one token while the model emits two acoustically close tokens\. Strict WER can score this as multiple edits; no\-space CER reduces the penalty if the underlying character stream is similar\. For downstream search or subtitle display, the distinction matters: a near\-phonetic string may be understandable to a speaker while still being unsuitable for a lexically normalized transcript\.

### 11\.3Kalenjin Stratified Findings

The detailed v1\-iii audit exposed several systematic patterns before clean\-v3 was constructed:

- •scripted utterances had approximately 70\.02% WER, while unscripted utterances reached approximately 83\.61%;
- •utterances longer than 41 reference words reached approximately 84\.54% WER;
- •audio in the 20–40 second duration bucket reached approximately 83\.27% WER;
- •only 68 of 2,557 test rows contained the literalcsmarker, and removing those rows changed aggregate WER from approximately 73\.20% to 73\.03%;
- •frequent errors involved word joining and splitting, for example a reference form such asinyaakseiversus a hypothesis sequence resemblinginya aksei\.

The small effect of excludingcsrows is an important negative result\. Marker cleanup was necessary for label validity, but it could not explain the majority of Kalenjin errors\. The large scripted/unscripted and long\-utterance gaps point instead to acoustic and linguistic coverage, transcript consistency, and sequence\-length robustness\.

### 11\.4Short\-Utterance Over\-Generation

Very short references can produce high insertion rates when the model emits a longer, plausible sequence\. Several causes are possible: incorrect end\-of\-utterance boundaries, residual non\-speech in the audio, references that omit spoken material, prompt or language\-model priors that dominate weak acoustics, and genuine model over\-generation\. The clean\-v3 decision to exclude normalized targets shorter than three tokens is therefore an experimental control, not a universal recommendation\. It reduces a concentrated source of instability while an explicit endpointing and label audit is performed\.

A production remedy should not simply discard all short speech\. The stronger next study is a short\-utterance challenge set with manual listening, verified time boundaries, speech\-activity metadata, insertion/deletion breakdowns, and inference\-side endpoint tuning\.

### 11\.5Code\-Switching and Borrowed Terms

The corpora contain English and Swahili names, products, institutions, and technical terms embedded in the target language\. Examples include service names, crop names, healthcare terminology, and public institutions\. In the Kalenjin clean\-v2 and clean\-v3 label generations, the speaker\-confirmed annotation wrappers\[cs\],\(cs\),\[pause\], and\(pause\)were removed, while genuinely spoken code\-switched words were retained\. Clean\-v3 additionally rejected complete rows containing the literal annotation phraselong pause\. The historical Dholuo series is an explicitly disclosed exception: its normalizer retained the unbracketed tokencswherever it occurred, and run logs directly confirm it in validation targets\. The same frozen normalizer was used to construct all three data splits\.

Errors around borrowed terms should be analyzed separately from errors on core target\-language words\. The inherited SentencePiece vocabulary can compose many previously unseen strings from subword pieces, subject to its fixed inventory, normalization, and unknown\-token behavior; frequency and orthographic priors still matter\. A future tokenizer study should compare the inherited vocabulary with a jointly trained tokenizer while keeping the acoustic model and data fixed\.

### 11\.6Representative Qualitative Patterns

In Table[11](https://arxiv.org/html/2607.18912#S11.T11), the reference excerpt is taken from the dataset transcript associated with the audio, whereas the hypothesis excerpt is the corresponding text predicted by the ASR model\. The examples are diagnostic snippets rather than linguistically adjudicated judgments hence fluent speakers should determine which differences are acceptable variants\.

Table 11:Representative qualitative patterns from true\-streaming logs\.
### 11\.7Error\-Analysis Priorities

Based on the observed patterns, the next highest\-value actions are:

1. 1\.native\-speaker review of the highest edit\-distance utterances rather than random examples alone;
2. 2\.speaker\-, domain\-, duration\-, and scripted\-status stratification;
3. 3\.explicit insertion, deletion, and substitution reporting;
4. 4\.a lexical normalization policy that distinguishes acceptable spelling variants from actual recognition errors;
5. 5\.a manually verified code\-switch and named\-entity subset;
6. 6\.endpointing and short\-utterance challenge evaluations;
7. 7\.confidence calibration and selective prediction for cases in which the system should abstain or request repetition\.

## 12Prototype Streaming Deployment and Artifact Promotion

### 12\.1True\-Streaming Backend

The deployed service restores the selected\.nemoarchive once per warm container, applies thesw\-KEprompt, configures\[56,13\], and exposes a stateful WebSocket stream\. Audio frames arriving from a browser are converted to the expected mono sample representation and appended to the active session\. The server retains model caches between messages and emits partial hypotheses without retranscribing the entire recording\.

The isolated Kikuyu and Dholuo true\-streaming services expose stateful WebSocket interfaces for inference\.

Authenticatedweb clientLanguage\-specificModal FastAPI/WebSocketPrivate volumechampion\.nemoNext\.js serverconfiguration routeSupabase sessionvalidationModal secretsHF/W&B credentialssession validationauthorizedendpoint configaudio chunkspartial/final textcredentialsprivate model access

Figure 2:Prototype deployment and trust boundary\. After server\-side session verification, the configuration route returns the selected backend endpoint\. The browser then opens a direct WebSocket connection to the language\-specific service\. The evaluated prototype did not implement a user\-bound authorization token at the streaming\-service ingress\.
### 12\.2Language Isolation

Kikuyu and Dholuo are deployed as separate Modal applications, profiles, volumes, model paths, and frontend configuration routes\. This isolation reduces blast radius: replacing the Dholuo champion cannot silently alter the Kikuyu service\. The user interface presents language selection; after server\-side session verification, the configuration route returns the corresponding backend URL and the browser connects to that language service\. This application gate protects configuration discovery, but the backend streaming endpoint does not yet require a short\-lived user\-bound stream token\. Kalenjin remains a placeholder until it meets the project’s release threshold\.

### 12\.3Authentication and API Protection

The C\-elo AI page uses Supabase Google OAuth\. Unauthenticated navigation is redirected to a sign\-in route, and server\-side API routes verify the Supabase session before returning model\-service configuration\. An unauthenticated request to the configuration API returns HTTP 401\. This prevents the page itself from being the only access control\.

Authentication does not make a browser\-visible WebSocket URL secret\. Any URL used directly by browser JavaScript can be observed in developer tools\. Abuse resistance therefore requires authorization at the service boundary, short\-lived signed access where appropriate, per\-account quotas, concurrency limits, origin checks as defense in depth, request\-size and duration limits, and server\-side usage accounting\. These controls were not all part of the evaluated prototype: the implemented boundary validates Supabase sessions on protected application and configuration routes, while direct stream\-token authorization, metering, and account\-level quotas remain production\-hardening work\.

### 12\.4Checkpoint Confidentiality

The inference service mounts a private persistent volume and restores the model server\-side\. Neither the\.nemofile nor its filesystem path is returned to clients\. Private Hugging Face mirrors require an account token with repository permission\. The public application holds no Hugging Face write token, Modal credential, W&B token, Supabase secret key, or model binary\.

The Supabase publishable client key is intentionally browser\-visible and is constrained by authentication and row\-level security; privileged service\-role or secret keys remain server\-side\. Likewise, model\-service credentials are stored as platform secrets, notNEXT\_PUBLIC\_\*variables\.

### 12\.5Artifact Promotion

The project defines the following target model\-promotion workflow for new releases:

1. 1\.select the lowest\-validation\-WER checkpoint;
2. 2\.run the complete true\-streaming internal evaluation;
3. 3\.compare against the current champion under the same manifest and normalization;
4. 4\.inspect qualitative and stratified regressions;
5. 5\.export a self\-contained\.nemoarchive;
6. 6\.calculate checksums and create a machine\-readable artifact manifest;
7. 7\.copy the champion into an immutable\-named folder on the training volume;
8. 8\.mirror it to a private Hugging Face repository;
9. 9\.deploy to an isolated language backend;
10. 10\.perform application\-gated live smoke tests before switching the frontend configuration\.

Kikuyu v13 followed the validation\-selected export path\. Dholuo v7 is a historical exception: its final run export was evaluated and deployed, while the slightly better validation checkpoint was preserved separately\. Accordingly, the reported Dholuo test metrics characterize the final v7\.nemoexport rather than a restored best\-validation checkpoint\.

No training run updates the live model automatically and Kalenjin has not been promoted to a live release yet\. The sequence above is therefore both a record of the Kikuyu and Dholuo promotion path and the standard for subsequent promotions\.

## 13Reproducibility and Artifact Provenance

### 13\.1What Is Preserved

For each promoted model, the project internally records the model archive, source run and timestamp, selected validation metric, internal evaluation results, corpus\-generation identifier, prompt, attention context, decoding mode, software entrypoint, and model checksum\. These records are distributed across controlled Modal storage, private Hugging Face mirrors, experiment blueprints, and evaluation logs; they are not publicly available as a single complete artifact bundle\.

The\.nemofile is sufficient to restore the trained model under a compatible NeMo environment because it contains the learned weights, model configuration, and tokenizer assets\. Additional manifests, resolved configurations, evaluation reports, and checksums support provenance auditing and evaluation reproduction\. Trainer checkpoints provide the additional state needed when continuation or training resumption is required\. External reproduction remains subject to the access restrictions described in the Data and Artifact Availability statement\.

### 13\.2Reproducibility Levels

This project distinguishes four levels:

Artifact reproducibilityThe exact exported model can be restored and its checksum verified\.

Evaluation reproducibilityThe model, manifest, normalization, prompt, context, and decoder can be rerun to reproduce metrics within infrastructure tolerance\.

Training reproducibilityThe data generation, initialization, hyperparameters, software environment, and run command are available to repeat fine\-tuning, although stochastic kernels may prevent bitwise equality\.

Scientific reproducibilityAn independent group can evaluate the method on accessible data and verify the conclusions without relying on private internal artifacts alone\.

The present work is strongest at the first two levels inside the controlled project environment\. Full scientific reproducibility is constrained by dataset access terms, private champion repositories, platform\-specific infrastructure, and the need to publish a frozen external evaluation protocol\.

### 13\.3Experiment Ledger

The principal continuation\-run names encode the language, stage, hardware, parent checkpoint, corpus size or generation, learning rate, step budget, and validation regime\. This verbose naming convention is intentional\. It makes accidental initialization from the wrong model or evaluation against the wrong corpus easier to detect\. The appendices provide the principal lineage and command templates; archived timestamps, resolved configurations, paths, blueprints, and artifact manifests supply details that are not present in every run name\.

## 14Responsible Development

### 14\.1Community and Language Expertise

Orthographic and annotation decisions cannot be delegated entirely to Unicode rules or an English\-language researcher\. Native\-speaker review was used for Kikuyu character mappings and Kalenjin marker interpretation\. For Kalenjin, the speaker confirmed the linguistic content of the reviewed examples while identifying the exact forms\[cs\],\(cs\),\[pause\], and\(pause\)as annotation wrappers rather than spoken target words\.

This process should grow from ad hoc consultation into documented community governance\. Future releases should identify who defines acceptable orthography, how disagreements are adjudicated, how contributors are credited and compensated, and how users can report harmful or systematically incorrect outputs\.

### 14\.2Privacy and Consent

Speech can reveal identity, location, health, and social relationships\. The use of African Next Voices data must remain consistent with the dataset license, consent model, and access conditions\[[13](https://arxiv.org/html/2607.18912#bib.bib13),[14](https://arxiv.org/html/2607.18912#bib.bib14),[15](https://arxiv.org/html/2607.18912#bib.bib15),[16](https://arxiv.org/html/2607.18912#bib.bib16)\]\. The browser and server were designed not to intentionally persist raw microphone audio beyond transient processing, and the interface tells users that audio is processed for transcription\. This study did not conduct an end\-to\-end audit of retention by every infrastructure component\. A production release should therefore configure server\-side logging to avoid retaining raw audio or sensitive transcripts unless an explicit, consented diagnostic program is active\.

### 14\.3Unequal Error Costs

A single WER does not capture social harm\. Errors in casual dictation differ from errors in medical, legal, financial, or government\-service contexts\. Named entities, numbers, medication terms, and negation can be high\-consequence even when aggregate WER is unchanged\. The current models are research and testing systems, not certified decision\-making tools\. High\-stakes deployment requires domain\-specific testing, calibrated uncertainty, human verification, and a clear refusal or escalation path\.

### 14\.4Language Variety and Representation

Labels such as “Kikuyu,” “Dholuo,” and “Kalenjin” can hide dialect, region, age, gender, and code\-switching variation\. The speaker and recorder counts reported during curation are useful but do not prove balanced representation\. Future dataset cards and model cards should provide subgroup coverage where consent and privacy permit, accompanied by stratified performance and known limitations\.

## 15Limitations

The study has several important limitations\.

1. 1\.No paired external benchmark\.Internal results are not evaluated on the exact PazaBench or another common public test set, so state\-of\-the\-art claims are not supported\.
2. 2\.Repeated held\-out consultation\.Successive champion decisions used the internal test sets; they are not pristine one\-shot evaluations\.
3. 3\.Kalenjin mixed\-source selection\.The historical v1\-v run ranked checkpoints with a validation manifest containing test\-origin rows\. Its validation and clean\-v3 test scores are adaptive diagnostics, not independent generalization estimates\.
4. 4\.Different corpus generations\.Kalenjin clean\-v1, clean\-v2, and clean\-v3 alter references and row membership, so not every apparent gain is attributable solely to learned weights\.
5. 5\.Incomplete Kalenjin metrics\.The v1\-v evaluator archived WER but not CER, limiting error\-type comparison with prior stages\.
6. 6\.No controlled seed study\.Runs are expensive single trajectories; variance across seeds is unknown\.
7. 7\.No tokenizer ablation\.The inherited 13,087\-piece tokenizer is retained, and its effect on target\-language morphology is not isolated\.
8. 8\.No optimizer\-continuous comparison\.Staged\.nemocontinuation is not compared with a matched uninterrupted trainer\-checkpoint resume\.
9. 9\.Limited latency characterization\.Evaluation runtime and one aggregate batched real\-time factor are reported, but interactive production latency, concurrent\-stream throughput, and cold starts require a dedicated benchmark\.
10. 10\.Greedy decoding only\.The report does not compare beam search, shallow fusion, rescoring, or target\-language language models\.
11. 11\.No formal fairness audit\.Recorder and domain summaries exist, but comprehensive demographic subgroup analysis is not yet available\.
12. 12\.Private artifacts and access controls\.Some data and model artifacts are intentionally private, which limits immediate independent reproduction\.

These limitations do not invalidate the observed internal improvements\. They define the scope of the evidence and the experiments needed before stronger claims are made\.

## 16Discussion

### 16\.1What Drove Improvement

The project does not support a single\-cause narrative\. Three factors interact:

1. 1\.a strong multilingual streaming initialization with an architecture already suited to incremental decoding;
2. 2\.a Kenyan Swahili\-adapted initialization that plausibly reduced adaptation distance in the project setting, although its advantage over the raw NVIDIA base was not isolated;
3. 3\.repeated data and evaluation audits that remove supervision artifacts and ensure the tested path matches deployment\.

The learning curves show that continued full\-parameter adaptation remains effective at a small learning rate\. The corpus revisions show that a better metric can also result from a more valid reference\. Scientific reporting must keep these distinct: parameter improvement, label correction, and evaluation\-protocol change are different interventions\.

### 16\.2Why a Streaming Base Matters

An offline encoder\-decoder can be adapted for chunked use, but the resulting engineering does not automatically preserve the behavior measured offline\. Starting with a cache\-aware streaming model allows training, trainer validation, true\-streaming evaluation, and deployment to share the same model family, configured attention context, and decoder family while using different execution paths\. This reduces the gap between a research checkpoint and an interactive product\.

Whisper remains an important general\-purpose baseline\[[11](https://arxiv.org/html/2607.18912#bib.bib11)\], but its standard sequence\-to\-sequence transcription interface and long\-window decoding assumptions differ from the stateful RNN\-T path used here\. The relevant comparison is not that one family is universally superior; it is whether the model’s architectural and deployment assumptions match the required interaction\.

### 16\.3Data Quality Versus Data Quantity

The Kalenjin clean\-v3 corpus is smaller than clean\-v1, yet it provides a cleaner experimental target\. Dropping rows is not automatically beneficial: excessive filtering can erase dialects, rare terms, code\-switching, and hard acoustic conditions\. The key is whether a row is hard but valid or invalid supervision\. Hard valid examples should be preserved and weighted appropriately; invalid examples should be corrected or excluded\.

This distinction motivates future confidence\-based curation with native\-speaker adjudication rather than increasingly aggressive regular\-expression filters\.

### 16\.4Implications for Other Low\-Resource Languages

The transferable lesson is a workflow rather than a single checkpoint\. Begin from a deployment\-compatible multilingual model; choose a related bridge only when its acoustic and linguistic rationale is explicit; version every corpus transformation; validate audio and text jointly; use full validation for checkpoint selection; evaluate through the intended streaming path; and preserve enough provenance to reverse decisions\.

This approach is applicable beyond the three languages studied, but the exact character maps, marker policies, and acceptable variants must be determined language by language\.

## 17Future Work

The immediate research agenda is:

1. 1\.freeze a new speaker\-disjoint one\-shot benchmark for Kikuyu, Dholuo, and Kalenjin;
2. 2\.reproduce at least one public benchmark exactly, including normalization and decoding rules;
3. 3\.add standard CER and no\-space CER to every Kalenjin evaluator output;
4. 4\.conduct native\-speaker adjudication of the most frequent Kalenjin boundary and lexical errors;
5. 5\.compare inherited and target\-aware tokenizers without changing the acoustic initialization;
6. 6\.evaluate beam search, external language\-model fusion, and contextual biasing for names and service terms;
7. 7\.study short\-utterance endpointing with manually verified boundaries;
8. 8\.report multiple random seeds or bootstrap confidence intervals;
9. 9\.benchmark cold start, real\-time factor, first\-token delay, finalization delay, and concurrent sessions;
10. 10\.quantify performance by recorder, scripted status, domain, duration, gender, age, and dialect where ethically and statistically valid;
11. 11\.build model cards and dataset cards with community review, intended\-use boundaries, and incident\-reporting channels;
12. 12\.evaluate whether parameter\-efficient adaptation can approach full fine\-tuning while reducing per\-language storage and compute\.

## 18Conclusion

This work demonstrates an end\-to\-end route from a multilingual streaming ASR foundation model to functioning Kenyan\-language speech systems\. The contribution is not only a pair of promoted champion model artifacts\. It is the combination of data forensics, bridge initialization, controlled full\-parameter adaptation, true\-stream evaluation, explicit checkpoint promotion, isolated deployment, and preservation\.

Under the internal adaptively consulted true\-streaming protocols, the validation\-selected Kikuyu model reaches 42\.9677% WER and 7\.7947% no\-space CER, while the evaluated Dholuo v7 final export reaches 33\.9791% WER, 9\.5855% standard CER, and 8\.1340% no\-space CER under its frozen historicalcslabel policy\. The Kalenjin v1\-v checkpoint produced 68\.74% WER on the filtered clean\-v3 adaptive diagnostic, but mixed\-source checkpoint selection and repeated consultation preclude treating that value as an independent generalization estimate; Kalenjin remains research in progress\. These numbers show substantial learning within the project; they are not presented as externally verified state of the art\.

The broader finding is that low\-resource ASR is as much a problem of valid supervision, evaluation discipline, and deployment fidelity as it is a problem of model scale\. When those pieces are treated as one auditable, versioned system, PyTorch and NeMo make it possible to move from research experiments to interactive speech technology without abandoning scientific caution\.

## Appendix ACorpus Construction and Normalization Specification

This appendix records the operational definition of the corpora used in the experiments\. It is intentionally more detailed than a conventional conference methods section because corpus construction was one of the principal research variables\. The source datasets contain valid difficult speech, transcription conventions, unavailable audio objects, normalization artifacts, and split metadata that cannot safely be treated as interchangeable\.

### A\.1Manifest Contract

Every accepted example is represented as one JSON object per line with at least the following fields:

Listing 2:Canonical NeMo manifest record used by the project\.\{

"audio\_filepath":"/data/\.\.\./audio/train/00001234\.wav",

"duration":7\.42,

"text":"normalizedtargetlanguagetranscription"

\}

Additional provenance fields are retained when available, including source split, source row identifier, recording type, domain, recorder identifier, original filename, and pre\-normalization text\. Training consumes the three canonical fields, while the additional fields support auditing and stratified analysis\.

An accepted row must satisfy all of the following invariants:

1. 1\.the referenced audio object exists and decodes successfully;
2. 2\.duration is finite, positive, and no greater than the maximum configured for the corresponding language and corpus generation;
3. 3\.normalized text is non\-empty and contains no Unicode replacement character;
4. 4\.the text conforms to the language\-specific normalization policy;
5. 5\.the row belongs to exactly one model\-selection role: training, validation, or held\-out test;
6. 6\.the chosen split key does not overlap another role after canonicalization;
7. 7\.the manifest is valid JSONL and can be scanned from beginning to end without a parse error\.

### A\.2Common Audio Pipeline

The common audio path is summarized in Listing[3](https://arxiv.org/html/2607.18912#LST3)\. The implementation uses structured dataset records and audio decoders rather than inferring metadata from filenames alone\.

Listing 3:Language\-independent corpus preparation pseudocode\.max\_duration=duration\_limit\_seconds\[language\]

forsource\_rowinsource\_split:

raw\_text=read\_transcription\(source\_row\)

ifraw\_textismissingorblank:

reject\("empty\_transcription"\)

normalized=normalize\_unicode\_and\_text\(raw\_text,language\)

ifnormalizedisblank:

reject\("empty\_after\_normalization"\)

ifcontains\_unicode\_replacement\_character\(normalized\):

reject\("replacement\_character"\)

audio=resolve\_audio\_object\(source\_row\)

try:

waveform,sample\_rate=decode\(audio\)

exceptDecodeError:

reject\("decode\_error"\)

duration=num\_samples\(waveform\)/sample\_rate

ifduration<=0orduration\>max\_duration:

reject\("invalid\_or\_too\_long"\)

waveform\_16k=resample\_mono\(waveform,sample\_rate,16000\)

output\_path=deterministic\_output\_path\(source\_row\)

write\_audio\(output\_path,waveform\_16k,16000\)

emit\_manifest\_record\(output\_path,duration,normalized,provenance\)

verify\_jsonl\(\)

verify\_audio\_references\(\)

verify\_split\_disjointness\(\)

write\_summary\_and\_checksums\(\)

Audio is materialized into a persistent Modal volume so that training runs do not repeatedly depend on remote Parquet delivery\. This design also isolates model training from transient network failures encountered while reading the source repository\. Remote reads that raised incomplete\-transfer errors were retried; rows that still lacked a decodable object were excluded and counted rather than silently represented by an empty waveform\.

### A\.3Common Text Operations

The normalization function applies a deterministic ordered sequence:

1. 1\.normalize Unicode representation to a stable form;
2. 2\.standardize apostrophe and quotation variants where their linguistic role is known;
3. 3\.lowercase according to the project transcription convention;
4. 4\.normalize whitespace;
5. 5\.remove punctuation that is outside the target transcription inventory;
6. 6\.apply a language\-specific character map only when the mapping is unambiguous;
7. 7\.remove or reject verified annotation markers according to the corpus version;
8. 8\.reject the row if uncertainty cannot be resolved without inventing lexical content\.

The final operation is important\. Normalization is not a license to guess what a damaged symbol was intended to mean\. Rows with uncertain character recovery are rejected so that the model is not trained to imitate a fabricated target\.

### A\.4Kikuyu Orthography Policy

Kikuyu required explicit preservation of the orthographic vowelsĩandũand their uppercase forms before lowercasing\. Source records also contained visually similar or decomposed forms introduced by keyboards, exports, and encoding conversions\. The pipeline canonicalized only verified equivalents, retained apostrophes when linguistically meaningful, and rejected rows containing an unresolved replacement character\.

The quality\-control question was not merely whether a string was valid Unicode\. It was whether two strings represented the same intended Kikuyu transcription\. This distinction prevented broad ASCII folding, which would have erased contrasts that matter to both lexical identity and evaluation\.

### A\.5Dholuo Text Policy

Dholuo uses a predominantly Latin orthography but includes apostrophe\-bearing forms and extensive code\-switching in the source material\. The historical pipeline standardized quotes, spacing, casing, and punctuation while retaining lexical apostrophes\. It did not include a rule for removing the literal tokencs; validation logs confirm that the token remained in references after normalization\.

A fixed but imperfect label policy can support controlled comparisons among checkpoints evaluated on the same split and with the same scoring configuration when that policy is disclosed and applied consistently\. It does not support direct comparison with a corpus or benchmark using a different label or normalization policy\.

### A\.6Kalenjin Cleaning Generations

Kalenjin was deliberately versioned through three cleaning generations instead of overwriting a single manifest\.

##### clean\-v1\.

The first complete corpus applied the common decoding, duration, Unicode, and text\-normalization rules\. It exposed two additional problems during evaluation: non\-lexical annotation markers embedded in otherwise valid text, and short or artifact\-heavy labels that encouraged fluent over\-generation\.

##### clean\-v2\.

A Kalenjin speaker reviewed examples and confirmed that the exact markers\[cs\],\(cs\),\[pause\], and\(pause\)were annotations rather than words to be recognized\. clean\-v2 removes those exact markers while preserving surrounding lexical material\. The policy does not blindly remove all bracketed content because a bracket could contain meaningful text in another corpus\.

##### clean\-v3\.

The third generation derives a stricter corpus from clean\-v2\. It:

1. 1\.retains the four confirmed\-marker removals from clean\-v2;
2. 2\.drops an entire row if its normalized reference contains the literal annotation phraselong pause;
3. 3\.drops an entire row if it contains a digit or a mixed alphanumeric artifact such as20082018orwe5107;
4. 4\.drops a row with fewer than three normalized tokens to reduce the most severe short\-utterance over\-generation cases\.

The digit rule rejects the row; it does not simply delete the offending token\. Deleting a token from an otherwise time\-aligned transcription can make the remaining label falsely claim that audible content never occurred\. Whole\-row rejection sacrifices a small amount of audio but avoids introducing a known source of audio–text misalignment into the accepted set\.

Listing 4:Kalenjin clean\-v3 derivation pseudocode\.forrowinclean\_v2\_manifest:

text=normalize\_whitespace\(row\.text\)

text=remove\_exact\_markers\(

text,\["\[cs\]","\(cs\)","\[pause\]","\(pause\)"\]\)

ifcontains\_literal\_phrase\(text,"longpause"\):

reject\_entire\_row\("long\_pause\_marker"\)

ifcontains\_any\_digit\(text\):

reject\_entire\_row\("digit\_or\_alphanumeric\_artifact"\)

iftoken\_count\(text\)<3:

reject\_entire\_row\("too\_short"\)

emit\(row\.with\_text\(normalize\_whitespace\(text\)\)\)

### A\.7Why Valid Hard Examples Were Not Broadly Removed

The cleaning rules are deliberately narrow\. Accents, dialectal pronunciation, code\-switching, background noise, rare names, and long morphologically complex words can all increase error while remaining valid supervision\. Removing such examples simply because the current model finds them difficult would bias the corpus toward an artificially easy language variety\. The project therefore distinguishes:

- •hard\-valid: difficult speech whose audio and reference plausibly agree;
- •invalid\-supervision: missing audio, corrupt text, verified non\-speech annotations represented as words, unresolved encoding damage, or a reference whose alignment has been invalidated; and
- •scope\-defining experimental exclusion: potentially valid rows, including digit\-bearing or fewer\-than\-three\-token references, excluded specifically to define the clean\-v3 experimental population\.

Only invalid supervision is a routine data\-quality rejection target\. Scope\-defining exclusions apply only to the stated experimental generation and must be reported with every result computed on it\. Speaker adjudication is required when the category is uncertain\.

## Appendix BDetailed Corpus Ledgers

### B\.1Dholuo Full\-Corpus Preparation

The source repository exposed 117,564 training rows and 13,853 validation rows at preparation time\. The deterministic preparation summary is shown in Table[12](https://arxiv.org/html/2607.18912#A2.T12)\.

Table 12:Dholuo preparation ledger\. Hours are decoded accepted audio hours\.ItemTrainValidationRows seen117,56413,853Rows written92,28711,152Hours retained206\.867925\.1899Replacement\-character rejects1,913221Decode\-error rejects413Duration\-over\-limit rejects11,1591,138Empty\-transcription rejects12,1641,339Scripted accepted rows85,39410,271Unscripted accepted rows6,893881Unique recorders66187Rows whose text changed in normalization95,04911,129Raw rows containing digits3,698397Raw rows containing smart quotes4,944548The final Dholuo held\-out evaluation manifest used after the split audit contains 5,480 rows\. Its role is separate from the full validation set used to monitor training\. For v7, the experiment ledger records a best validation WER of 0\.33944 and a final logged validation WER of 0\.33949\. The reported internal\-evaluation WER and CER values apply to the final exported\.nemomodel; they should not be interpreted as measurements of the separately preserved best\-validation trainer checkpoint\.

The source domain distribution is not uniform\. Most accepted scripted rows have no explicit domain label, while the unscripted tail includes agriculture and food, everyday scenarios, financial transactions, named entities, role play, education and technology, healthcare, digital government services, stories, news, and customer care\. This imbalance motivates per\-domain reporting in future work rather than interpreting a single aggregate WER as uniform language coverage\.

### B\.2Kalenjin clean\-v1 Ledger

Table 13:Kalenjin clean\-v1 preparation ledger\.ItemTrainValidationTestRows seen82,37813,8453,315Rows written68,01212,0842,557Hours retained158\.935625\.50045\.6431Replacement\-character rejects4502711Decode\-error rejects39242Duration\-over\-limit rejects12,6211,572629Empty\-transcription rejects902158116Empty\-after\-normalization rejects100Scripted accepted rows58,92711,1302,389Unscripted accepted rows9,085954168Unique recorders3614623The large training rejection count is primarily explained by the fixed 39\.99\-second cap, not by wholesale linguistic exclusion\. The accepted training set retains both scripted and unscripted material and spans everyday scenarios, news and media, healthcare, agriculture and food, education and technology, finance, customer care, role play, extempore stories, named entities, and digital\-government speech\.

### B\.3Kalenjin clean\-v3 Derivation Ledger

Table 14:Kalenjin clean\-v3 derivation from clean\-v2\.The model\-selection validation file is a speaker/source\-audited subset of the derived validation material:

- •training: 64,007 rows, 151\.28 hours;
- •validation\_dev\.json: 8,953 rows, 18\.92 hours;
- •held\-outtest\.json: 2,411 rows, 5\.33 hours\.

The raw derivedvalidation\.jsonstill includes rows whose source role isdev\_test; therefore it must not be used directly for model selection\. The verification procedure reported zero JSON errors, missing audio objects, empty labels, replacement characters, train–validation overlap, train–test overlap, and validation–test overlap for the three role\-specific manifests above\.

### B\.4Kikuyu Curated Corpus Summary

The final Kikuyu continuation series uses the curated approximately 182\-hour training corpus established in the project ledger\. The curation emphasizes canonical Kikuyu orthography and removal of unresolved encoding corruption\. The final continuation series selected checkpoints on the filtered\-v4validation\_full\.json, containing 13,667 utterances \(19\.64 hours\)\. Because multiple historical source and curation generations preceded the final 182\-hour corpus, this paper reports the frozen corpus statistics, manifest roles, and evaluation protocol used by the final model rather than reconstructing counts from experiment names\. Raw ANV audio, speaker metadata, and other source\-controlled materials are not redistributed; access remains subject to the source\-provider terms described in the Data and Artifact Availability statement\.

## Appendix CModel Configuration Ledger

### C\.1Restored Foundation Configuration

The experiments restore the complete NeMo archive and then override only the intended data, optimization, validation, checkpointing, prompt, and streaming\-decoding settings\. The restored model contains the following principal components:

- •24 cache\-aware FastConformer encoder layers;
- •encoder hidden dimension 1024;
- •a 128\-dimensional one\-hot language identifier that is broadcast across encoder time and fused with the acoustic representation;
- •a 13,087\-entry SentencePiece vocabulary inherited from the multilingual model;
- •an RNN\-T prediction network and joint network;
- •prompt\-conditioned language control;
- •approximately 637 million trainable parameters in the restored project configuration;
- •cache\-aware streaming attention with the selected context\[56,13\]\.

The first context number describes the retained left\-context capacity in the NeMo attention configuration and the second controls right look\-ahead\. The notation is a model configuration, not a number of seconds\. The effective temporal behavior depends on the feature hop, subsampling, convolutional context, cache policy, and chunking logic\.

### C\.2Recorded Fine\-Tuning Configuration

The core continuation configuration and the explicitly recorded stage\-specific differences are summarized in Table[6](https://arxiv.org/html/2607.18912#S8.T6)\. The principal selected branches generally used full\-parameter AdamW continuation with a learning rate of5×10−75\\times 10^\{\-7\}, duration\-based training and validation batches, and validation every 1,000 optimizer steps\. Warm\-up and checkpoint\-retention settings were stage\-specific rather than universal; consequently, this appendix does not infer one shared value for every experiment\.

The fixed small learning rate is a conservative continuation choice\. It avoids a large optimizer shock when moving from one language\-adapted checkpoint to the next, but it is not claimed to be globally optimal\. The fixed learning rate was associated with stable incremental improvements across the observed continuation lineages, but these single\-lineage experiments do not establish that it is optimal or that the same behavior will generalize to other datasets or initializations\. Future work should compare decayed schedules and multiple seeds under a fixed compute budget\.

### C\.3Training Objective

For acoustic sequence𝐱\\mathbf\{x\}and target token sequence𝐲\\mathbf\{y\}, RNN\-T marginalizes all monotonic alignmentsπ\\pithat collapse to𝐲\\mathbf\{y\}:

ℒRNNT​\(𝐱,𝐲,𝐪ℓ\)=−log​∑π∈ℬ−1​\(𝐲\)P​\(π∣𝐱,𝐪ℓ\)\.\\mathcal\{L\}\_\{\\mathrm\{RNNT\}\}\(\\mathbf\{x\},\\mathbf\{y\},\\mathbf\{q\}\_\{\\ell\}\)=\-\\log\\sum\_\{\\pi\\in\\mathcal\{B\}^\{\-1\}\(\\mathbf\{y\}\)\}P\(\\pi\\mid\\mathbf\{x\},\\mathbf\{q\}\_\{\\ell\}\)\.\(9\)
For selected language identifierℓ\\ell, the model constructs a one\-hot vector

𝐪ℓ=onehot⁡\(ℓ\)∈ℝ128\.\\mathbf\{q\}\_\{\\ell\}=\\operatorname\{onehot\}\(\\ell\)\\in\\mathbb\{R\}^\{128\}\.\(10\)The vector is broadcast across encoder time, concatenated with the acoustic representation, and passed through the prompt\-fusion projection:

𝐡~tenc=fprompt​\(\[𝐡tenc;𝐪ℓ\]\)\.\\widetilde\{\\mathbf\{h\}\}^\{\\mathrm\{enc\}\}\_\{t\}=f\_\{\\mathrm\{prompt\}\}\\\!\\left\(\[\\mathbf\{h\}^\{\\mathrm\{enc\}\}\_\{t\};\\mathbf\{q\}\_\{\\ell\}\]\\right\)\.\(11\)The prediction network maps non\-blank label history to𝐡upred\\mathbf\{h\}^\{\\mathrm\{pred\}\}\_\{u\}, and the joint network produces logits

𝐳t,u=fjoint​\(𝐡~tenc,𝐡upred\)\.\\mathbf\{z\}\_\{t,u\}=f\_\{\\mathrm\{joint\}\}\(\\widetilde\{\\mathbf\{h\}\}^\{\\mathrm\{enc\}\}\_\{t\},\\mathbf\{h\}^\{\\mathrm\{pred\}\}\_\{u\}\)\.\(12\)FastEmit regularization encourages earlier non\-blank emissions without changing the reference sequence\.

## Appendix DComplete Experiment Registry

This appendix separates the chronological research path from the compact result tables in the main text\. Run names are preserved because they encode source checkpoint, corpus size, learning rate, step budget, and validation mode\.

### D\.1Kikuyu Continuation Series

Table 15:Kikuyu experiment registry\. WER and NS\-CER are percentages on the corresponding adaptively consulted internal evaluation set\.StageInitialization / interventionWERNS\-CERInterpretationv4Early language continuation53\.350510\.7256Established that the Swahili bridge could transfer to Kikuyu\.v6Continued low\-rate full tuning51\.281610\.1190Reduced both boundary and character errors\.v7\-iSame model family and curated corpus50\.82789\.9395Incremental improvement; no architecture change required\.v8\-iiFurther continuation49\.34419\.5613Passed below 50% WER under the internal protocol\.v9Further continuation48\.59269\.3104Character quality continued to improve\.v10Curated approximately 182\-hour path46\.83938\.7815Data curation and continuation jointly improved the system\.v11Same curated path45\.69268\.4489Stable continued learning\.v1250,000\-step continuation from v1144\.69858\.1824Became the live champion before v13\.v1370,000\-step continuation from v1242\.96777\.7947Current preserved Kikuyu champion; best validation WER 0\.41163\.The v13 final validation point was 0\.41244 while an earlier retained checkpoint reached 0\.41163\. This is why the project promotes a validation\-selected checkpoint rather than assuming the final optimizer state is best\. In the Kikuyu v4 filtered experiment, the selected individual checkpoint obtained 53\.3505% WER and 10\.7256% NS\-CER, whereas averaging the top three v4 checkpoints obtained 53\.3887% WER and 10\.7683% NS\-CER under the same filtered full\-test protocol\. The averaged candidate therefore did not improve the selected individual checkpoint; the available evidence does not isolate the cause\. For v13, the project exported the validation\-selected best individual checkpoint, denoted*best1*; this paper does not claim that a multi\-checkpoint v13 average was evaluated\.

### D\.2Dholuo Full\-Data Series

Table 16:Dholuo experiment registry\.StageTraining interventionBest validation WERInterpretationv3\-i20,000 steps from the best earlier bridge\-adapted Dholuo checkpoint on the 206\.87\-hour full training manifest0\.49586First complete full\-data continuation; confirmed the corpus and H200 path\.v4\-i70,000 steps from v3\-i, same corpus and5×10−75\\times 10^\{\-7\}rate0\.38395Large absolute reduction with a smoothly descending validation curve\.v5\-i40,000 steps from v4\-i0\.36139Continued improvement with unchanged optimization\.v6\-i20,000 steps from v5\-i0\.35174Held\-out true\-stream WER 35\.3502%, NS\-CER 8\.3031%\.v7\-i40,000 steps from v6\-i0\.33944Current champion: internal\-evaluation WER 33\.9791%, standard CER 9\.5855%, NS\-CER 8\.1340%\.The v7 final logged validation point was 0\.33949 and the best retained value was 0\.33944\. The held\-out true\-stream evaluation processed 5,480 rows in 222\.45 seconds in the recorded run\. The source checkpoint and all retained evidence were copied into a separate champion directory and mirrored to a private Hugging Face repository with checksums and a model card\.

### D\.3Kalenjin Research Series

Table 17:Kalenjin experiment registry\. Dashes indicate metrics not emitted by that evaluator\. The v1\-v validation and test values are adaptive diagnostics because its selection manifest contained test\-origin rows\.StageLabelsVal\. WERTest WERCERNS\-CERInterpretationv1\-iclean\-v10\.8314785\.78––First complete 20,000\-step baseline from the Swahili bridge\.v1\-iiclean\-v10\.7560778\.024224\.498522\.837840,000\-step continuation; strong relative improvement\.v1\-iiiclean\-v10\.7079373\.200721\.954720\.684670,000\-step continuation; exposed persistent marker and boundary errors\.v1\-iii re\-eval\.clean\-v20\.7079373\.047721\.699820\.4843Same weights, corrected labels; isolates a small label\-policy effect\.v1\-ivclean\-v20\.6825570\.783120\.436619\.414570,000\-step continuation on confirmed marker cleanup\.v1\-vclean\-v30\.6677268\.74––70,000\-step continuation on clean\-v3; mixed\-source selection and adaptive diagnostic test\.The reported diagnostic trend decreases across stages, but corpus revisions and the v1\-v selection defect prevent attributing every delta solely to model learning; the series does not yet justify production status\. The archived v1\-iv evaluator report records conventional CER 20\.4366% and NS\-CER 19\.4145% on 2,557 clean\-v2 test examples\. The clean\-v3 v1\-v adaptive diagnostic contains 2,411 examples \(5\.33 hours\) and completed its streaming pass in 92\.16 seconds\. The corresponding evaluator log did not emit CER or NS\-CER, so those cells are not inferred from WER\.

### D\.4Interpreting Continuation Stages

Two consecutive 20,000\-step jobs are generally not equivalent to one 40,000\-step job\. A restart can reconstruct the optimizer, scheduler, random sampler state, gradient\-scaler state, and data position differently\. It also changes checkpoint\-selection opportunities and may change the source archive itself if the best intermediate model rather than the exact final state is used\. The project therefore treats every continuation as a distinct experiment with explicit initialization, not as an arithmetic addition of steps\.

## Appendix ECheckpoint Selection, Promotion, and Preservation

### E\.1Selection Rule

Checkpoint\-retention depth was configured per run rather than fixed globally\. The selected late\-stage settings are summarized in Table[6](https://arxiv.org/html/2607.18912#S8.T6); earlier exploratory runs sometimes retained fewer candidates\. The canonical release\-selection workflow is:

1. 1\.confirm training reached the requested optimizer\-step budget;
2. 2\.enumerate retained checkpoints and their validation metrics;
3. 3\.select the lowest valid full\-validation WER, not the newest file;
4. 4\.restore the selected checkpoint into the exact model class;
5. 5\.export a standalone\.nemoarchive;
6. 6\.evaluate that archive on the held\-out split through true streaming;
7. 7\.compare it against the incumbent champion using the same label version, context, decoder, and normalization;
8. 8\.promote only if the complete evidence package supports the change\.

Kikuyu v13 followed this canonical workflow\. For Dholuo v7, the final run\.nemoexport was evaluated and promoted; the best\-validation trainer checkpoint was copied into the preservation package as separate evidence\.

### E\.2Why a\.nemoArchive Is the Deployment Unit

A NeMo archive packages model configuration, learned weights, tokenizer artifacts, and other restoration assets required by the model class\. For the live service, the promoted\.nemofile is the principal model artifact\. Training\.ckptfiles are larger because they can also contain optimizer and trainer state needed for resumption\. Evaluation reports, manifests, checksums, and source checkpoints remain valuable for provenance but are not all required merely to load the deployed recognizer\.

### E\.3Target Champion Evidence Contract

For future promotions, the project defines a target immutable champion\-evidence directory containing:

- •the canonicalmodel/<champion\-name\>\.nemo;
- •champion\_manifest\.jsonorartifact\_manifest\.json;
- •SHA\-256 checksums for every preserved artifact;
- •the full internal true\-streaming evaluation report and evaluator configuration;
- •source run identifier, source checkpoint path, W&B run URL, and timestamp;
- •dataset and label\-version identifiers;
- •prompt, context, decoder, and normalization settings;
- •a human\-readable model card with intended use and limitations\.

### E\.4Integrity Verification

For the preserved champion transfers used in the final deployments, the project computed SHA\-256 digests, and the cross\-profile download helpers rejected a\.nemofile whose local digest did not match the expected champion digest\. File size is a useful first check but is not sufficient: two files can have the same size and different content\. The remote repository remains private, and the authentication token is supplied as a server\-side secret rather than embedded in source code or a browser bundle\.

## Appendix FReproducibility Recipes

This appendix records the operational form of the principal jobs rather than only describing them in prose\. The commands are intentionally explicit about the profile, data\-generation identifier, source archive, prompt, and streaming context\. They should be read as templates: run identifiers and timestamped checkpoint directories are immutable experiment inputs and must not be silently replaced by “latest\.”

### F\.1Environment and Secret Boundary

The local machine contains the Modal client and the repository source, but it does not download the multi\-gigabyte checkpoints for routine training\. The Modal application mounts the project source into a container and mounts a persistent volume at/data\. Authentication tokens for Hugging Face and W&B are injected from Modal secrets\. At minimum, a reproducible environment records:

- •source revision or immutable source snapshot;
- •Modal workspace/profile and volume name;
- •container image digest or complete image build declaration;
- •CUDA, PyTorch, NeMo, Python, and tokenizer versions;
- •GPU type and count;
- •training and validation manifest hashes;
- •initialization\-archive hash;
- •every command\-line override;
- •W&B run identifier and output directory\.

The/dataprefix is a container mount point, not part of the Modal volume namespace\. For example, the path/data/checkpoints/xinside a function is listed withmodal volume ls <volume\> /checkpoints/xfrom the local CLI\. Confusing these namespaces produces a misleading “No such file or directory” error even when the object is present\.

### F\.2Recommended Preflight Invariants

The historical launchers checked required paths during job startup, but they did not enforce every invariant below in one pre\-allocation stage\. The operational failures in Appendix[I](https://arxiv.org/html/2607.18912#A9)motivate the following hardened launcher contract for future runs:

1. 1\.training and validation manifests exist and are non\-empty;
2. 2\.all required JSON fields are present and parsable;
3. 3\.sampled audio paths exist beneath the mounted volume;
4. 4\.sampled durations are finite, positive, and within policy;
5. 5\.normalized text is non\-empty and contains no forbidden markers;
6. 6\.the source\.nemoarchive exists and can be restored;
7. 7\.the requested scheduler floor does not exceed the peak learning rate;
8. 8\.the W&B project and run name identify a new, intentional experiment;
9. 9\.no function call for the same run name is already active\.

A hardened preflight should not merely count lines\. It should compute a compact manifest fingerprint comprising row count, duration sum, text\-token count, unique audio\-path count, and SHA\-256 digest\. This catches accidental use of a previous label generation even when filenames such astrain\.jsonare unchanged\.

### F\.3Detached Continuation Training

The following command captures the v1\-v Kalenjin continuation pattern used after the clean\-v3 corpus was created\. The important lifecycle property ismodal run \-\-detach: the remote input survives closure of the local entrypoint and temporary loss of the laptop connection\.

In the commands below, the profile namec\-elois a local CLI alias for the private Modal workspace used in these experiments; reproducing the commands requires an authorized profile with access to equivalent volumes, secrets, and checkpoints\.

Listing 5:Detached full\-parameter continuation on an H200\.MODAL\_PROFILE=c\-eloKALENJIN\_INCLUDE\_PREMIUM\_GPUS=1\\

modalrun\-\-detach\\

training/nemotron\-asr\-kalenjin/modal\_train\.py\\

\-\-actionsmoke\_train\_h200\\

\-\-run\-name\\

kalenjin\_v1\_v\_h200\_from\_v1iv\_full159h\_cleanv3\_lr5e7\_70k\_cleanval\\

\-\-manifest\-run\-namekalenjin\_full\_clean\_v3\\

\-\-train\-manifest\-nametrain\.json\\

\-\-validation\-manifest\-namevalidation\.json\\

\-\-max\-steps70000\\

\-\-learning\-rate5e\-7\\

\-\-scheduler\-min\-lr5e\-7\\

\-\-batch\-duration200\\

\-\-validation\-batch\-duration120\\

\-\-val\-check\-interval1000\\

\-\-warmup\-steps100\\

\-\-save\-top\-k10\\

\-\-target\-langsw\-KE\\

\-\-init\-model\-path\\

"/data/checkpoints/kalenjin\_v1\_iv\_h200\_from\_v1iii\_full159h\_cleanv2\_lr5e7\_70k\_cleanval/kalenjin\_v1\_iv\_h200\_from\_v1iii\_full159h\_cleanv2\_lr5e7\_70k\_cleanval/2026\-06\-29\_21\-55\-52/checkpoints/kalenjin\_v1\_iv\_h200\_from\_v1iii\_full159h\_cleanv2\_lr5e7\_70k\_cleanval\.nemo"

Listing[5](https://arxiv.org/html/2607.18912#LST5)reproduces the historical v1\-v invocation rather than a corrected confirmatory recipe\. Itsvalidation\.jsonargument is a known protocol defect: that manifest containeddev\_test\-origin rows also represented in the clean\-v3 test set\. It must not be reused for future checkpoint selection; a corrected invocation should passvalidation\_dev\.json\. This correction does not retroactively make the reported v1\-v selection or test result independent\.

The action name retains the historical wordsmoke; at this stage it launches a full run and should not be interpreted as a tiny test\. For future maintenance, action names should be migrated to semantic names such astrain\_h200while preserving backward\-compatible aliases in experiment records\.

### F\.4Foreground\-Wait True\-Streaming Evaluation

Evaluation is shorter than training and benefits from a wait action that returns a structured report to the local client\. Thestreaming\_eval\_h100\_waitaction calls the evaluator through\.remote\(\)rather than creating an unowned child with\.spawn\(\)\. The outer command may still use\-\-detach; Modal then owns the application while the entrypoint waits for its remote input\.

Listing 6:True\-streaming internal evaluation with a lifecycle\-safe wait action\.MODAL\_PROFILE=c\-eloKALENJIN\_INCLUDE\_PREMIUM\_GPUS=1\\

modalrun\-\-detach\\

training/nemotron\-asr\-kalenjin/modal\_train\.py\\

\-\-actionstreaming\_eval\_h100\_wait\\

\-\-run\-name\\

kalenjin\_v1\_v\_h200\_from\_v1iv\_full159h\_cleanv3\_lr5e7\_70k\_cleanval\\

\-\-manifest\-run\-namekalenjin\_full\_clean\_v3\\

\-\-splittest\\

\-\-model\-nemo\-path\\

"/data/checkpoints/kalenjin\_v1\_v\_h200\_from\_v1iv\_full159h\_cleanv3\_lr5e7\_70k\_cleanval/kalenjin\_v1\_v\_h200\_from\_v1iv\_full159h\_cleanv3\_lr5e7\_70k\_cleanval/2026\-07\-01\_09\-36\-59/checkpoints/kalenjin\_v1\_v\_h200\_from\_v1iv\_full159h\_cleanv3\_lr5e7\_70k\_cleanval\.nemo"\\

\-\-target\-langsw\-KE\\

\-\-att\-context\-size"\[56,13\]"\\

\-\-batch\-size8\\

\-\-eval\-suffixfull\_cleanv3\_test\_v1v

For the Kalenjin v1\-v evaluation, completion was established by the child function’s terminal status and terminal evaluation log, which recorded row count, duration, WER, elapsed time, and configuration\. The unified report contract proposed below additionally requires model and manifest hashes and explicitly nullable CER fields\.

## Appendix GTrue\-Streaming Evaluation Protocol

### G\.1Why Offline Transcription Is Not a Substitute

An offline ASR evaluation typically presents the complete utterance to the encoder and decodes once\. That method is valuable for comparison but cannot validate a streaming state machine\. The deployed recognizer receives bounded chunks, carries acoustic and decoder state between calls, exposes partial text before the utterance ends, and must finalize without access to arbitrary future frames\. Consequently, the project evaluates the champion candidate with the same cache\-aware mechanism used by the service\.

### G\.2Evaluator Procedure

The recorded evaluators share the streaming operations below, although report serialization varied across experiment stages\. Digest verification was enforced during champion transfer and preservation rather than uniformly inside every historical evaluator\.

For a manifest𝒟=\{\(xi,yi,di\)\}i=1N\\mathcal\{D\}=\\\{\(x\_\{i\},y\_\{i\},d\_\{i\}\)\\\}\_\{i=1\}^\{N\}, the evaluator performs the following operations:

1. 1\.restore the selected\.nemoarchive and, for a preserved champion copy, verify its digest before evaluation;
2. 2\.set the language prompt tosw\-KE;
3. 3\.set the encoder attention context to\[56,13\];
4. 4\.initialize the cache\-aware streaming inferencer and greedy batched RNN\-T decoder;
5. 5\.load each waveform at the expected sampling rate;
6. 6\.partition it into the same bounded chunks used by the NeMo streaming utility;
7. 7\.feed chunks in chronological order while carrying encoder caches and decoder state;
8. 8\.finalize one hypothesis only after the sample is complete;
9. 9\.normalize reference and hypothesis with the frozen evaluation policy;
10. 10\.accumulate edit counts globally rather than averaging per\-utterance ratios;
11. 11\.write aggregate metrics and available per\-example outputs to the stage\-specific report or terminal log\.

The batch is an efficiency device, not permission to mix states\. Each stream owns its cache and is removed from the active buffer when its waveform ends\. Variable\-length batches must therefore preserve sample identity as streams enter and leave the buffer\.

### G\.3Metric Definitions

LetSwS\_\{w\},DwD\_\{w\}, andIwI\_\{w\}be the corpus\-level word substitutions, deletions, and insertions, and letNwN\_\{w\}be the number of words in all normalized references\. The word error rate is

WER=Sw\+Dw\+IwNw\.\\mathrm\{WER\}=\\frac\{S\_\{w\}\+D\_\{w\}\+I\_\{w\}\}\{N\_\{w\}\}\.\(13\)
LetScS\_\{c\},DcD\_\{c\},IcI\_\{c\}, andNcN\_\{c\}denote the analogous character counts\. Conventional character error rate is

CER=Sc\+Dc\+IcNc\.\\mathrm\{CER\}=\\frac\{S\_\{c\}\+D\_\{c\}\+I\_\{c\}\}\{N\_\{c\}\}\.\(14\)
Word\-boundary inconsistency is common in the evaluated languages and can dominate character edits without implying a comparable acoustic failure\. For diagnostic use, spaces are removed after text normalization and before character alignment:

NS​\-​CER=Sc,¬space\+Dc,¬space\+Ic,¬spaceNc,¬space\.\\mathrm\{NS\\mbox\{\-\}CER\}=\\frac\{S\_\{c,\\neg\\mathrm\{space\}\}\+D\_\{c,\\neg\\mathrm\{space\}\}\+I\_\{c,\\neg\\mathrm\{space\}\}\}\{N\_\{c,\\neg\\mathrm\{space\}\}\}\.\(15\)
NS\-CER complements but does not replace WER\. It answers whether the character sequence is approximately correct when token boundaries vary; WER remains the primary lexical metric\. No result should be compared with an external score unless case\-folding, punctuation, marker removal, Unicode normalization, and space treatment are identical\.

### G\.4Latency and Throughput

For total audio durationTaT\_\{a\}and wall\-clock inference timeTiT\_\{i\}, the real\-time factor is

RTF=TiTa,RTFx=TaTi\.\\mathrm\{RTF\}=\\frac\{T\_\{i\}\}\{T\_\{a\}\},\\qquad\\mathrm\{RTFx\}=\\frac\{T\_\{a\}\}\{T\_\{i\}\}\.\(16\)
The reported Kalenjin v1\-v clean\-v3 adaptive diagnostic processed 5\.33 hours in 92\.16 seconds, corresponding to an aggregate RTF of approximately 0\.0048, or about 208 times real time, for that batched H100 pass\. This is a throughput measurement, not an end\-user latency measurement\. A complete product\-level latency characterization would additionally require first\-token latency, partial\-update interval, endpointing delay, finalization delay, GPU cold start, network transport, and concurrent\-stream behavior; those measurements were not collected in this study\.

### G\.5Proposed Unified Evaluation Report Contract

Historical evaluators archived stage\-relevant metrics, but their schemas were not uniform and not every report included hashes or both CER variants\. For future frozen evaluations, we define the following minimum schema:

Listing 7:Proposed minimum schema for an immutable evaluation report\.\{

"report\_schema":"celo\.asr\.eval\.v1",

"language":"kalenjin",

"split":"test",

"label\_version":"clean\_v3",

"manifest\_sha256":"\.\.\.",

"model\_sha256":"\.\.\.",

"prompt":"sw\-KE",

"attention\_context":\[56,13\],

"decoder":"greedy\_batched\_rnnt",

"streaming":true,

"rows":2411,

"audio\_hours":5\.33,

"wer":0\.6874,

"cer":null,

"no\_space\_cer":null,

"elapsed\_seconds":92\.16,

"normalization\_policy":"kalenjin\_eval\_clean\_v3"

\}

This schema is a reproducibility recommendation introduced by this paper; it is not a claim that every historical report already conformed to it\. The v1\-v evaluator emitted WER but not CER; the null fields explicitly mark those metrics as unreported rather than zero, and this paper does not reconstruct them from incomplete logs\.

## Appendix HError Analysis Protocol

Aggregate WER identifies whether a system improved, but not what should be changed next\. The project therefore combines edit\-distance decomposition, transcript inspection, duration and domain stratification, and native\-speaker review\.

### H\.1Taxonomy

Table 18:Operational ASR error taxonomy used in this work\.CategoryObservable signatureLikely responseAcoustic confusionPhonetically nearby substitutions; errors grow with noise, channel distortion, or fast speechImprove acoustic diversity, inspect waveform quality, and stratify by recorder/channel\.Lexical or orthographic confusionStable sounds but inconsistent spelling, apostrophes, diacritics, or word formsFreeze a language\-specific text policy with native\-speaker review\.Boundary errorCorrect\-looking character stream split or joined into different wordsReport WER with CER and NS\-CER; avoid destructive whitespace normalization\.Code\-switch errorBorrowed English or Swahili words are omitted, transliterated, or phonetically respelledPreserve genuine spoken code\-switching; remove only annotation wrappers such as\[cs\]\.Non\-speech label learningOutput includescs,pause, orlong pausealthough those tokens were not spokenRemove confirmed annotation markers in future cleaned label generations; retain a historical exception only when the policy is frozen, disclosed, and applied consistently\.Digit or identifier artifactDense digit strings or forms such aswe5107create implausible lexical targetsDrop the full row when the intended spoken expansion cannot be recovered reliably\.Short\-utterance over\-generationHypothesis is much longer than a one\- or two\-word referenceAudit truncation and labels; add short examples only when trusted; test endpointing and insertion behavior\.Deletion dominanceHypotheses are consistently shorter than referencesInspect low\-volume speech, aggressive endpointing, duration truncation, and insufficient target\-language adaptation\.Insertion dominanceExtra fluent\-looking text appears after the reference contentInspect RNN\-T blank behavior, endpointing, non\-speech tails, and mislabeled short clips\.Domain mismatchError clusters in medicine, agriculture, names, or public\-service terminologyAdd reviewed in\-domain data or contextual biasing without contaminating the held\-out split\.Prompt or language driftBlank output or text from an unintended languageVerify the prompt route, initialization archive, tokenizer, and bridge lineage\.Streaming\-state defectOffline result is plausible but streaming result repeats, drops, or reorders textTest cache ownership, state resets, chunk order, and end\-of\-stream flushing\.
### H\.2Edit Decomposition and Stratification

Where evaluator outputs retained edit counts and metadata, project analysis decomposed errors and stratified them by available attributes\. A uniform future analysis should preserve insertion, deletion, and substitution counts separately and support the following slices:

- •reference word count and audio duration;
- •scripted versus unscripted type;
- •domain and recorder identity where metadata permits;
- •presence of code\-switched lexical material;
- •duration quantile and transcript\-length quantile;
- •normalized character inventory;
- •hypothesis/reference length ratio\.

The highest\-WER examples are useful but insufficient because long utterances naturally contain more opportunities for error\. The project review samples combined high\-error examples, short\-utterance failures, and examples selected for linguistic review\. A future structured review campaign should additionally include random and domain\-balanced examples so that analysis is not driven only by worst cases\.

### H\.3Targeted Native\-Speaker Consultation and Proposed Review Protocol

Targeted native\-speaker consultation was conducted during development, but it was not a completed multi\-annotator structured campaign\. For Kalenjin, speaker review confirmed that lexical material around code switches was valid while\[cs\],\(cs\),\[pause\], and\(pause\)were annotation markers\. This finding directly motivated clean\-v2\.

For future review rounds, we propose a structured annotation task in which each selected row includes the audio, raw transcript, normalized transcript, model hypothesis, and the following response fields:

1. 1\.Is the audio intelligible and primarily in the target language?
2. 2\.Does the reference faithfully represent the spoken content?
3. 3\.Is the normalization linguistically acceptable?
4. 4\.Is apparent code\-switching genuine speech or an annotation instruction?
5. 5\.Are word boundaries and apostrophes acceptable variants?
6. 6\.Should the row be retained, corrected, quarantined, or dropped?
7. 7\.Which error category best explains the model output?

Clean\-v3 then dropped the entire row when the normalized reference contained the literal phraselong pause, any digit \(including digit\-only and alphanumeric forms\), or fewer than three normalized tokens\. This was a deliberately conservative filter, not a claim that every number\-bearing utterance is linguistically invalid\. The distinction matters: deleting onlywe5107would leave a grammatically broken target paired with unchanged audio, whereas dropping the complete row avoids creating new label noise\.

### H\.4Short\-Utterance Over\-Generation Study

Short references receive a dedicated analysis because one insertion can produce a large WER and because RNN\-T endpointing errors are especially visible in this regime\. Define the length ratio

ri=max⁡\(1,\|y^i\|w\)max⁡\(1,\|yi\|w\),r\_\{i\}=\\frac\{\\max\(1,\|\\hat\{y\}\_\{i\}\|\_\{w\}\)\}\{\\max\(1,\|y\_\{i\}\|\_\{w\}\)\},\(17\)
where\|⋅\|w\|\\cdot\|\_\{w\}counts words\. Clean\-v3 excluded normalized references shorter than three tokens after over\-generation was observed in this regime\. For subsequent error audits, we propose flagging rows with\|yi\|w≤4\|y\_\{i\}\|\_\{w\}\\leq 4andri≥2r\_\{i\}\\geq 2for manual review; this threshold is an analysis rule, not an additional claim about the clean\-v3 corpus filter\. The response is not to duplicate every short clip\. First determine whether the audio contains untranscribed speech, a long non\-speech tail, clipping, or a faulty reference\. Only after data defects are excluded should decoding, blank calibration, chunk finalization, or targeted short\-utterance sampling be changed\.

## Appendix IOperational Failure and Recovery Ledger

Infrastructure failures affected reproducibility and sometimes resembled model failures\. TableLABEL:tab:failure\-ledgerrecords the principal incidents encountered during this project and the corrections adopted or recommended afterward\.

Table 19:Failure modes, diagnoses, and durable corrections\.SymptomDiagnosisDurable correctionHugging FaceIncompleteReadLarge Parquet/audio object transfer was interruptedUse resumable library downloads and bounded retries; verify final object size and audio decoding\.Missing or undecodable waveformSource row referenced an absent or malformed objectLog the source row and filename, incrementdecode\_error, skip deterministically, and preserve counts in the corpus ledger\.Replacement character in textEarlier decoding introduced Unicode U\+FFFD, making the intended grapheme unknowableDrop the row rather than guessing the original character\.Tar\-shard key or manifest mismatchArchive member names and manifest paths were produced by inconsistent transformationsBuild both from one structured record and verify every manifest key against the archive index before training\.Scheduler configuration errorMinimum learning rate was incompatible with the requested peak or inherited schedulerValidate scheduler invariants before GPU allocation and log the resolved optimizer configuration\.GPU preemption or remote timeoutCloud capacity or client connection ended while the job was activeUse persistent volumes, regular checkpoints, detached jobs, and resumable run lineage\.Long checkpoint\-save stallsMulti\-gigabyte trainer checkpoints and NeMo exports blocked shutdown and validation completionTreat saves as first\-class timed phases; retain only policy\-required checkpoints and allow sufficient function timeout/grace period\.“Runner shutting down too long” after successModal cleanup exceeded its grace period after the final model and log were already committedJudge success from training termination and durable artifact verification; record cleanup anomaly separately\.Child call immediatelyCancelledA local Modal entrypoint called\.spawn\(\)and exited, causing the unowned child input to be cancelledUsemodal run \-\-detachfor long jobs and a wait action using\.remote\(\)when the entrypoint must own the result\.LocalDeadline exceededcancelled a healthy runA foreground\.remote\(\)call remained coupled to a transient laptop/network connectionPrefer detached application ownership for multi\-hour training; do not interrupt the client after submission\.Shell displaysquote\>The command contains an unmatched single or double quotePress Ctrl\-C, reconstruct the command with one balanced quoted path, and use line continuations with no trailing characters after the backslash\.Volume CLI says path absentContainer path included the mount prefix/data, but volume browsing starts at the volume rootRemove/datawhen usingmodal volume ls; retain it inside functions\.Blank or wrong\-language hypothesesRaw multilingual initialization and prompt route were not sufficiently adaptedEstablish a controlled bridge baseline; verify restored tokenizer, prompt, and checkpoint lineage\.Kikuyu v4 checkpoint average does not improveThe top\-three v4 average scored 53\.3887% WER and 10\.7683% NS\-CER versus 53\.3505% and 10\.7256% for the selected individual checkpoint; the available evidence does not isolate the causeTreat averaged weights as a separate candidate and promote them only after measured validation and true\-streaming evaluation\.The failure ledger produced the following operating policy for subsequent runs\. First, a successful optimizer trajectory is not considered complete until the required archive and evaluation evidence are durable; the strengthened promotion contract also requires hashes\. Second, a cloud platform status is interpreted alongside the call graph: the local entrypoint and GPU child are distinct nodes\. Third, operational retries should not overwrite an existing run directory; retries receive an explicit attempt identifier or resume from a verified checkpoint\.

## Appendix JDeployment Architecture and Security Boundary

### J\.1Isolated Language Services

The two deployed champions in this study, Kikuyu and Dholuo, run as independent Modal applications and volumes\. This prevents a Dholuo deployment from replacing Kikuyu weights or changing its endpoint during testing\. Kalenjin remains a research candidate and is not represented as a live champion service\. The browser\-facing language selector chooses a server\-provided configuration; it does not receive a model path, Hugging Face token, or Modal secret\. The implemented configuration, direct streaming path, and trust boundary are summarized in Figure[2](https://arxiv.org/html/2607.18912#S12.F2)\.

### J\.2What Authentication Does and Does Not Protect

Route authentication prevents anonymous access to the application and configuration endpoint\. It does not make a WebSocket URL secret: an authenticated user can inspect any network request their browser makes\. Protection against unauthorized reuse therefore requires server\-side enforcement at the ASR ingress, not obscurity in the JavaScript bundle\. The evaluated prototype validates the Supabase session on protected application and configuration routes, but that route\-level check does not authorize the subsequent direct WebSocket hop\. A hardened release should validate a short\-lived signed token or server\-issued session credential when opening a stream, then enforce account and IP policies\. This stream\-ingress token control was not implemented or evaluated in the present study\.

Recommended controls include:

- •verify the Supabase session on every protected server route;
- •mint short\-lived, audience\-bound stream tokens rather than exposing reusable service credentials;
- •enforce allowed origins as a secondary browser control, never as the sole authorization mechanism;
- •rate\-limit stream creation per account and IP;
- •meter audio seconds, concurrent streams, and request bursts server\-side;
- •cap session duration, utterance duration, and idle time;
- •reject oversized or malformed frames before GPU processing;
- •use TLS/WSS only and avoid sensitive query strings;
- •log account, request identifier, duration, status, and aggregate usage without retaining raw audio by default;
- •rotate secrets, separate development and production projects, and alert on abnormal use;
- •keep private checkpoints in access\-controlled volumes and private Hub repositories\.

### J\.3Model Exfiltration Risk

Normal inference does not transmit the\.nemoarchive to the browser; only audio, text hypotheses, and protocol metadata cross the network\. An attacker who reuses an unprotected inference endpoint can consume compute or query the model, but cannot directly download the checkpoint unless the storage or application exposes a file\-serving path\. Model extraction through extensive black\-box queries remains a broader research risk\. Authentication was implemented at the application and configuration\-route layer; metering, anomaly detection, stream\-token enforcement, legal controls, and extraction\-specific output controls remain recommended hardening measures rather than evaluated protections in this study\.

## Appendix KArtifact Provenance and Preservation

The champion package separates the deployment unit from its evidence\. This makes it possible to copy only the\.nemoarchive to a serving profile while retaining a complete preservation mirror elsewhere\.

### K\.1Artifact Manifest

Listing 8:Illustrative champion artifact manifest\.\{

"schema":"celo\.asr\.champion\.v1",

"language":"dholuo",

"model\_family":"nemotron\-3\.5\-asr\-streaming\-0\.6b",

"champion":"dholuo\_v7\_i\_final\_export",

"evaluated\_source\_nemo":"\.\.\./checkpoints/dholuo\_v7\_i\_h200\_from\_v6i\_full207h\_lr5e7\_long40k\_fullval\.nemo",

"preserved\_best\_validation\_checkpoint":"\.\.\.val\_wer=0\.3394\-epoch=37\.ckpt",

"source\_run":"2026\-06\-29\_06\-10\-46",

"source\_checkpoint":"\.\.\.val\_wer=0\.3394\.\.\.ckpt",

"nemo\_path":"model/dholuo\_v7\_champion\.nemo",

"nemo\_sha256":"\.\.\.",

"train\_labels":"dholuo\_full\_clean\_v1",

"test\_labels":"dholuo\_full\_clean\_v1",

"prompt":"sw\-KE",

"attention\_context":\[56,13\],

"best\_validation\_wer":0\.33944,

"evaluated\_export\_final\_validation\_wer":0\.33949,

"test\_wer":0\.339791,

"test\_cer":0\.095855,

"test\_no\_space\_cer":0\.081340,

"test\_rows":5480,

"private\_hub\_repo":"gateremark/dholuo\-nemotron\-3\.5\-asr\-v1",

"metric\_provenance":"Testmetricsapplytoevaluated\_source\_nemo;thebest\-validationcheckpointwaspreservedseparately\."

\}

The manifest itself is hashed, and the checksum file is generated after the directory is frozen\. When restoring into another Modal profile, the download helper computes the local\.nemoSHA\-256 digest and rejects a mismatch before placing the archive in the serving path\. The current helpers do not pin and independently verify a Hub commit revision, and the serving applications were not evaluated for startup digest attestation; both remain useful hardening steps\.

### K\.2Preservation Tiers

Three tiers balance recovery value against storage cost:

1. 1\.serving tier: canonical\.nemo, minimal model card, and digest;
2. 2\.champion evidence tier: serving files plus evaluation outputs, manifest, resolved configuration, and provenance;
3. 3\.research resumption tier: champion evidence plus selected trainer checkpoints and optimizer state needed to continue training\.

The Dholuo private repository is larger than the minimal Kikuyu mirror because it includes evaluation evidence and source checkpoints\. Both can run inference from the canonical\.nemo; the additional files improve auditability and resumption, not recognition accuracy\.

## Appendix LResponsible Development, Data Governance, and Release

Low\-resource language technology involves communities whose speech may be identifiable and whose linguistic conventions are not fully represented by standard tokenizers or externally imposed normalization\. The project therefore treats corpus access as permission to conduct the configured research, not as unrestricted permission to redistribute recordings, speaker metadata, or derived examples\.

Redistribution of raw audio, speaker metadata, normalized manifests, and derived checkpoints is governed by the applicable source\-dataset and base\-model terms\. This work therefore does not redistribute source\-controlled audio or speaker metadata\. Reproducibility is instead supported through processing scripts, checksums, aggregate corpus ledgers, source\-row identifiers, resolved experiment configurations, and reconstruction instructions for authorized users\.

The intended initial use is assisted transcription and controlled evaluation for Kikuyu and Dholuo speech\. The systems should not be represented as universally accurate across dialects, regions, age groups, recording environments, or specialized domains\. They are not suitable as the sole basis for legal, medical, financial, educational\-assessment, or surveillance decisions\. Users should be informed that transcripts can contain substitutions, omissions, and insertions, and consequential use requires human verification\.

Kalenjin is explicitly labeled research\-in\-progress because its aggregate WER remains high and dialect coverage requires further characterization\. Publishing the intermediate result is scientifically useful; deploying it without that qualification would be misleading\.

## Appendix MExtended Limitations and Threats to Validity

### M\.1Internal Validity

The continuation series changes both weights and, in some stages, corpus generations\. Improvements between clean\-v1 and clean\-v2 therefore combine further optimization with revised supervision unless the same checkpoint is re\-evaluated on both label sets\. The Kalenjin v1\-iii clean\-v1/clean\-v2 re\-evaluation is included specifically to estimate the label\-only component, but equivalent controls were not available for every transition\.

Random seeds, sample order, GPU kernels, and resumed optimizer state are not fully replicated across multiple independent runs\. Reported deltas are therefore point estimates from an engineering lineage, not confidence intervals over stochastic retraining\. Future confirmatory work should rerun the final recipe with multiple seeds and report paired bootstrap intervals for held\-out error rates\.

### M\.2Construct Validity

WER penalizes acceptable word\-boundary variants and does not directly measure meaning preservation, named\-entity accuracy, or user\-perceived utility\. CER and NS\-CER add complementary views but can make a semantically important one\-character error appear small\. The project therefore avoids converting WER into an “accuracy” percentage and supplements metrics with native\-speaker review and live testing\.

The test manifests were held out from gradient updates, but repeated milestone evaluation informed subsequent decisions\. This creates adaptive pressure even without direct training on test audio\. A final publication claim should be confirmed on a newly frozen external or untouched set whose labels were not inspected during development\.

### M\.3External Validity

The corpora are Kenyan collections and may not cover every regional variety of Kikuyu, Dholuo, or Kalenjin\. Recorder and domain counts show useful diversity, but coverage is not a demographic representativeness guarantee\. Performance on clean single\-speaker clips does not imply equal performance in meetings, telephony, broadcast audio, overlapping speech, music, or distant microphones\.

The Swahili bridge is a successful practical choice in this project, not evidence that Swahili is always the best bridge for every African language\. Controlled comparison with the raw NVIDIA base, other regional checkpoints, self\-supervised encoders, and matched\-compute alternatives remains necessary\.

### M\.4Comparison Validity

Public PazaBench scores\[[3](https://arxiv.org/html/2607.18912#bib.bib3)\]and the internal scores in this paper do not share a test set or necessarily share normalization and decoding\. It is valid to use public results as context; it is not valid to order the systems in one leaderboard and claim state of the art without reproducing the same benchmark protocol\. Likewise, the strong batched H100 RTFx is not directly comparable with browser\-to\-server latency or an offline model measured on different hardware\.

## Appendix NProposed Confirmatory Evaluation Protocol

The engineering study supports a stronger follow\-up experiment with a preregistered decision rule:

1. 1\.freeze one final normalization policy per language;
2. 2\.construct an untouched, speaker\-disjoint external test set with documented dialect and domain coverage;
3. 3\.obtain at least two independent native\-speaker reviews for a stratified label sample;
4. 4\.compare the raw NVIDIA base, Swahili bridge, final language model, Whisper\[[11](https://arxiv.org/html/2607.18912#bib.bib11)\], and public Paza baselines\[[3](https://arxiv.org/html/2607.18912#bib.bib3)\]on the same audio and normalization;
5. 5\.evaluate both offline and true\-streaming modes where the architecture permits;
6. 6\.report WER, CER, NS\-CER, insertion/deletion/substitution counts, RTF, first\-token latency, finalization latency, and memory;
7. 7\.compute paired bootstrap confidence intervals and test the prespecified primary contrast;
8. 8\.publish the evaluator, manifest hashes, model revisions, and error\-analysis protocol\.

This protocol defines the next stage of benchmark\-comparable evaluation, including matched test conditions, native\-speaker review, confidence intervals, and offline and streaming measurements\. It would also clarify whether the remaining Kalenjin error is primarily acoustic, orthographic, dialectal, or a consequence of initialization and decoder vocabulary\.

## Data and Artifact Availability

The Kikuyu and Dholuo champion checkpoints are preserved in access\-controlled Modal volumes and private Hugging Face repositories\. At the time of publication, the model weights and production deployment artifacts are not publicly distributed\.

The training and evaluation code is maintained by C\-elo Labs\. Requests for research access may be directed to the corresponding author and will be considered subject to the applicable source\-dataset and base\-model licenses, security review, and documentation readiness\.

Raw ANV audio, speaker metadata, and other source\-controlled materials are not redistributed by this work\. Access to the original datasets must be obtained from the dataset provider under its applicable access and licensing terms\.

## Author Contributions

Mark Gatere conceived the project, designed and implemented the data\-processing, training, evaluation, preservation, and deployment pipelines, conducted the experiments, analyzed the results, and drafted the manuscript\.

## Ethics Statement

This work develops speech\-recognition systems for languages with limited representation in mainstream voice technology\. The potential benefit is improved access to digital services and language technology; the risks include transcription errors, uneven performance across speakers, unauthorized voice processing, surveillance misuse, and release of derived artifacts beyond source permissions\. The systems are evaluated as assistive recognizers, not as identity, intent, or truth detectors\.

## Acknowledgments

The author thanks the creators and maintainers of NVIDIA NeMo and Nemotron 3\.5 ASR, Tony Kipkemboi for the public Kenyan Swahili bridge checkpoint, the African Next Voices contributors and dataset maintainers, and the native speakers who reviewed language\-specific transcript policies\. The author thanks Eammon Kiprotich, Emmanuel Mwega and Zachary Odhiambo for native\-speaker review, linguistic feedback, and assistance in validating transcription and text\-normalization decisions\.

No external monetary research funding was received\. Modal provided in\-kind startup compute credits that supported GPU\-based model fine\-tuning, evaluation, checkpoint preservation, and inference deployment\.

## References

- \[1\]NVIDIA, “Nemotron 3\.5 ASR,” Hugging Face model card fornvidia/nemotron\-3\.5\-asr\-streaming\-0\.6b, 2026\. \[Online\]\. Available:[https://huggingface\.co/nvidia/nemotron\-3\.5\-asr\-streaming\-0\.6b](https://huggingface.co/nvidia/nemotron-3.5-asr-streaming-0.6b)\. Accessed: Jul\. 18, 2026\.
- \[2\]O\. Kuchaiev et al\., “NeMo: A toolkit for building AI applications using neural modules,”*arXiv preprint arXiv:1909\.09577*, 2019\. \[Online\]\. Available:[https://arxiv\.org/abs/1909\.09577](https://arxiv.org/abs/1909.09577)
- \[3\]M\. Muchai, K\. Chege, N\. Mumero, and S\. Nyairo, “Paza: Introducing automatic speech recognition benchmarks and models for low resource languages,” Microsoft Research Blog, Feb\. 4, 2026\. \[Online\]\. Available:[Microsoft Research Paza release](https://www.microsoft.com/en-us/research/blog/paza-introducing-automatic-speech-recognition-benchmarks-and-models-for-low-resource-languages/)\. Accessed: Jul\. 20, 2026\.
- \[4\]D\. Rekesh et al\., “Fast Conformer with linearly scalable attention for efficient speech recognition,” in*Proc\. IEEE Automatic Speech Recognition and Understanding Workshop \(ASRU\)*, 2023\. \[Online\]\. Available:[https://arxiv\.org/abs/2305\.05084](https://arxiv.org/abs/2305.05084)
- \[5\]V\. Noroozi et al\., “Stateful Conformer with cache\-based inference for streaming automatic speech recognition,”*arXiv preprint arXiv:2312\.17279*, 2023\. \[Online\]\. Available:[https://arxiv\.org/abs/2312\.17279](https://arxiv.org/abs/2312.17279)
- \[6\]A\. Gulati et al\., “Conformer: Convolution\-augmented Transformer for speech recognition,” in*Proc\. Interspeech*, pp\. 5036–5040, 2020\. \[Online\]\. Available:[https://www\.isca\-archive\.org/interspeech\_2020/gulati20\_interspeech\.html](https://www.isca-archive.org/interspeech_2020/gulati20_interspeech.html)
- \[7\]A\. Graves, “Sequence transduction with recurrent neural networks,”*arXiv preprint arXiv:1211\.3711*, 2012\. \[Online\]\. Available:[https://arxiv\.org/abs/1211\.3711](https://arxiv.org/abs/1211.3711)
- \[8\]J\. Yu et al\., “FastEmit: Low\-latency streaming ASR with sequence\-level emission regularization,”*arXiv preprint arXiv:2010\.11148*, 2020\. \[Online\]\. Available:[https://arxiv\.org/abs/2010\.11148](https://arxiv.org/abs/2010.11148)
- \[9\]T\. Kudo and J\. Richardson, “SentencePiece: A simple and language independent subword tokenizer and detokenizer for neural text processing,” in*Proc\. 2018 Conf\. Empirical Methods in Natural Language Processing: System Demonstrations*, pp\. 66–71, 2018\. \[Online\]\. Available:[https://aclanthology\.org/D18\-2012/](https://aclanthology.org/D18-2012/)
- \[10\]D\. S\. Park et al\., “SpecAugment: A simple data augmentation method for automatic speech recognition,” in*Proc\. Interspeech*, pp\. 2613–2617, 2019\. \[Online\]\. Available:[https://www\.isca\-archive\.org/interspeech\_2019/park19e\_interspeech\.html](https://www.isca-archive.org/interspeech_2019/park19e_interspeech.html)
- \[11\]A\. Radford et al\., “Robust speech recognition via large\-scale weak supervision,” in*Proc\. 40th Int\. Conf\. Machine Learning*, ser\. Proc\. Mach\. Learn\. Res\., vol\. 202, pp\. 28492–28518, 2023\. \[Online\]\. Available:[https://proceedings\.mlr\.press/v202/radford23a\.html](https://proceedings.mlr.press/v202/radford23a.html)
- \[12\]T\. Kipkemboi, “Nemotron 3\.5 Swahili streaming ASR,” Hugging Face model card, 2026\. \[Online\]\. Available:[https://huggingface\.co/Tonykip/nemotron\-3\.5\-swahili\-streaming\-asr](https://huggingface.co/Tonykip/nemotron-3.5-swahili-streaming-asr)\. Accessed: Jul\. 18, 2026\.
- \[13\]L\. Wanzare et al\., “AfriVoices\-KE: A multilingual speech dataset for Kenyan languages,”*arXiv preprint arXiv:2604\.08448*, 2026\. \[Online\]\. Available:[https://arxiv\.org/abs/2604\.08448](https://arxiv.org/abs/2604.08448)
- \[14\]African Next Voices, “Kikuyu,” Hugging Face dataset repository\. \[Online\]\. Available:[https://huggingface\.co/datasets/Anv\-ke/Kikuyu](https://huggingface.co/datasets/Anv-ke/Kikuyu)\. Accessed: Jul\. 18, 2026\.
- \[15\]African Next Voices, “Dholuo,” Hugging Face dataset repository\. \[Online\]\. Available:[https://huggingface\.co/datasets/Anv\-ke/Dholuo](https://huggingface.co/datasets/Anv-ke/Dholuo)\. Accessed: Jul\. 18, 2026\.
- \[16\]African Next Voices, “Kalenjin,” Hugging Face dataset repository\. \[Online\]\. Available:[https://huggingface\.co/datasets/Anv\-ke/Kalenjin](https://huggingface.co/datasets/Anv-ke/Kalenjin)\. Accessed: Jul\. 18, 2026\.
- \[17\]S\. Ritchie, Y\.\-C\. Cheng, M\. Chen, R\. Mathews, D\. van Esch, B\. Li, and K\. C\. Sim, “Large vocabulary speech recognition for languages of Africa: Multilingual modeling and self\-supervised learning,”*arXiv preprint arXiv:2208\.03067*, 2022\. \[Online\]\. Available:[https://arxiv\.org/abs/2208\.03067](https://arxiv.org/abs/2208.03067)
- \[18\]A\. Nahabwe, S\. Kagumire, D\. Musinguzi, B\. Beijuka, J\. M\. Kyagaba, P\. Nabende, A\. Katumba, and J\. Nakatumba\-Nabende, “Benchmarking automatic speech recognition models for African languages,” in*DLI 2025 Research Track*, ser\. Proc\. Mach\. Learn\. Res\., vol\. 302, pp\. 1–19, 2026\. \[Online\]\. Available:[https://proceedings\.mlr\.press/v302/nahabwe26a\.html](https://proceedings.mlr.press/v302/nahabwe26a.html)

Similar Articles

nvidia/nemotron-3.5-asr-streaming-0.6b

Hugging Face Models Trending

NVIDIA releases Nemotron 3.5 ASR, a 600M parameter multilingual streaming speech recognition model supporting 40 language-locales with a Cache-Aware FastConformer-RNNT architecture for low-latency transcription. The model supports configurable chunk sizes and is ready for commercial use under the OpenMDW-1.1 license.

@kwindla: https://x.com/kwindla/status/2062544580105359686

X AI KOLs Timeline

NVIDIA released Nemotron 3.5 ASR, an open-source multilingual speech-to-text model with the lowest latency tested, available in multilingual and English-only variants, ideal for voice agents and self-hosted deployments.