readme: ---
  license: apache-2.0
  language: en
  tags:
  - generated_from_trainer
  datasets:
  - speech_commands
  metrics:
  - accuracy
  model-index:
  - name: wav2vec2-conformer-rel-pos-large-finetuned-speech-commands
    results:
    - task:
         type: audio-classification
         name: audio classification
      dataset: 
        type: speech_commands
        name: speech_commands
        split: v0.02
      metrics:
      - type: accuracy
        value: 0.9724
        name: accuracy
  ---
  
  # wav2vec2-conformer-rel-pos-large-finetuned-speech-commands
  
  ### Model description
  
  This model is a fine-tuned version of [facebook/wav2vec2-conformer-rel-pos-large](https://huggingface.co/facebook/wav2vec2-conformer-rel-pos-large) on the [speech_commands](https://huggingface.co/datasets/speech_commands) dataset.
  
  It achieves the following results on the evaluation set:
  - Loss: 0.5245
  - Accuracy: 0.9724
  
  #### Intended uses & limitations
  
  The model can spot one of the following keywords: "Yes", "No", "Up", "Down", "Left", "Right", "On", "Off", "Stop", "Go", "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Bed", "Bird", "Cat", "Dog", "Happy", "House", "Marvin", "Sheila", "Tree", "Wow", "Backward", "Forward", "Follow", "Learn", "Visual".
  
  The repository includes sample files that I recorded (WAV, 16Khz sampling rate, mono). The simplest way to use the model is with the ```pipeline``` API:
  
  ```
  >>> from transformers import pipeline
  >>> p = pipeline("audio-classification", model="juliensimon/wav2vec2-conformer-rel-pos-large-finetuned-speech-commands")
  >>> p("up16k.wav")
  [{'score': 0.7008192539215088, 'label': 'up'}, {'score': 0.04346614331007004, 'label': 'off'}, {'score': 0.029526518657803535, 'label': 'left'}, {'score': 0.02905120886862278, 'label': 'stop'}, {'score': 0.027142534032464027, 'label': 'on'}]
  >>> p("stop16k.wav")
  [{'score': 0.6969656944274902, 'label': 'stop'}, {'score': 0.03391443192958832, 'label': 'up'}, {'score': 0.027382319793105125, 'label': 'seven'}, {'score': 0.020835857838392258, 'label': 'five'}, {'score': 0.018051736056804657, 'label': 'down'}]
  >>> p("marvin16k.wav")
  [{'score': 0.5276530981063843, 'label': 'marvin'}, {'score': 0.04645705968141556, 'label': 'down'}, {'score': 0.038583893328905106, 'label': 'backward'}, {'score': 0.03578080236911774, 'label': 'wow'}, {'score': 0.03178196772933006, 'label': 'bird'}]
  ```
  
  You can also use them with the ```Auto```API:
  
  ```
  >>> import torch, librosa
  >>> from transformers import AutoModelForAudioClassification, Wav2Vec2FeatureExtractor
  >>> feature_extractor = Wav2Vec2FeatureExtractor()
  >>> model = AutoModelForAudioClassification.from_pretrained("juliensimon/wav2vec2-conformer-rel-pos-large-finetuned-speech-commands")
  >>> audio, rate = librosa.load("up16k.wav", sr = 16000)
  >>> inputs = feature_extractor(audio, sampling_rate=16000, return_tensors = "pt")
  >>> logits = model(inputs['input_values'])
  >>> logits
  SequenceClassifierOutput(loss=None, logits=tensor([[-0.4635, -1.0112,  4.7935,  0.8528,  1.6265,  0.6456,  1.5423,  2.0132,
            1.6103,  0.5847, -2.2526,  0.8839,  0.8163, -1.5655, -1.4160, -0.4196,
           -0.1097, -1.8827,  0.6609, -0.2022,  0.0971, -0.6205,  0.4492,  0.0926,
           -2.4848,  0.2630, -0.4584, -2.4327, -1.1654,  0.3897, -0.3374, -1.2418,
           -0.1045,  0.2827, -1.5667, -0.0963]], grad_fn=<AddmmBackward0>), hidden_states=None, attentions=None)
  >>> classes = torch.softmax(logits.logits, dim=1)
  >>> torch.set_printoptions(precision=3, sci_mode=False)
  >>> classes
  tensor([[    0.004,     0.002,     0.701,     0.014,     0.030,     0.011,
               0.027,     0.043,     0.029,     0.010,     0.001,     0.014,
               0.013,     0.001,     0.001,     0.004,     0.005,     0.001,
               0.011,     0.005,     0.006,     0.003,     0.009,     0.006,
               0.000,     0.008,     0.004,     0.001,     0.002,     0.009,
               0.004,     0.002,     0.005,     0.008,     0.001,     0.005]],
         grad_fn=<SoftmaxBackward0>)
  >>> top_class = torch.argmax(logits.logits, dim=1)
  >>> top_class
  tensor([2])
  >>> model.config.id2label[top_class.numpy()[0]]
  'up'
  ```
  
  ### Training and evaluation data
  
  - subset: v0.02
  - full training set
  - full validation set
  
  ### Training procedure
  
  The model was fine-tuned on [Amazon SageMaker](https://aws.amazon.com/sagemaker), using an [ml.p3dn.24xlarge](https://aws.amazon.com/fr/ec2/instance-types/p3/) instance (8 NVIDIA V100 GPUs). Total training time for 10 epochs was 4.5 hours.
  
  #### Training hyperparameters
  
  The following hyperparameters were used during training:
  - learning_rate: 3e-05
  - train_batch_size: 256
  - eval_batch_size: 256
  - seed: 42
  - gradient_accumulation_steps: 4
  - total_train_batch_size: 1024
  - optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
  - lr_scheduler_type: linear
  - lr_scheduler_warmup_ratio: 0.1
  - num_epochs: 10
  
  #### Training results
  
  | Training Loss | Epoch | Step | Validation Loss | Accuracy |
  |:-------------:|:-----:|:----:|:---------------:|:--------:|
  | 2.290