Downloads · 30 days
7
5% of all-time downloads
sliderforthewin/parakeet-tdt-lt
parakeet-tdt-lt is a automatic speech recognition model from sliderforthewin. Use it when you need speech turned into text. It is set up for nemo. The card lists the license as cc-by-4.0.
Fine-tuned version of nvidia/parakeet-tdt-0.6b-v3 on ~43 hours of Lithuanian speech data. Achieves a 45.5% relative WER reduction on Common Voice 25 Lithuanian test (16.53% → 8.91% with beam search + domain 5-gram lan…
Downloads · 30 days
7
5% of all-time downloads
All-time downloads
145
Public
Repo size
33.8 GB
Likes
0
Public
Click a slice to open those files.
.arpa25.2 GB · 88%
From the Hugging Face model README
Fine-tuned version of nvidia/parakeet-tdt-0.6b-v3 on ~43 hours of Lithuanian speech data. Achieves a 45.5% relative WER reduction on Common Voice 25 Lithuanian test (16.53% → 8.91% with beam search + domain 5-gram language model, BasicTextNormalizer).
| Configuration | CV25 LT WER | CV25 LT CER | FLEURS LT WER |
|---|---|---|---|
| Baseline (pretrained, greedy) | 16.53% | 4.29% | 22.15%* |
| Fine-tuned epoch 11 (greedy) | 13.55% | 2.76% | — |
| Fine-tuned + beam + domain 5-gram LM α=0.5 | 9.40% | 2.15% | — |
| Same, BasicTextNormalizer (leaderboard) | 8.91% | 2.07% | 15.87% |
* BasicTextNormalizer. Live results: speechbench-viz.web.app
import nemo.collections.asr as nemo_asr
# Greedy decoding
model = nemo_asr.models.ASRModel.from_pretrained("sliderforthewin/parakeet-tdt-lt")
transcriptions = model.transcribe(["audio.wav"])
from omegaconf import open_dict
from huggingface_hub import hf_hub_download
model = nemo_asr.models.ASRModel.from_pretrained("sliderforthewin/parakeet-tdt-lt")
# Download the token-level LM
lm_path = hf_hub_download("sliderforthewin/parakeet-tdt-lt", "lt_token_4gram.arpa")
# Switch to beam search with LM fusion
decoding_cfg = model.cfg.decoding
with open_dict(decoding_cfg):
decoding_cfg.strategy = "maes"
decoding_cfg.beam.beam_size = 4
decoding_cfg.beam.return_best_hypothesis = True
decoding_cfg.beam.ngram_lm_model = lm_path
decoding_cfg.beam.ngram_lm_alpha = 0.5
model.change_decoding_strategy(decoding_cfg)
transcriptions = model.transcribe(["audio.wav"])
The examples above pass a whole file to model.transcribe(). That is fine for
clips, but on long recordings this model silently drops large spans of speech
rather than failing loudly. It was fine-tuned and evaluated on Common Voice
utterances of a few seconds; an hour-long file is far outside that regime.
Measured on a 7m41s interview segment containing only 24s of silence:
| decoding | words returned |
|---|---|
| whole file, beam + LM | 168 |
| same audio in silence-aligned chunks, greedy | 793 |
Split long audio on silence before decoding. transcribe.py in this repo does
it for you — anything over 90s is chunked automatically:
python transcribe.py interview.mp3 # chunks automatically
python transcribe.py --lm interview.mp3 # with LM fusion
python transcribe.py --json interview.mp3 # adds per-segment start/end
python transcribe.py --chunk-seconds 30 hard_audio.mp3
python transcribe.py --no-chunk clip.wav # opt out
It needs ffmpeg on PATH for chunking. With --json, each record carries
duration and a segments list of {start, end, text}, giving you rough
timings at no extra cost.
git clone https://github.com/jasontitus/finetuneparakeet.git
cd finetuneparakeet
bash scripts/gcp_eval.sh # on a GCP VM with GPU
parakeet-tdt-lt.nemo — NeMo checkpoint (epoch 11, best WER)lt_europarl_wiki_subs_5gram.arpa — Europarl+wiki+subs 5-gram token LM (recommended)lt_token_4gram.arpa — Original 4-gram token LM (smaller, still good)transcribe.py — standalone runner: downloads the model, handles device
placement and LM fusion, and chunks long audio on silenceCC-BY-4.0 (same as the training data sources)