alt.freeweights.speech / paza-whisper-large-v3-turbo
From: microsoft <huggingface.co/microsoft>Newsgroups: alt.freeweights.speechSubject:

paza-whisper-large-v3-turbo

Date: 2026-11-15Commit: 8a0bd24Signed: 2DC28CC7B26A283B ✓

Automatic speech recognition model with 809M parameters. Safetensors weights, 6.47 GB in all. Published by microsoft under MIT.

809M params6.47GBpaza-whisper-large-v3-turbosafetensorspermissive
FactsParams809MSize6.47 GBFormatssafetensorsTaskautomatic speech recognitionLicenseMITFrom sourcepermissive
$ fw get microsoft/paza-whisper-large-v3-turbo
# manifest sha256 36393566d069… · 6.47 GB · 18 files
$ fw verify ./paza-whisper-large-v3-turbo microsoft/paza-whisper-large-v3-turbo
From sourceHosted (signed)microsoft/paza-whisper-large-v3-turboLast check: 2026-11-15 03:32 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of whisper-large-v3-turbo.

Works with

Overview

Size
6.47 GB
Weights
3.24 GB (safetensors)
Parameters
809M
Formats
safetensors
Task
automatic speech recognition
License
MIT (permissive)
Files
18, each with a sha256
Publisher
microsoft
Added
2026-11-15
Section
alt.freeweights.speech
Lineage

Original release from the publisher.

Base model: openai/whisper-large-v3-turbo

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 03:32 UTCpassed

Model card

From the publisher at commit 8a0bd24. Shown as plain text with links; images open at the publisher.

paza-whisper-large-v3-turbo#

Model Details#

This model is a fine-tuned version of the openai/whisper-large-v3-turbo model finetuned for automatic speech recognition (ASR) in several Kenyan languages, including Swahili, Kalenjin, Kikuyu, Luo, Maasai and Somali. Whisper is a transformer-based encoder-decoder model that converts raw audio into text. The encoder processes audio inputs as log-Mel spectrograms, capturing acoustic and linguistic features, while the decoder generates text tokens in an autoregressive manner. This design allows the model to handle diverse languages, accents, and noise conditions with strong generalization.

Fine-tuning was performed on the entire unified multilingual ASR dataset, which includes the mentioned six languages, to encourage cross-lingual generalization. The fine-tuning process involved continued supervised training on labeled audio-text pairs, adjusting all the model’s parameters to better capture the phonetic and linguistic patterns unique to them. As a result, this model provides improved transcription accuracy for low-resource speech recognition tasks while maintaining Whisper’s robustness and efficiency.

Alignment approach#

Click to view details

Traditional alignment measures are not applicable for this model because it does not generate new content; its primary function is to transcribe speech to text. In this context, alignment is best approximated by accuracy—the degree to which the transcription reflects the original spoken input.

Generative risks such as hallucination, harmful content are not applicable because the model does not create novel text or interpret meaning beyond transcription.

The post-training alignment process for this model focused on ensuring that transcriptions are reliable, consistent, and safe for downstream use in the specific language context. Supervised fine-tuning was performed on a multi-domain dataset of speech-text pairs in the mentioned languages, covering conversational, instructional, and broadcast speech to enhance robustness to diverse accents, noise conditions, and domains. No additional filtering for harmful or offensive content was applied during data preparation, because the focus was on capturing the full range of natural language use in a low-resource setting.

To align the model to the target ASR task, the training strategy included standard supervised learning with cross-entropy loss on the token level, followed by iterative validation monitoring using Word Error Rate (WER) and Character Error Rate (CER) metrics.

For safety considerations, refer to the Responsible AI section below. Additional performance metrics and evaluation results are provided in the Evaluation section.

Usage#

Click to view details

Primary Use Cases#

This model is designed for automatic speech recognition (ASR) across a wide range of already supported languages plus software and audio conditions and with additional support for Swahili, Kalenjin, Kikuyu, Luo, Maasai and Somali. This model is being shared with the research community to facilitate reproduction of our results and foster further research in this area.

Out-of-Scope Use Cases#

It is not intended for automated decision-making, or any use cases that require understanding beyond transcription, and care should be taken to avoid applications where misinterpretation of speech could have safety or legal consequences.

