readme: ---
  language:
  - cs
  license: apache-2.0
  tags:
  - automatic-speech-recognition
  - mozilla-foundation/common_voice_8_0
  - generated_from_trainer
  - robust-speech-event
  - xlsr-fine-tuning-week
  - hf-asr-leaderboard
  datasets:
  - mozilla-foundation/common_voice_8_0
  model-index:
  - name: Czech comodoro Wav2Vec2 XLSR 300M CV8
    results:
    - task:
        name: Automatic Speech Recognition
        type: automatic-speech-recognition
      dataset:
        name: Common Voice 8
        type: mozilla-foundation/common_voice_8_0
        args: cs
      metrics:
      - name: Test WER
        type: wer
        value: 10.3
      - name: Test CER
        type: cer
        value: 2.6
    - task:
        name: Automatic Speech Recognition
        type: automatic-speech-recognition
      dataset:
        name: Robust Speech Event - Dev Data
        type: speech-recognition-community-v2/dev_data
        args: cs
      metrics:
      - name: Test WER
        type: wer
        value: 54.29
    - task:
        name: Automatic Speech Recognition
        type: automatic-speech-recognition
      dataset:
        name: Robust Speech Event - Test Data
        type: speech-recognition-community-v2/eval_data
        args: cs
      metrics:
      - name: Test WER
        type: wer
        value: 44.55
  ---
  <!-- This model card has been generated automatically according to the information the Trainer had access to. You
  should probably proofread and complete it, then remove this comment. -->
  
  # wav2vec2-xls-r-300m-cs-cv8
  
  This model is a fine-tuned version of [facebook/wav2vec2-xls-r-300m](https://huggingface.co/facebook/wav2vec2-xls-r-300m) on the common_voice 8.0 dataset.
  It achieves the following results on the evaluation set while training:
  - Loss: 0.2327
  - Wer: 0.1608
  - Cer: 0.0376
  
  The `eval.py` script results using a LM are:
  WER: 0.10281503199350225
  CER: 0.02622802241689026
  
  ## Model description
  
  Fine-tuned [facebook/wav2vec2-large-xlsr-53](https://huggingface.co/facebook/wav2vec2-large-xlsr-53) on Czech using the [Common Voice](https://huggingface.co/datasets/common_voice) dataset.
  When using this model, make sure that your speech input is sampled at 16kHz.
  
  
  The model can be used directly (without a language model) as follows:
  
  ```python
  import torch
  import torchaudio
  from datasets import load_dataset
  from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
  
  test_dataset = load_dataset("mozilla-foundation/common_voice_8_0", "cs", split="test[:2%]")
  
  processor = Wav2Vec2Processor.from_pretrained("comodoro/wav2vec2-xls-r-300m-cs-cv8")
  model = Wav2Vec2ForCTC.from_pretrained("comodoro/wav2vec2-xls-r-300m-cs-cv8")
  
  resampler = torchaudio.transforms.Resample(48_000, 16_000)
  
  # Preprocessing the datasets.
  # We need to read the aduio files as arrays
  def speech_file_to_array_fn(batch):
  	speech_array, sampling_rate = torchaudio.load(batch["path"])
  	batch["speech"] = resampler(speech_array).squeeze().numpy()
  	return batch
  
  test_dataset = test_dataset.map(speech_file_to_array_fn)
  inputs = processor(test_dataset[:2]["speech"], sampling_rate=16_000, return_tensors="pt", padding=True)
  
  with torch.no_grad():
  	logits = model(inputs.input_values, attention_mask=inputs.attention_mask).logits
  
  predicted_ids = torch.argmax(logits, dim=-1)
  
  print("Prediction:", processor.batch_decode(predicted_ids))
  print("Reference:", test_dataset[:2]["sentence"])
  ```
  
  ## Evaluation
  
  The model can be evaluated using the attached `eval.py` script:
  ```
  python eval.py --model_id comodoro/wav2vec2-xls-r-300m-cs-cv8 --dataset mozilla-foundation/common-voice_8_0 --split test --config cs
  ```
  
  ## Training and evaluation data
  
  The Common Voice 8.0 `train` and `validation` datasets were used for training
  
  ## Training procedure
  
  ### Training hyperparameters
  
  The following hyperparameters were used during first stage of training:
  
  - learning_rate: 7e-05
  - train_batch_size: 32
  - eval_batch_size: 8
  - seed: 42
  - gradient_accumulation_steps: 20
  - total_train_batch_size: 640
  - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  - lr_scheduler_type: linear
  - lr_scheduler_warmup_steps: 500
  - num_epochs: 150
  - mixed_precision_training: Native AMP
  
  The following hyperparameters were used during second stage of training:
  
  - learning_rate: 0.001
  - train_batch_size: 32
  - eval_batch_size: 8
  - seed: 42
  - gradient_accumulation_steps: 20
  - total_train_batch_size: 640
  - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  - lr_scheduler_type: linear
  - lr_scheduler_warmup_steps: 500
  - num_epochs: 50
  - mixed_precision_training: Native AMP
  
  ### Training results
  
  | Training Loss | Epoch  | Step | Validation Loss | Wer    | Cer    |
  |:-------------:|:------:|:----:|:---------------:|:------:|:------:|
  | 7.2926        | 8.06   | 250  | 3.8497          | 1.0    | 1.0    |
  | 3.417         | 16.13  | 500  | 3.2852          | 1.0    | 0.9857 |
  | 2.0264        | 24.19  | 750  | 0.7099          | 0.7342 | 0.1768 |
  | 0.4018        | 32.25  | 1000 | 0.6188          | 0.6415 | 0.1551 |
  | 0.2444        | 40.32  | 1250 | 0.6632          | 0.6362 | 0.1600 |
  | 0.1882        | 48.38 