Saulius-Digisensus's picture
Remove link to the phone + dialects model (now private)
677a9ab verified
|
Raw History Blame Contribute Delete
8.01 kB
---
license: cc-by-4.0
language:
- lt
library_name: nemo
pipeline_tag: automatic-speech-recognition
base_model: nvidia/parakeet-tdt-0.6b-v3
datasets:
- Digisensus/lithuanian-phone-speech-liepa-3-429h-punctuated
tags:
- speech
- automatic-speech-recognition
- parakeet
- tdt
- fastconformer
- nemo
- lithuanian
- telephony
- spontaneous-speech
- punctuation
- capitalization
- inverse-text-normalization
- liepa-3
model-index:
- name: parakeet-tdt-0.6b-lt-phone
results:
- task:
type: automatic-speech-recognition
name: Automatic Speech Recognition
dataset:
type: Digisensus/lithuanian-phone-speech-liepa-3-429h-punctuated
name: Lithuanian Phone Speech (LIEPA-3), 2,000 held-out clips (eval/test_ids.txt)
metrics:
- type: wer
value: 12.4
name: WER (normalized)
- type: wer
value: 19.48
name: WER (cased + punctuated)
---
# Parakeet Lithuanian Phone 0.6B — 12.4 % WER on spontaneous telephone speech
A Lithuanian speech recogniser for **spontaneous telephone speech**, fine-tuned from
[`nvidia/parakeet-tdt-0.6b-v3`](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3) on 426 hours
of Lithuanian phone calls from the
[Lithuanian Phone Speech 429 h](https://huggingface.co/datasets/Digisensus/lithuanian-phone-speech-liepa-3-429h-punctuated)
dataset. It writes **readable text directly**: punctuation, capitalisation, and numbers, dates,
times and amounts as digits ("2026 m. rugsėjo 6 d., 9:30", "65 000 €").
Released by **[Digisensus](https://digisensus.com)**, a conversational intelligence company from
Vilnius, Lithuania, building custom enterprise ASR and LLM solutions for call transcription and
conversation analytics.
## Key finding
**The LIEPA-3 spontaneous phone speech helped Parakeet a lot, but on real calls from outside
that corpus the model is still far from usable.**
- On held-out LIEPA-3 phone speech, fine-tuning cut the word error rate from 42.7 % to 12.4 %
(normalized): about 3.4× fewer errors.
- On independent real phone calls it improved too, from 59.5 % to 39.3 %, but roughly two words
in five are still wrong: not good enough for production call transcription.
- **Why the gap:** the LIEPA-3 phone speech consists mostly of radio and TV broadcasts in which
the person speaking took part over the phone. That speech is much cleaner than regular
customer-service or sales calls. The
main weaknesses of LIEPA-3 as training data for real calls are:
- **generic topics**: broadcast subjects, not the products, services and vocabulary of real
customer conversations;
- **clean speech**: fluent interview speech, not everyday callers with noise, interruptions
and overlapping talk;
- **no context between segments**: short, isolated clips, so the model never learns from the
surrounding conversation.
## Results
Word error rate, %, on clips never used in training:
| Test set | `parakeet-tdt-0.6b-v3` (base) | **This model** |
|---|---:|---:|
| LIEPA-3 phone speech, 2,000 held-out clips (2.1 h), normalized | 42.7 | **12.4** |
| LIEPA-3 phone speech, 2,000 held-out clips, cased + punctuated | 51.5 | **19.5** |
| Independent real phone calls, 488 clips (2.8 h), normalized | 59.5 | **39.3** |
| Independent real phone calls, 488 clips, cased + punctuated | 66.8 | **53.4** |
- **Normalized** WER compares lowercase text with punctuation removed; **cased + punctuated** WER
compares the text exactly as written. Both keep numbers as digits.
- **Independent real phone calls:** 488 human-verified clips of real Lithuanian telephone
conversations from other sources. They are not public and were not used in training. They are
longer and harder than LIEPA-3, so this set shows how the model does outside its training data.
## Quick start
```python
import nemo.collections.asr as nemo_asr
model = nemo_asr.models.ASRModel.from_pretrained("Digisensus/parakeet-tdt-0.6b-lt-phone")
out = model.transcribe(["call.wav"]) # 16 kHz mono audio
print(out[0].text)
```
Needs [NVIDIA NeMo](https://github.com/NVIDIA/NeMo) 2.x (`pip install "nemo_toolkit[asr]"`).
Clips of up to 30 seconds match the training data; split longer recordings into segments first.
## Training
- **Data:** 413,638 clips (425.8 h) of spontaneous telephone speech from the
[Lithuanian Phone Speech 429 h](https://huggingface.co/datasets/Digisensus/lithuanian-phone-speech-liepa-3-429h-punctuated)
dataset, 0.5–30 s each, with written-form transcripts (`text`).
- **Held-out data:** before training, 3,000 clips of the same dataset were set aside and never
trained on: 1,000 for validation (used to pick the checkpoint) and 2,000 for the final test.
Their IDs are in [`eval/`](eval). These held-out sets are not the dataset's own
validation/test splits, which were drawn independently and overlap with this model's training
data. To reproduce the results, evaluate on `eval/test_ids.txt`.
- **Setup:** full fine-tune of the encoder and TDT decoder; 6,000 updates, effective batch 192
clips, learning rate 1e-4 with 300 warm-up steps and cosine decay to 1e-6, SpecAugment, bf16.
One NVIDIA GeForce RTX 5090, 1.9 hours. Full settings are in [`config.json`](config.json).
- **Released checkpoint:** step 4,500, the one with the lowest validation WER.
![Training loss](charts/training_loss.png)
![Validation error rate](charts/validation_wer.png)
The numbers behind the charts are in [`training_log.csv`](training_log.csv) and
[`eval_log.csv`](eval_log.csv).
## Files
| File | Content |
|---|---|
| `model.nemo` | Weights, configuration and tokenizer (NeMo format) |
| `config.json` | Training data, hyperparameters and validation results |
| `training_log.csv` | Loss, learning rate and gradient norm every 25 steps |
| `eval_log.csv` | Validation WER and CER every 300 steps |
| `eval/validation_ids.txt`, `eval/test_ids.txt` | IDs of the held-out clips in the dataset |
| `charts/` | Training loss and validation error rate |
## Limitations
- **Domain:** trained on one corpus of spontaneous phone speech. On other real calls the error
rate is much higher (39.3 % normalized); expect the same for noisy audio, strong accents and
specialised vocabulary.
- **Dialects:** regional dialect speech was not in the training data.
- **Written form:** the output follows the dataset's
[transcription conventions](https://huggingface.co/datasets/Digisensus/lithuanian-phone-speech-liepa-3-429h-punctuated#transcription-conventions),
including their known inconsistencies.
- **Speakers:** mostly adults; children and teenagers are rare in the training data.
## Licence and attribution
This model is licensed under
[Creative Commons Attribution 4.0 International (CC BY 4.0)](https://creativecommons.org/licenses/by/4.0/).
The full licence text is in [`LICENSE`](LICENSE).
It is derived from [`nvidia/parakeet-tdt-0.6b-v3`](https://huggingface.co/nvidia/parakeet-tdt-0.6b-v3)
by NVIDIA (CC BY 4.0) and trained on data derived from **LIEPA-3** by Vytautas Magnus University,
Vilnius University and the Institute of the Lithuanian Language (CC BY 4.0). When you use or
redistribute it, credit all three:
> Parakeet Lithuanian Phone 0.6B by [Digisensus](https://digisensus.com), licensed under CC BY 4.0.
> Fine-tuned from nvidia/parakeet-tdt-0.6b-v3 by NVIDIA (CC BY 4.0) on data derived from LIEPA-3
> by Vytautas Magnus University, Vilnius University and the Institute of the Lithuanian Language
> (CC BY 4.0).
## Citation
```bibtex
@misc{digisensus_parakeet_lt_phone_2026,
title = {Parakeet Lithuanian Phone 0.6B},
author = {{Digisensus}},
year = {2026},
howpublished = {Hugging Face},
url = {https://huggingface.co/Digisensus/parakeet-tdt-0.6b-lt-phone},
note = {Digisensus, https://digisensus.com. Fine-tuned from nvidia/parakeet-tdt-0.6b-v3
(NVIDIA) on data derived from LIEPA-3 (Vytautas Magnus University, Vilnius
University, Institute of the Lithuanian Language), CC BY 4.0}
}
```