This model is not specifically designed or evaluated for all downstream purposes and has not been evaluated on any other tasks besides speech recognition in the six languages mentioned above.

Developers should consider common limitations of language models and multimodal models, as well as performance difference across languages, as they select use cases, and evaluate and mitigate for accuracy, safety, and fairness before using within a specific downstream use case, particularly for high-risk scenarios. Developers should be aware of and adhere to applicable laws or regulations (including but not limited to privacy, trade compliance laws, etc.) that are relevant to their use case.

We do not recommend using this model in commercial or real-world applications without further testing and development. It is being released for research purposes.

Data overview#

Training Data#

The model was finetuned on the Africa Next Voices Kenya, DigiGreen Kikuyu, a proprietary Kikuyu dataset and the Swahili split of the Mozilla Common Voice dataset.

Due to the model’s maximum input length of 448 tokens, audio samples exceeding this limit were discarded during tokenization. Performance in each language correlates strongly with the amount of training data available for that language.

Data distribution by language#

Image: alt text Figure 1: Data distribution by language

Training Procedure#

Click to view details

The model was finetuned in a full-precision floating-point setup using a streaming data pipeline. A custom trainer was used to cycle through batches from different datasets, enabling mixed-language training (e.g., one batch Swahili, the next Kalenjin, etc.). A weighted random sampler was applied within the dataset generator to maintain language balance. Multi-GPU training was ochestrated using accelerate on 8×A100 (40GB) GPUs. Data preprocessing followed the same steps outlined in the Whisper finetuning guide.

Since the base Whisper model supports only one of the six languages, we extended the tokenizer to new language tokens and resized the input embeddings so the new tokens could be trained and used for inference.

from transformers import WhisperTokenizer, WhisperForConditionalGeneration

# Load model + tokenizer
model_name = "openai/whisper-large-v3-turbo"
tokenizer = WhisperTokenizer.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)

# Prepare the new language token
lang_code = "unsupported-language-code"
lang_token = f"<|{lang_code}|>"

vocab_len_before = len(tokenizer)

# Add token only if it doesn't already exist
existing_vocab = tokenizer.get_vocab()
if lang_token not in existing_vocab:
    tokenizer.add_tokens([lang_token])
    token_id = tokenizer.convert_tokens_to_ids(lang_token)

    # Ensure it wasn't mapped to the unknown token
    if token_id == tokenizer.unk_token_id:
        raise ValueError(f"Failed to add language token {lang_token}")

    # Resize embeddings to match tokenizer size
    model.resize_token_embeddings(len(tokenizer))

vocab_len_after = len(tokenizer)
vocab_delta = vocab_len_after - vocab_len_before
print(f"Vocabulary size changed by +{vocab_delta} (from {vocab_len_before} to {vocab_len_after}).")
Training Hyperparameters#

Click to view details

HyperparameterValue
Precisionfp32
OptimizerAdamW
Learning Rate1e-5
LR SchedulerLinearLR
Warmup Ratio0.2
Weight Decay0.01
Gradient Clipping1.0
Training Batch Size4
Gradient Accumulation Steps2
Effective Global Batch Size64
Number of Training Steps40,000

Quality and performance evaluation#

These are the results from the test splits of all the datasets mentioned in the data distribution chart as of December 08, 2025. Because the training data is imbalanced across languages (see the data distribution chart), gains correlate with data volume.

The fine-tuned model demonstrates significant improvements in both Word Error Rate (WER) and Character Error Rate (CER) across multiple languages compared to the base model. Overall, the fine-tuned model consistently outperforms the base across languages, with variance reflecting the underlying language distribution.

Note: The Kikuyu evaluation results are computed using the test splits of all Kikuyu datasets listed above, including the proprietary dataset.

Character Error Rate Comparison Across languages#

Image: CER Comparison Figure 3: Character Error Rate (CER) comparison across the six languages for the base model versus the finetuned model. Lower CER indicates better transcription performance.

Word Error Rate Comparison Across languages#

Image: WER Comparison Figure 2: Word Error Rate (WER) comparison across the six languages for the base model versus the finetuned model. Lower CER indicates better transcription performance.

Comparison Across SOTA models#

We benchmarked our fine-tuned models against 3 state-of-the-art models - Meta’s facebook/omniASR-LLM-7B, facebook/mms-1b-all and OpenAI's openai/whisper-large-v3-turbo. This set provides a balanced comparison across large‑scale multi-lingual, low‑resource, and leading ASR models

