CoolFace
Modelpublic

BSC-LT/salamandra-TAV-7b

sourceHugging Faceapache-2.0updated 13d agoView on Hugging Face
2likes131downloads
Model Card

<!-- [image] -->

SalamandraTAV-7b Model Card

SalamandraTAV-7b is a Speech To Text translation Speech LLM that has been finetuned from salamandraTA-7b-instruct. SalamandraTAV-7b is proficient in 6 Iberic languages plus English, and supports the following translation-related tasks: Automatic Speech Recognition, Text To Text Translation, Speech To Text Translation, Spoken Language Identification.

[!WARNING] DISCLAIMER: This version of Salamandra is tailored exclusively for speech translation tasks. It lacks chat capabilities and has not been trained with any chat instructions.

<details> <summary>Table of contents</summary>

</details>


Model Details

Description

SalamandraTAV-7b is a finetuned version of salamandraTA-7b-instruct using mhubert-base-25hz as the speech encoder. It has been trained on 12,000 hours of Automatic Speech Recognition, 900 hours of Speech-To-Text Translation data and 113M target tokens of Text-To-Text Translation to mantain the original model's performance.


Intended Use

The model is intended for both research and commercial use for the speech to text translation task in the following languages: Asturian, Basque, Catalan, English, Galician, Portuguese and Spanish.


Hardware and Software

Training Framework

The code used to train SalamandraTAV-7b is based on the Transformers library, and will be publicly available soon.

Compute Infrastructure

This model was trained on MareNostrum 5, a pre-exascale EuroHPC supercomputer hosted and operated by Barcelona Supercomputing Center.

Training was conducted on 4 nodes, each with the following specifications:

  • 4x Nvidia Hopper GPUs with 64GB HBM2 memory
  • 2x Intel Sapphire Rapids 8460Y+ at 2.3Ghz and 32c each (64 cores)
  • 4x NDR200 (BW per node 800Gb/s)
  • 512 GB of Main memory (DDR5)

How to use

[!NOTE] Requirements To use this model, ensure you have the following Python packages installed: transformers, torch, torchaudio, joblib, sentencepiece, protobuf, scikit-learn, langcodes, soundfile

The easiest way to use the model is using the custom pipeline multimodal_mt:

python
from transformers import pipeline
pipe = pipeline(
  task="multimodal_mt",
  model="langtech-veu/salamandra-TAV-7b",
  trust_remote_code=True
)

Specify an audio file (can be a URL or a local file path):

python
audio_path = "https://github.com/voxserv/audio_quality_testing_samples/raw/refs/heads/master/orig/127389__acclivity__thetimehascome.wav" # in English

Define the generation parameters:

python
generation_kwargs = {
  "beam_size": 5,
  "max_new_tokens": 100
}

Direct Speech-to-Text Translation (S2TT)

Run the S2TT pipeline, specifying the target language:

python
translation = pipe(audio_path, mode="s2tt", tgt_lang="Spanish", **generation_kwargs)

Optionally, you can also specify the source language:

python
translation = pipe(audio_path, mode="s2tt", src_lang="English", tgt_lang="Spanish", **generation_kwargs)

Cascaded Speech-to-Text Translation (ASR+T2TT)

Run the S2TT pipeline, specifying the target language:

python
transcription = pipe(audio_path, mode="asr", **generation_kwargs)
translation = pipe(transcription, mode="t2tt", tgt_lang="Spanish", **generation_kwargs)

Optionally, you can also specify the source language:

python
transcription = pipe(audio_path, mode="asr", src_lang="English", **generation_kwargs)
translation = pipe(transcription, mode="t2tt", src_lang="English", tgt_lang="Spanish", **generation_kwargs)

Speech-to-Text Translation with CoT (S2TT-CoT)

This is a variant which uses a CoT mechanism to generate the translation by transcribing it first.

Run the S2TT pipeline, specifying the target language:

python
history = pipe(audio_path, return_chat_history=True, mode="asr", **generation_kwargs)
translation = pipe(history, mode="t2tt", tgt_lang="Spanish", **generation_kwargs)

Optionally, you can also specify the source language:

python
history = pipe(audio_path, return_chat_history=True, mode="asr", src_lang="English", **generation_kwargs)
translation = pipe(history, mode="t2tt", src_lang="English", tgt_lang="Spanish", **generation_kwargs)
Advanced Usage

If you are interested in getting the intermediate results, you can do it as follows:

