Views
No views yet
| Component | Description | Size |
|---|---|---|
| Preprocessor | Mel spectrogram extraction | ~1 MB |
| Encoder | Conformer encoder (shared) | ~400 MB |
| CTCHead | CTC output projection | ~4 MB |
| Decoder | TDT prediction network (LSTM) | ~25 MB |
| JointDecision | TDT joint network | ~6 MB |
| Metric | Value |
|---|---|
| Keyword Recall | 100% (1309/1309) |
| WER | 17.97% |
| RTFx (M4 Pro) | 358x real-time |
1# Using uv (recommended)
2uv sync
3
4# Or using pip
5pip install -e .
6
7# For audio file support (WAV, MP3, etc.)
8pip install -e ".[audio]"1from scripts.inference import ParakeetCoreML
2
3# Load model (from current directory with .mlpackage files)
4model = ParakeetCoreML(".")
5
6# Transcribe with TDT (higher quality)
7text = model.transcribe("audio.wav", mode="tdt")
8print(text)
9
10# Or use CTC for faster keyword spotting
11text = model.transcribe("audio.wav", mode="ctc")
12print(text)1# TDT decoding (default, higher quality)
2uv run scripts/inference.py --audio audio.wav
3
4# CTC decoding (faster, good for keyword spotting)
5uv run scripts/inference.py --audio audio.wav --mode ctc1# Install conversion dependencies
2uv sync --extra convert
3
4# Run conversion
5uv run scripts/convert_nemo_to_coreml.py --output-dir ./modelnvidia/parakeet-tdt_ctc-110m)./
├── Preprocessor.mlpackage # Audio → Mel spectrogram
├── Encoder.mlpackage # Mel → Encoder features
├── CTCHead.mlpackage # Encoder → CTC log probs
├── Decoder.mlpackage # TDT prediction network
├── JointDecision.mlpackage # TDT joint network
├── vocab.json # Token vocabulary (1024 tokens)
├── metadata.json # Model configuration
├── pyproject.toml # Python dependencies
├── uv.lock # Locked dependencies
└── scripts/ # Inference & conversion scripts1# Load custom vocabulary with token IDs
2with open("custom_vocab.json") as f:
3 keywords = json.load(f) # {"keyword": [token_ids], ...}
4
5# Run CTC decoding
6tokens = model.decode_ctc(encoder_output)
7
8# Check for keyword matches
9for keyword, expected_ids in keywords.items():
10 if is_subsequence(expected_ids, tokens):
11 print(f"Found keyword: {keyword}")1@misc{nvidia_parakeet_tdt_ctc,
2 title={Parakeet-TDT-CTC-110M},
3 author={NVIDIA},
4 year={2024},
5 publisher={Hugging Face},
6 url={https://huggingface.co/nvidia/parakeet-tdt_ctc-110m}
7}