Image: alt text Figure 4: Character Error Rate (CER) comparison across the Kenyan languages for several state‑of‑the‑art ASR models including the Paza models. Lower CER indicates better transcription performance.

Image: alt text Figure 5: Word Error Rate (WER) comparison across the Kenyan languages for several state‑of‑the‑art ASR models including the Paza models. Lower CER indicates better transcription performance.

Technical requirements and integration guidance#

Click to view details

To transcribe audio samples, the model has to be used alongside a WhisperProcessor.

The WhisperProcessor is used to:

  1. Pre-process the audio inputs (converting them to log-Mel spectrograms for the model)
  2. Post-process the model outputs (converting them from tokens to text)

The model is informed of which task to perform (transcription or translation) by passing the appropriate "context tokens". These context tokens are a sequence of tokens that are given to the decoder at the start of the decoding process, and take the following order:

  1. The transcription always starts with the <|startoftranscript|> token
  2. The second token is the language token (e.g. <|sw|> for Swahili)
  3. The third token is the "task token". It can take one of two values: <|transcribe|> for speech recognition or <|translate|> for speech translation, however, the translation capability was neither modified nor evaluated during fine-tuning.
  4. The fourth token, a <|notimestamps|> token is added if the model should not include timestamp prediction
  5. Finally, our customization, <|endoftext|> token to terminate generation.

Thus, a typical sequence of context tokens might look as follows:

<|startoftranscript|> <|kik|> <|transcribe|> <|notimestamps|> <|endoftext|>

Which tells the model to decode in Kikuyu, under the task of speech recognition, and not to predict timestamps.

Post-processing: Hallucination Mitigation#

To reduce occasional trailing hallucinations or repetitive loops observed with Whisper-style decoders, we apply a post-processing truncation technique that constrains output length based on audio duration:

  • A words-per-second (WPS) ratio is calibrated per language/dataset via grid search (0.5–8.0 WPS), selecting the value that minimizes WER on labeled validation data.
  • After inference completes, the predicted text is dynamically truncated at the word level using max_words = audio_duration × WPS - any words beyond this limit are removed.
  • An optional repetition detection pass scans for repeated 5–8 word phrases and escalating repetition patterns. When high-confidence repetition is detected, truncation occurs earlier to remove likely hallucinations.

This approach is applied entirely at post-processing time without modifying the model weights or decoding parameters. In practice, it reduces hallucinated trailing text while preserving valid speech content.

Input formats#

The model accepts audio inputs in common formats such as WAV, MP3, FLAC, and OGG. Inputs can be provided as raw bytes, file paths, or as Hugging Face datasets Audio features. The preferred sampling rate is 16 kHz, and mono-channel audio is recommended for best results. The model does not require structured prompts; it directly transcribes the provided audio into text, with a language selected or through automatic language recognition by the model.

Example usage includes passing an audio file path or raw bytes, which the preprocessing function converts into a suitable numpy array and the model returns a text output in form of a transcription.

How to Get Started with the Model#

Use the code below to get started with the model.

  • The model is supported in Hugging Face Transformers. To run it, first install the Transformers library.
  • For this example, we also install Datasets to load a toy audio dataset from the Hugging Face Hub.
import torch
from transformers import AutoModelForSpeechSeq2Seq, AutoProcessor
from datasets import Audio, load_dataset

device = "cuda:0" if torch.cuda.is_available() else "cpu"

model_id = "microsoft/paza-whisper-large-v3-turbo"

model = AutoModelForSpeechSeq2Seq.from_pretrained(
    model_id).to(device)

processor = AutoProcessor.from_pretrained(model_id)

dataset = load_dataset("google/fleurs", "luo_ke", split="train", streaming=True)
dataset = dataset.cast_column("audio", Audio(processor.feature_extractor.sampling_rate))

sample = next(iter(dataset))
audio = sample["audio"]

inputs = processor(
    audio["array"],
    sampling_rate=audio["sampling_rate"],
    return_tensors="pt",
    padding="max_length",
    truncation=True,
)
inputs = inputs.to(device, dtype=dtype)