python
history = pipe(audio_path, return_chat_history=True, mode="asr", **generation_kwargs)
transcription = history.get_assistant_messages()[-1]
history = pipe(history, return_chat_history=True, mode="t2tt", tgt_lang="Spanish", **generation_kwargs)
translation = history.get_assistant_messages()[-1]
history = pipe(history, return_chat_history=True, mode="lid", **generation_kwargs)
src_language = history.get_assistant_messages()[-1]

Training Data

Global Summary

Data TypeHoursSamplesTokens (target)Tokens (total)
ASR12,147.5h5,207,686582,567,6744,180,709,878
S2TT896h556,66428,297,402153,376,912
T2TT-2,242,354112,837,123220,328,525

Automatic Speech Recognition

[!NOTE] To ensure reliable evaluation, we excluded from the Common Voice 21.0 train set all samples that overlap with the CoVoST 2 dev and test sets.
DatasetastcaeneseuglocptTotal
Common Voice Corpus 21.0 (train)0.5h1775h1762h494h166.5h90.5h0.5h23h4312h
VoxPopuli (train)501h149h650h
ParlamentParla) (train_clean)200h200h
Multilingual LibriSpeech (train)4466.5h917h161h5545h
basque_parliment_1 (train_clean)937.5h363.5h1301h
CRPIH_UVigo-GL-Voices21h21h
festcat_trimmed_denoised22.5h22.5h
LaFrescat3.5h3.5h
Google Crowdsource9.5h14h10.5h33.5h
Nos_Celtia-GL24h24h
Nos_Transcrispeech-GL (train)35h35h
Total (hours)0.5h2010.5h6729.5h2497.5h544h181h0.5h184h12147.5h

Speech-To-Text Translation

[!NOTE] To ensure reliable evaluation, we excluded from the CoVoST 2 train set all samples that overlap with the Common Voice 21.0 dev and test sets.
Datasetca-enen-caen-esen-ptes-enes-ptpt-enpt-esTotal
CoVoST 2 (train)135.5h430h113h10.5h689h
Europarl-ST v1.1 (train)75.5h74h20.5h12.5h14.5h9.5h207h
Total (hours)135.5h430h75.5h74h133.5h12.5h25h9.5h896h

Text-To-Text Translation

For T2TT data, we filtered Wikimedia and Tatoeba datasets using the following criteria:

  1. 1.Sample obtained a GlotLID v3 target language probability of at least 50%
  2. 2.Sample contains between 5 and 100 words
  3. 3.Sample obtained a BLASER 2.0 score higher than 3.75

Obtaining 102,845,818 target tokens for Wikimedia and 9,991,305 target tokens for Tatoeba, with the following language distribution:

LanguageAs Source (samples)(%)As Target (samples)(%)
ast8480.0%11,8000.5%
ca44,2782.0%272,25012.1%
en1,353,78460.4%412,16618.4%
es533,33023.8%862,27638.5%
eu5,2660.2%79,5343.5%
gl14,0520.6%85,5103.8%
pt290,75413.0%518,77623.1%
Total2,242,354100.0%2,242,354100.0%

Evaluation

Below are the SalamandraTAV-7b evaluation results on the Fleurs, mintzai-ST, CoVoST 2 and Common Voice test sets, compared against the state-of-the-art models: SeamlessM4T, Whisper and SpireFull. We report the following metrics:

<details> <summary>Click to show metrics details</summary>

  • BLEU: sacrebleu implementation. Signature: nrefs:1 | case:mixed | eff:no | tok:13a | smooth:exp | version:2.5.1.
  • XComet-XL: COMET model checkpoint: Unbabel/XCOMET-XL.
  • WER: jiwer implementation. Applied the following normalization:
python
def normalize_text_list(text_list: List[str]) -> List[str]:
  normalized_list = []
  for t in text_list:
    # Apostrophes and quotation marks
    t = t.replace("’", "'").replace("‘", "'").replace("`", "'")
    t = t.replace("“", '"').replace("”", '"')
    # Hyphens
    t = t.replace("–", "-").replace("—", "-")
    # Ellipses
    t = t.replace("…", "...")
    # Non-breaking spaces
    t = t.replace("\u00A0", " ")
    normalized_list.append(t)
  return normalized_list
transformation = jiwer.Compose([
    normalize_text_list,
    jiwer.ToLowerCase(),
    jiwer.ExpandCommonEnglishContractions(),
    jiwer.RemovePunctuation(),
    jiwer.RemoveWhiteSpace(replace_by_space=True),
    jiwer.RemoveMultipleSpaces(),
    jiwer.Strip(),
    jiwer.ReduceToSingleSentence(),
    jiwer.ReduceToListOfListOfWords()
])

</details>

Speech-To-Text Translation

Results reported in bold indicate better performance than SeamlessM4T. The heatmap matrices indicate the difference in scores of each language direction.

