--- license: apache-2.0 datasets: - proxectonos/Nos_Parlaspeech-GL - juanjucm/OpenHQ-SpeechT-GL-EN - juanjucm/FLEURS-SpeechT-GL-EN - mozilla-foundation/common_voice_22_0 language: - gl base_model: - nvidia/stt_es_conformer_ctc_large library_name: nemo tags: - automatic-speech-recognition - speech - audio - CTC - Conformer - Transformer - pytorch - NeMo - forced-alignment - hf-asr-leaderboard - Riva metrics: - wer model-index: - name: stt-gl-conformer-large-ctc-v1.0 results: - task: type: Automatic Speech Recognition name: automatic-speech-recognition dataset: name: Common Voice 22 (Galician) type: mozilla/common_voice_22_gl config: gl split: test args: language: gl metrics: - name: Test WER type: wer value: 8.67 - task: type: Automatic Speech Recognition name: automatic-speech-recognition dataset: name: Nos ParlAspeech (GL) type: proxectonos/Nos_Parlaspeech-GL config: gl split: test args: language: gl metrics: - name: Test WER type: wer value: 8.67 - task: type: Automatic Speech Recognition name: automatic-speech-recognition dataset: name: OpenHQ-SpeechT (GL-EN, GL subset) type: juanjucm/OpenHQ-SpeechT-GL-EN config: gl split: test args: language: gl metrics: - name: Test WER type: wer value: 8.67 - task: type: Automatic Speech Recognition name: automatic-speech-recognition dataset: name: FLEURS (GL-EN, GL subset) type: juanjucm/FLEURS-SpeechT-GL-EN config: gl split: test args: language: gl metrics: - name: Test WER type: wer value: 8.67 --- # Conformer-CTC Large for Galician (v1.0) This model performs automatic speech recognition (ASR) for **Galician**. It is a fine-tuned version of NVIDIA's Conformer-CTC Large model, adapted to Galician using public speech datasets. - Input: WAV mono 16 kHz - Output: Galician transcription (lowercase) - Architecture: Conformer-CTC (non-autoregressive) ## Installation ```bash pip install --upgrade pip pip install "nemo_toolkit[asr]" torch torchaudio --index-url https://download.pytorch.org/whl/cu121 ``` ## Quick Usage (ASR) ```python import nemo.collections.asr as nemo_asr MODEL_ID = "your-username/stt-gl-conformer-large-ctc-v1.0" asr = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(MODEL_ID) preds = asr.transcribe(["/path/to/audio.wav"]) # list of wav paths print(preds[0]) ``` ## Forced Alignment (word-level timestamps) ### 1) Clone and install NeMo ```bash git clone https://github.com/NVIDIA/NeMo cd NeMo pip install -r requirements/requirements_asr.txt pip install -e . ``` ### 2) Export the model to `.nemo` (if needed) ```python import nemo.collections.asr as nemo_asr m = nemo_asr.models.EncDecCTCModelBPE.from_pretrained("your-username/stt-gl-conformer-large-ctc-v1.0") m.save_to("stt-gl-conformer-large-ctc-v1.0.nemo") ``` ### 3) Create a minimal manifest `manifest.jsonl` ```json {"audio_filepath": "/path/audio.wav", "text": "reference transcription in galician", "duration": 3.2} ``` ### 4) Run the aligner ```bash python tools/nemo_forced_aligner/align.py \ model_path="stt-gl-conformer-large-ctc-v1.0.nemo" \ manifest_filepath="manifest.jsonl" \ output_dir="align_out" \ batch_size=1 \ transcribe_device="cuda" \ viterbi_device="cuda" \ align_using_pred_text=false \ use_local_attention=true \ save_output_file_formats='["ctm"]' ``` Outputs are saved as `align_out/*.ctm`. ## Training Data | Dataset | Source | |---|---| | Common Voice v22 GL | Mozilla (downloaded directly) | | Nos ParlAspeech GL | `proxectonos/Nos_Parlaspeech-GL` (Zenodo) | | OpenHQ-SpeechT GL-EN | `juanjucm/OpenHQ-SpeechT-GL-EN` | | FLEURS GL-EN | `juanjucm/FLEURS-SpeechT-GL-EN` | ## Model Details - **Base model:** NVIDIA Conformer-CTC Large - **Framework:** NeMo Toolkit - **Tokenizer:** SentencePiece BPE packaged inside the `.nemo` ## Forced Alignment Performance (Word-Level) The model was also evaluated as a **word-level forced aligner** on the *Nos ParlAspeech (GL)* corpus. The following metrics measure the timing accuracy of predicted word boundaries relative to ground-truth annotations: | Metric | Value | |-------|------:| | Mean Word Boundary Error | **47.0 ms** | | Standard Deviation | **55.5 ms** | | P90 (90th percentile error) | **90.0 ms** | | Word Boundary Precision ≤ 50 ms | **64.6%** | | Word Boundary Precision ≤ 100 ms | **92.8%** | This indicates that a majority of predicted **word start/end timestamps** fall within 50–100 ms of the manually annotated reference boundaries, making the model suitable for segmentation, subtitle alignment, and prosody/linguistic analysis workflows. ## Limitations Performance may degrade on highly technical domains, noisy audio, or speakers not represented in training data. ## Contact information For further information, send an email to proxecto.nos@usc.gal ## Licensing information [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0) ## Acknowledgements This work is funded by the Ministerio para la Transformación Digital y de la Función Pública - Funded by EU – NextGenerationEU within the framework of the project Desarrollo de Modelos ALIA. (Esta publicación del proyecto Desarrollo de Modelos ALIA está financiada por el Ministerio para la Transformación Digital y de la Función Pública y por el Plan de Recuperación, Transformación y Resiliencia – Financiado por la Unión Europea – NextGenerationEU). Thanks also to Balidea for the technical development of this model. ## Citation ```bib @misc{proxectenos2026stt_gl_conformer_ctc_large_v1.0, author = {{Proxecto Nós}}, title = {{Conformer-CTC Large for Galician} (v1.0)}, year = {2026}, publisher = {Hugging Face}, howpublished = {\url{https://huggingface.co/proxectonos/stt_gl_conformer_ctc_large_v1.0}}, } ```