pred_ids = model.generate(**inputs)
pred_text = processor.batch_decode(
    pred_ids,
    skip_special_tokens=True,
    decode_with_timestamps=False,    
    language="luo",  # Language codes:
                        # Kikuyu = "kik", Dholuo = "luo", Kalenjin = "kln",
                        # Maasai = "mas", Somali = "som", Swahili = "sw"
    task="transcribe",
    suppress_tokens=[],
    length_penalty=0.8,
    early_stopping=True,
    num_beams=5
)

print(pred_text)

Responsible AI considerations#

Click to view details

While efforts have been made to optimize the ASR model’s performance through various techniques, it may still produce outputs that are unexpected, biased, or inaccurate. The ASR model may inherit biases, errors, or omissions present in its base model. See the Whisper model card for more details.

Users are responsible for sourcing their audio inputs legally. This could include securing appropriate rights, ensuring consent for use of audio, and/or the anonymization of data prior to use in research.

Developers should be aware of and adhere to applicable laws or regulations (including but not limited to privacy, trade compliance laws, etc.) that are relevant to their use case.

Long context#

Click to view details

This model supports input sequences of up to 448 tokens. Audio inputs that exceed this token limit must be segmented into smaller chunks prior to transcription. Consequently, processing long-form audio requires a chunking or streaming pipeline, and the model is not suitable for single-pass transcription of inputs that exceed the maximum token length.

Safety evaluation and red-teaming#

Click to view details

Techniques, it may still produce outputs that are unexpected, biased, or inaccurate. The ASR model may inherits any biases, errors, or omissions present in its base model, Whisper. For details on any safety testing or guidance related to Whisper, please refer to its original model card: https://huggingface.co/openai/whisper-large-v2#broader-implications

Whisper’s capabilities are limited to Automatic Speech Recognition (ASR) and translation. Our fine-tuning process was restricted to ASR functionality and did not modify or extend the translation capability. This model is designed exclusively for automatic speech recognition (ASR) and translation and it does not generate new content, respond to prompts, or exhibit autonomous decision-making. As such:

No Generative Capabilities#

Red teaming and safety evaluations are primarily intended for models that produce novel outputs (e.g., text generation, image synthesis), where risks include harmful, biased, or unsafe content. ASR and translation models do not create net new content; they transcribe or translate existing speech verbatim.

Inappropriate language#

Any inappropriate or harmful language in the transcription originates from the source audio, not from the model. Mitigation of such risks falls under downstream content moderation systems, not ASR functionality.

No Adversarial Prompting Scenario#

Red teaming typically probes for vulnerabilities in prompt-based systems. ASR models do not accept prompts or instructions; therefore, adversarial testing for jailbreaks or unsafe completions is irrelevant.

For these reasons, formal safety evaluation and red teaming are not applicable to this ASR model. Instead, quality assurance focuses on accuracy metrics (see Quality and performance evaluation section).

Contact#

Requests for additional information may be directed to

Authorized representative: Microsoft Ireland Operations Limited 70 Sir John Rogerson’s Quay, Dublin 2, D02 R296, Ireland 

MSFTAIActRequest@microsoft.com

Files

