Skip to content

Latest commit

 

History

History
82 lines (63 loc) · 3.3 KB

File metadata and controls

82 lines (63 loc) · 3.3 KB

Canary

NVIDIA's Canary family ported to transcribe.cpp. A FastConformer encoder paired with a Transformer decoder in a multitask AED setup — every variant does both ASR and speech translation between supported language pairs. The variants differ in encoder/decoder depth (and thus accuracy/latency) and in how many languages they cover.

For the architecture deep-dive, validation contract, and porting notes, see the family doc at docs/porting/families/canary.md.

Choosing a variant

  • Broadest language coverage. canary-1b-v2 — 25 European languages, deeper 8-layer decoder for higher-quality translation. Apache-2.0 weights.
  • Best 4-language accuracy. canary-1b (the original release; CC-BY-NC-4.0) uses a 24-layer decoder, trading decode speed for accuracy on en/de/es/fr.
  • Faster decode, same 4 languages. canary-1b-flash (883M, 4-layer decoder) — the speed-tuned sibling at ~1.6% WER on LibriSpeech test-clean.
  • Smallest footprint. canary-180m-flash (182M, 208 MB at Q8_0) — the ultralight variant; same 4-language coverage as the flash 1B.

All variants

WER is on LibriSpeech test-clean for the Q8_0 preset, measured by transcribe.cpp's WER pipeline. See each per-variant doc for the full quant matrix and per-language WER/BLEU tables.

Variant Decoder depth Params Q8_0 size WER (Q8_0) Languages Doc
canary-1b 24 1.0B 1.1 GB 1.55% en, de, es, fr canary-1b.md
canary-1b-v2 8 978M 1.1 GB 1.91% 25 European canary-1b-v2.md
canary-1b-flash 4 883M 1.0 GB 1.62% en, de, es, fr canary-1b-flash.md
canary-180m-flash 4 182M 208 MB 1.93% en, de, es, fr canary-180m-flash.md

Pre-built GGUFs for every variant and quant are hosted under handy-computer on Hugging Face; each per-variant doc has direct download links.

Input limits

Every variant accepts up to about 6.7 minutes (400 s) of 16 kHz mono audio per call — the encoder's positional table is the binding limit, shared across the family. Longer audio is rejected up front with TRANSCRIBE_ERR_INPUT_TOO_LONG rather than silently truncated; split it into shorter segments. See the input-length contract.

Quick start

Pick a variant and run:

cmake -B build
cmake --build build

build/bin/transcribe-cli \
  -m models/canary-1b-flash/canary-1b-flash-Q8_0.gguf \
  samples/jfk.wav

The repo doesn't ship the GGUFs — pull them from the corresponding handy-computer/<variant>-gguf repo on Hugging Face, or convert from the upstream NVIDIA .nemo checkpoint via the per-variant doc's reproduction section.

Capabilities

All Canary variants support:

  • Transcription of 16 kHz mono WAV input across all supported languages (language hint required — no auto-detect).
  • Translation between supported language pairs per the upstream model cards.

What's not supported (consistent across the family): real-time streaming, VAD, speaker diarization, auto language detection. See the family doc for the full runtime contract.