speech-salamandra-es-en Model Card

speech-salamandra-es-en is a speech-language model built on top of salamandra-7b-instruct. It accepts text and optional speech input and it can perform Automatic Speech Recognition (ASR) and Spoken Question Answering (SQA).

DISCLAIMER: This version of Salamandra can expose intermediate reasoning/transcription text. Use skip_thinking=True in the helper method, or processor.decode_response(..., skip_thinking=True), to display only the final response.

Table of contents


Model Details

Description

speech-salamandra-es-en is a finetuned version of salamandra-7b-instruct coupled with the speech encoder from SeamlessM4T v2. It has been trained to follow general text instructions and to emit an internal thinking sequence followed by the final answer.


Intended Use

The model is intended for both research and commercial use on speech/text instruction-following tasks.


Hardware and Software

Training Framework

The code used to train speech-salamandra-es-en 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

Requirements
To use this model, ensure you have the following Python packages installed:
transformers>=4.51.2, torch, torchaudio, numpy, soundfile

Load the model and processor directly:

import torch
from transformers import AutoModelForCausalLM, AutoProcessor

model = AutoModelForCausalLM.from_pretrained(
  "BSC-LT/speech-salamandra-es-en",
  trust_remote_code=True,
  torch_dtype=torch.bfloat16,
  device_map="auto",
)
processor = AutoProcessor.from_pretrained(
  "BSC-LT/speech-salamandra-es-en",
  trust_remote_code=True,
)

The convenience method returns the generated text. Set skip_thinking=True to remove the leading reasoning/transcription span and keep only the final answer:

import soundfile as sf

audio_path = "/path/to/audio/example.wav"
audio, sr = sf.read(audio_path)
question = "Who is angry in the audio?"

response = model.generate_response(
  processor,
  instruction=question,
  audio=[(audio, sr)],
  max_new_tokens=512,
  skip_thinking=True,
)
print(response)

To inspect the full thinking/transcription sequence, keep skip_thinking=False:

full_response = model.generate_response(
  processor,
  instruction=question,
  audio=[(audio, sr)],
  max_new_tokens=512,
  skip_thinking=False,
)
print(full_response)

For an advanced usage, the generate method can be directly called:

inputs = processor.prepare_inputs(
  instruction=question,
  audio=[(audio, sr)],
  add_generation_prompt=True,
  return_tensors="pt",
).to(model.device)

input_length = inputs["input_ids"].shape[-1]
inputs["input_features"] = inputs["input_features"].unsqueeze(0).to(
  model.device,
  dtype=model.dtype,
)
inputs.pop("audio_attention_mask")
inputs["audio_lengths"] = inputs["audio_lengths"].to(model.device)

outputs = model.generate(**inputs, max_new_tokens=512)
response = processor.decode_response(outputs, input_length=input_length, skip_thinking=True)

Training Data

Global Summary

Data Type Hours Samples
ASR 8289.5h -
SQA 2377h -
IF - 327427

Automatic Speech Recognition (ASR)

Dataset en es Total
Common Voice Corpus 22.0 1762h 494h 2256h
VoxPopuli 501h 149h 650h
Multilingual Librispeech 4466.5h 917h 5383.5h
Total (hours) 6729.5h 1560h 8289.5h

Spoken Question Answering (SQA)

[NOTE] We refer to SQuADv2 as its subset of non-answerable questions. While we refer to SQuAD as the "answerable" subset in its first version.

We have expanded the SQuAD v2 dataset to speech synthesizing the context of each sample using Kyutai's Pocket TTS. To reduce the length of the audios, before synthesizing, we summarize the contexts with Gemma4 31B.

Dataset en es Total
LibriSQA 727h - 727h
SQuAD 576h 525h 1101h
SQuADv2 293h 256h 549h
Total (hours) 1596h 781h 2377h

Instruction Following Data

Although the model we are using as backbone is already insructed, we still add IF data during the training phase in order to avoid catastrophic forgetting. We use a subset of the original IF data used in the training of ALIA-40B-Instruct-2605. This subset is composed of:

Dataset # of samples
WildChat 153392
Aya Dataset 15146
Mentor 12719
Other 39141
Total 220398

Evaluation

Below are the evaluation ASR results on the Common Voice 22.0 and Voxpopuli test sets, and the SQA results on LibriSQA test set and a subset of the SQuAD dataset that we've expanded to synthetic audios. We use as a baseline Voxtral-Mini to compare our model. We report the following metrics:

Click to show metrics details
  • WER: jiwer implementation. Applied the basic normalization from whisper_normalizer before computing WER.
  • BERTScore: bert_score implementation. We report F1 measure.

Automatic Speech Recognition

Common Voice 22.0 Test

Common Voice 22.0 Test

WER

SpeechSalamandra Voxtral
en 9.18 11.21
es 6.67 5.44
Voxpopuli Test

Voxpopuli Test

WER

SpeechSalamandra Voxtral
en 7.78 8.04
es 9.39 6.66

Spoken Question Answering

LibriSQA

LibriSQA

BERTScore

SpeechSalamandra Voxtral
en 0.68 0.54
SQuAD

SQuAD

BERTScore

SpeechSalamandra Voxtral
en 0.65 0.68
es 0.58 0.63

Alternative SQuAD evaluation

For the SQA tasks, the answers include information that is not strictly required by the question. For example:

  • Question: How many authors participated in the paper?
  • Answer: The number of authors participating in the paper is 5.
  • Target Answer: The paper has been written by 5 scientists.

Even though the meaning of both answers is the same, the words used are different. Actually, that is one of the reasons to use BertScore when evaluating this kind of tasks. One way to make this evaluation more robust is to post-edit the output to make the answer as concise as possible. After post-editing, the answers would be something like this:

  • Question: How many authors participated in the paper?
  • Answer: 5.
  • Target Answer: 5.

This practice increases the metrics for both SpeechSalamandra and Voxtral, and make their comparison more focused on “what the model says” and not on “how the model says it”:

SpeechSalamandra Voxtral
en 0.78 0.82
es 0.76 0.75

Additional information

Authors

All the members of the Speech Salamandra Team are members of the AI Institute at the Barcelona Supercomputing Center (BSC).

Contact

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

Copyright

Copyright(c) 2026 by AI Institute, 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 training of the model was possible thanks to the computing time provided by Barcelona Supercomputing Center through MareNostrum 5. We acknowledge EuroHPC Joint Undertaking for awarding us access to MareNostrum5 as BSC, Spain.

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{bsclt2026speechsalamandra7b ,
title={speech-salamandra-es-en: a Speech LLM model for SQA in English and Spanish.},
author={Speech Salamandra Team},
organization={Barcelona Supercomputing Center},
url={https://huggingface.co/BSC-LT/speech-salamandra-es-en},
year={2026}
}
Downloads last month
22
Safetensors
Model size
8B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for BSC-LT/speech-salamandra-es-en

Finetuned
(14)
this model