<details> <summary>Fleurs Test</summary>

Fleurs Test

BLEU

SalamandraTAVastcaenesglptAvg (tgt)
ast-26.427.717.119.721.622.5
ca22.9-39.722.229.831.029.1
en24.339.1-25.532.343.032.8
es13.720.824.8-18.819.119.4
gl18.129.432.420.6-26.025.3
pt19.930.637.020.625.6-26.7
Avg (src)19.829.332.321.225.228.126.0

SalamandraTAV vs SeamlessM4T BLEU Difference

[image]

The evaluation results reported here were obtained by manually running inference with the model on the test set. We verified that the results from SeamlessM4T are consistent with the official results reported by the authors.

XCOMET-XL

SalamandraTAVcaenesglptAvg (tgt)
ca-0.92890.91140.92020.91360.9185
en0.8987-0.90450.89810.90770.9023
es0.90130.9257-0.91620.91100.9136
gl0.89300.90240.8890-0.90050.8962
pt0.86970.89120.87750.8862-0.8812
Avg (src)0.89070.91210.89560.90520.90820.9023

SalamandraTAV vs SeamlessM4T XCOMET-XL Difference

[image]

XCOMET-XL results for Asturian are not reported because it is not supported by this metric.

</details>

<details> <summary>CoVoST 2 Test</summary>

CoVoST 2 Test

BLEU

SalamandraTAVcaen
ca-37.3
en41.1-
es-43.9
pt-49.0
Avg (src)41.143.4

SalamandraTAV vs SeamlessM4T BLEU Difference

[image]

XCOMET-XL

SalamandraTAVcaen
ca-0.8835
en0.8454-
es-0.9241
pt-0.8967
Avg (src)0.84540.9014

SalamandraTAV vs SeamlessM4T XCOMET-XL Difference

[image]

</details>

<details> <summary>Mintzai-ST Test</summary>

Mintzai-ST Test

Mintzai-ST has overlap with basqueparliament1, with which we have trained our model.

BLEU

SalamandraTAVeseu
es-21.7
eu26.8-

SalamandraTAV vs SeamlessM4T BLEU Difference

[image]

XCOMET-XL

SalamandraTAVeseu
es-0.8000
eu0.8329-

SalamandraTAV vs SeamlessM4T XCOMET-XL Difference

[image]

</details>

Automatic Speech Recognition

<details> <summary>Common Voice 21.0 Test</summary>

Common Voice 21.0 Test

WER

SalamandraTAVSeamlessM4TWhisper v3Spire
ast29.35---
ca7.347.8914.11-
en16.659.1511.1322.56
es7.725.645.21-
gl7.837.3814.50-
pt21.8019.626.85-

</details>

<details> <summary>Fleurs Test</summary>

Fleurs Test

WER

SalamandraTAVSeamlessM4TWhisper v3Spire
ast25.68---
ca7.345.744.88-
en8.357.664.819.07
es6.045.302.95-
gl11.838.0013.61-
pt10.557.943.97-

</details>

<details> <summary>Mintzai-ST Test</summary>

Fleurs Test

WER

SalamandraTAVSeamlessM4TWhisper v3
es8.219.247.37
eu19.3425.6948.64

</details>

Additional information

Authors

All the members of the SalamandraTAV Team are members of the Language Technologies Lab at the Barcelona Supercomputing Center (BSC).

Contact

For further information, please send an email to <bsc-lt@bsc.es>.

Copyright

Copyright(c) 2025 by Language Technologies Lab, Barcelona Supercomputing Center.

Funding

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 Modelos del Lenguaje.

Acknowledgements

The author thankfully acknowledges the computer resources at MareNostrum and the technical support provided by Barcelona Supercomputing Center (RES-IM-2025-2-0027).

Disclaimer

Be aware that the model may contain biases or other unintended distortions. When third parties deploy systems or provide services based on this model, or use the model themselves, they bear the responsibility for mitigating any associated risks and ensuring compliance with applicable regulations, including those governing the use of Artificial Intelligence.

The Barcelona Supercomputing Center, as the owner and creator of the model, shall not be held liable for any outcomes resulting from third-party use.

License

Apache License, Version 2.0

Citation

If you find our model useful, we would appreciate if you could cite our work as follows:

@misc{bsclt2025salamandraTAV7b ,
title={salamandra-TAV-7b: a Speech-To-Text Translation model based on an end-to-end Speech LLM for Iberian Languages.},
author={SalamandraTAV Team},
organization={Barcelona Supercomputing Center},
url={https://huggingface.co/langtech-veu/salamandra-TAV-7b},
year={2025}
}