Downloads · 30 days
0
abdel-lall-31/robot-arm-voice-command-classifier
robot-arm-voice-command-classifier is a audio classification model from abdel-lall-31. Use it for the audio classification task on the model card, and read the license before you ship it in a product.
A small speech-classification project built to recognize five voice commands plus a nocommand class from 3-second audio clips.
Downloads · 30 days
0
Access
Public
Updated Aug 22, 2026
Repo size
933 MB
Likes
0
Public
Click a slice to open those files.
.wav947 MB · 98%
From the Hugging Face model README
A small speech-classification project built to recognize five voice commands plus a no_command class from 3-second audio clips.
The final model uses a frozen HuBERT encoder (facebook/hubert-base-ls960) to extract frame-level speech representations, followed by an LSTM classifier for temporal command detection.
| Class | Spoken command |
|---|---|
command_1 | get ready |
command_2 | load |
command_3 | left |
command_4 | right |
command_5 | shoot |
no_command | background / non-command audio |
The published dataset includes:
The final synthetic dataset contains 10,400 clips:
Audio is processed at 16 kHz with a fixed duration of 3 seconds.
The model pipeline is:
3-second audio
↓
HuBERT Base
(frozen encoder)
↓
149 × 768 frame representations
↓
Layer Normalization
↓
LSTM (128 units)
↓
Dense layer
↓
6-class frame logits
HuBERT is not fine-tuned in this project. It is used as a frozen feature encoder while the downstream LSTM classifier is trained.
The final deployment configuration was selected after temperature and class-specific threshold tuning.
Thresholds and minimum consecutive-frame requirements are different for each command and are documented in the training and inference notebooks.
Install the dependencies:
pip install -r requirements.txt
Open:
notebooks/04_single_audio_inference.ipynb
Then change:
AUDIO_PATH = Path("your_3_second_audio.wav")
The notebook will:
The pretrained HuBERT files are downloaded automatically from Hugging Face the first time the model is loaded.
The notebooks follow the original experiment pipeline:
01_data_synthesis_and_split.ipynb
↓
02_hubert_frame_label_preprocessing.ipynb
↓
03_hubert_lstm_training_evaluation_and_tuning.ipynb
↓
04_single_audio_inference.ipynb
Creates reproducible source splits and generates the synthetic 3-second dataset.
Creates frame-level labels and weights aligned with HuBERT's 149 output frames.
Contains the final V4 training run, test evaluation, temperature scaling, threshold tuning, and saved results.
Loads the trained model and runs inference on one WAV recording.
robot-arm-voice-command-classifier/
├── README.md
├── requirements.txt
├── LICENSE
├── data/
│ ├── source_commands/
│ ├── source_backgrounds/
│ ├── source_splits/
│ ├── synthetic_trigger_data/
│ └── processed/
├── notebooks/
│ ├── 01_data_synthesis_and_split.ipynb
│ ├── 02_hubert_frame_label_preprocessing.ipynb
│ ├── 03_hubert_lstm_training_evaluation_and_tuning.ipynb
│ └── 04_single_audio_inference.ipynb
├── model/
│ └── best_model.weights.h5
└── results/
├── training/
├── test_forward_pass/
├── temperature_tuning/
├── threshold_tuning/
└── evaluation/
The training and evaluation notebooks preserve the outputs from the original experiment. The final training run was computationally expensive, so the notebooks were cleaned for publication without rerunning the training process.
Because the saved outputs come from the original run, some printed log paths may still show the original local project directories. The executable notebook code uses the public repository structure shown above.
This project is intended as a portfolio and research demo for small-vocabulary speech-command classification. It is not designed as a general-purpose speech-recognition system.