18 files · 6.47 GBWeights 3.24 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 18 files with their sha256
FileSizesha256
.gitattributes1.94 KBbdf09cc3baa35afdd16c4838fc150e3380e156456d613643f0d62a8a4c172a0f
README.md19.2 KB51ed5dcfae2c46f841d244272c945cd676f8202b43fe833bead5e8920ef19951
added_tokens.json34.7 KBf857393a5af6f80864940e751fd640ba0b1e92c6a3f6c0d9860c2f661e0907ba
config.json1.34 KB527f51b170e3888ddaaefa66b77b0eeea5530f0271da54d2fef765e5fa6e39cb
figures/language_distribution.png89.7 KB715e50348055ad4aa68be1e74f7b855c3eea26efdabbc0cd2fc7f2a98992a857
figures/overall_cer_grouped_sorted.png230 KB6798fb58832f6a01cbb234a230b57426861e9b38efe76e887093047331e73d42
figures/overall_wer_grouped_sorted.png261 KB389fcd5d4b6951e955a96d3d97be441f87ead09fe46219d00e3401a3dbf1b59f
figures/whisper_cer_comparison.png185 KBccf8d63f30573481356e7ed65a9bf9f78288d79eb0b47f819f17c9a6750b6546
figures/whisper_wer_comparison.png184 KB6033f132484e70b65b75c804eb4f1d6f253b408a940ad2bac9aac1d1bd6fe1dc
generation_config.json2.94 KBe1c51c7b9213420c65d9b7427026c365bf7f727e1e17a8d2984130502c6fdfa4
merges.txt494 KB2df2990a395e35e8dfbc7511e08c12d56018d8d04691e0133e5d63b21e154dc6
model.safetensors3.24 GBff577f03b2c568ff0c49ff0a6c69278d996e6a95e7fde439d1dad52a67fa171e
normalizer.json52.7 KBbf1c507dc8724ca9cf9903640dacfb69dae2f00edee4f21ceba106a7392f26dd
preprocessor_config.json340 B7ccc62c6f2765af1f3b46c00c9b5894426835a05021c8b9c01eecb6dfb542711
pytorch_model.bin3.24 GBbe3690f8132cbab1858c00875dbde4c7e2f91ef0c2ede853e6c854959bb5feaa
special_tokens_map.json2.19 KBbaea4ea09372eb4fca86b4e4346139fd73cb807d5087e9de0948e971739c3e74
tokenizer_config.json284 KBb66c0af7f7fbade6b98c10d9d53bd2578b51870199f1f515b1980ba46ff178b5
vocab.json1.04 MBe2aa043ef015641d363d8288e7c241c85e36a5c761fb303598e0710233344387
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
8a0bd24795 pinned now2026-11-15 03:32 UTC18 files · 6.47 GB

Use it

$ fw get microsoft/paza-whisper-large-v3-turbo
# manifest sha256 36393566d069… · 6.47 GB · 18 files
$ fw verify ./paza-whisper-large-v3-turbo microsoft/paza-whisper-large-v3-turbo
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/microsoft/paza-whisper-large-v3-turbo.json --dir ./paza-whisper-large-v3-turbo $ python3 fw.py verify ./paza-whisper-large-v3-turbo ./microsoft__paza-whisper-large-v3-turbo.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download microsoft/paza-whisper-large-v3-turbo --revision 8a0bd24795b298b2f3678fcd8129c0a1c2b4ee22 --local-dir ./paza-whisper-large-v3-turbo
transformersSpeech recognition with the transformers pipeline.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import pipeline asr = pipeline("automatic-speech-recognition", model="microsoft/paza-whisper-large-v3-turbo", revision="8a0bd24795b298b2f3678fcd8129c0a1c2b4ee22") print(asr("audio.wav")["text"])

License

Name
MIT License
Id
MIT
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
README.md
Text sha256
51ed5dcfae2c46f841d244272c945cd676f8202b43fe833bead5e8920ef19951
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: microsoft <huggingface.co/microsoft>Newsgroups: alt.freeweights.speechSubject: paza-whisper-large-v3-turboDate: 2026-11-15Commit: 8a0bd24Signed: 2DC28CC7B26A283B ✓
Upstream
microsoft/paza-whisper-large-v3-turbo
Pinned commit
8a0bd24795b298b2f3678fcd8129c0a1c2b4ee22
Manifest
paza-whisper-large-v3-turbo.json · .minisig
Manifest sha256
36393566d0695108b4aa49384b39d5c30b6c423e4b831b919f95be2e7b85b866
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 03:32 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/microsoft/paza-whisper-large-v3-turbo.json $ curl -O https://freeweights.allternit.com/manifests/microsoft/paza-whisper-large-v3-turbo.json.minisig $ minisign -Vm paza-whisper-large-v3-turbo.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

openai/whisper-large-v3-turbo · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download microsoft/paza-whisper-large-v3-turbo
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. paza-whisper-large-v3-turbo.json. Provenance. Takedown history: none.
From: MIT <huggingface.co/MIT>Subject: ast-finetuned-audioset-10-10-0.4593
From: onnx-community <huggingface.co/onnx-community>Subject: ast-finetuned-audioset-10-10-0.4593-ONNX
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Preview-0.6b
From: Edge0 <huggingface.co/Edge0>Subject: Audio8-TTS-Realistic-Air
From: facebook <huggingface.co/facebook>Subject: audiobox-aesthetics
From: mlx-community <huggingface.co/mlx-community>Subject: chatterbox-4bit