Automatic Speech Recognition
NeMo
Safetensors
English
parakeet
whisper
qwen3
ctranslate2
text-generation
air-traffic-control
atc
singapore
military
Instructions to use aether-raid/astra-atc-models with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- NeMo
How to use aether-raid/astra-atc-models with NeMo:
import nemo.collections.asr as nemo_asr asr_model = nemo_asr.models.ASRModel.from_pretrained("aether-raid/astra-atc-models") transcriptions = asr_model.transcribe(["file.wav"]) - Notebooks
- Google Colab
- Kaggle
| language: | |
| - en | |
| license: other | |
| tags: | |
| - nemo | |
| - parakeet | |
| - tdt | |
| - automatic-speech-recognition | |
| - air-traffic-control | |
| - atc | |
| - singapore | |
| - military | |
| base_model: nvidia/parakeet-tdt-0.6b-v2 | |
| pipeline_tag: automatic-speech-recognition | |
| metrics: | |
| - wer | |
| model-index: | |
| - name: parakeet-tdt-0.6b-v2-atc-singapore | |
| results: | |
| - task: | |
| type: automatic-speech-recognition | |
| metrics: | |
| - name: Validation WER | |
| type: wer | |
| value: 0.72 | |
| # Parakeet-TDT 0.6B v2 - Singapore Military ATC | |
| Fine-tuned NVIDIA Parakeet-TDT 0.6B v2 for Singapore Air Force air traffic control speech recognition. | |
| ## Performance | |
| | Checkpoint | Validation WER | Notes | | |
| |------------|----------------|-------| | |
| | `model.ckpt` | **0.72%** | Best checkpoint from epoch 76 | | |
| | `epoch=100-val_wer=0.0073-last.ckpt` | 0.73% | Final checkpoint, not published here | | |
| ## Model Details | |
| | Key | Value | | |
| |-----|-------| | |
| | Base model | `nvidia/parakeet-tdt-0.6b-v2` | | |
| | Framework | NeMo | | |
| | Model class | `EncDecRNNTBPEModel` | | |
| | Format | Raw `.ckpt` checkpoint + tokenizer artifacts | | |
| | Checkpoint size | 7.0 GB | | |
| | Domain | Singapore military ATC (Tengah WSAT, Paya Lebar WSAP) | | |
| | Training data | Clean originals plus mild ATC radio, speed, and stress augmentations | | |
| ## Included Files | |
| - `model.ckpt` - best fine-tuned checkpoint | |
| - `artifacts/705f11d22dc04b169effc35ce5cd1361_tokenizer.model` | |
| - `artifacts/a4715c7f6b2d4c2bb709306073d0c0a4_tokenizer.vocab` | |
| - `artifacts/4cf78c8ca4ca44fca36c3754478fb188_vocab.txt` | |
| ## Usage | |
| This repo currently publishes the fine-tuned model as a raw NeMo checkpoint rather than a packaged `.nemo` archive. The tokenizer artifact paths therefore need to be pointed at the local `artifacts/` folder before restore. | |
| ```python | |
| from pathlib import Path | |
| import torch | |
| from omegaconf import OmegaConf | |
| from nemo.collections.asr.models import EncDecRNNTBPEModel | |
| model_dir = Path("ASR/parakeet") | |
| ckpt_path = model_dir / "model.ckpt" | |
| artifacts_dir = model_dir / "artifacts" | |
| bundle = torch.load(ckpt_path, map_location="cpu", weights_only=False) | |
| cfg = bundle["hyper_parameters"]["cfg"] | |
| cfg = OmegaConf.create(OmegaConf.to_container(cfg, resolve=False)) | |
| cfg.tokenizer.model_path = str( | |
| artifacts_dir / "705f11d22dc04b169effc35ce5cd1361_tokenizer.model" | |
| ) | |
| cfg.tokenizer.vocab_path = str( | |
| artifacts_dir / "4cf78c8ca4ca44fca36c3754478fb188_vocab.txt" | |
| ) | |
| cfg.tokenizer.spe_tokenizer_vocab = str( | |
| artifacts_dir / "a4715c7f6b2d4c2bb709306073d0c0a4_tokenizer.vocab" | |
| ) | |
| model = EncDecRNNTBPEModel.load_from_checkpoint(str(ckpt_path), cfg=cfg) | |
| model.eval().cuda() | |
| hypotheses = model.transcribe( | |
| ["audio.wav"], | |
| return_hypotheses=True, | |
| timestamps=True, | |
| ) | |
| if isinstance(hypotheses, tuple): | |
| hypotheses = hypotheses[0] | |
| hyp = hypotheses[0] | |
| print(hyp.text) | |
| print(hyp.timestamp["word"]) | |
| ``` | |
| Tested in ASTRA with `nemo_toolkit[asr]==2.7.3`. | |
| ## Output Format | |
| The model outputs normalized spoken text intended for downstream ATC formatting: | |
| | Input audio says | Model outputs | | |
| |-----------------|---------------| | |
| | "CAMEL climb flight level zero nine zero" | `camel climb flight level zero nine zero` | | |
| | "Contact Tengah Approach one three zero decimal zero" | `contact tengah approach one three zero decimal zero` | | |
| | "Squawk four five two one" | `squawk four five two one` | | |
| ASTRA then applies a deterministic formatter to convert normalized speech into display text such as `CAMEL climb FL090`. | |