Skip to content
Showcase/Google Speech Commands: Keyword Spotting Dataset
beginneraudio

Google Speech Commands: Keyword Spotting Dataset

Google Speech Commands is a corpus of one-second spoken-word audio clips for training keyword spotting models (Warden, 2018). This Potato config reproduces the task: annotators play each clip, label the spoken word, and rate audio quality.

About this dataset

Google Speech Commands is an open audio dataset of short spoken words, released by Pete Warden at Google in 2018 (arXiv:1804.03209). It was built to train and evaluate keyword spotting systems, the small always-listening models that detect single trigger words on phones and embedded devices.

The dataset was crowdsourced through a web app and ships in two versions. Version 1 holds about 65,000 utterances across 30 word labels from 1,881 speakers. Version 2 expands this to 105,829 utterances across 35 word labels from 2,618 speakers. Every clip is one second long and recorded at a 16 kHz sample rate.

Keyword spotting treats each clip as a single-label classification problem. The 35 words include 20 core commands (the digits zero through nine plus yes, no, up, down, left, right, on, off, stop, go) and auxiliary words such as bed, bird, cat, and marvin that populate an 'unknown' class. Models learn to map one second of audio to one of these labels or to silence.

The Potato config below reproduces this task as a listen-and-label workflow. Each item plays a one-second clip, a radio scheme captures the spoken command word, and a second scheme records an audio-quality judgment for filtering noisy recordings.

Utterances (v2)
105,829
Utterances (v1)
~65,000
Distinct words
35 (v2) / 30 (v1)
Core command words
20
Clip format
1 second, 16 kHz
Speakers
2,618 (v2) / 1,881 (v1)
1:42Classify this audio:HappySadAngryNeutralSubmit

Configuration Fileconfig.yaml

This Potato config reproduces the annotation task. Save it as config.yaml and run potato start config.yaml to try it.

yaml
# Speech Commands - Keyword Recognition
# Based on Warden, arXiv 2018
# Paper: https://arxiv.org/abs/1804.03209
# Dataset: https://www.tensorflow.org/datasets/catalog/speech_commands
#
# This task asks annotators to listen to short audio clips of spoken commands
# and identify the keyword being spoken. They also assess the audio quality
# to help filter training data.
#
# Command Keywords:
# - Yes, No, Up, Down, Left, Right, On, Off, Stop, Go
# - Unknown: Not one of the target keywords
# - Silence: No speech detected
#
# Audio Quality:
# - Clear: Audio is clean with clearly audible speech
# - Noisy: Background noise present but speech is still identifiable
# - Ambiguous: Speech is unclear or could be multiple words
#
# Annotation Guidelines:
# 1. Listen to the audio clip (replay as needed)
# 2. Label the audio with the spoken command keyword
# 3. Assess the audio quality (Clear, Noisy, or Ambiguous)
# 4. Compare with the expected command shown for reference

annotation_task_name: "Speech Commands - Keyword Recognition"
task_dir: "."

data_files:
  - sample-data.json

item_properties:
  id_key: "id"
  text_key: "text"

output_annotation_dir: "annotation_output/"
output_annotation_format: "json"

port: 8000
server_name: localhost

annotation_schemes:
  - annotation_type: radio
    name: audio_quality
    description: "Assess the quality of the audio clip"
    labels:
      - "Clear"
      - "Noisy"
      - "Ambiguous"
    keyboard_shortcuts:
      "Clear": "1"
      "Noisy": "2"
      "Ambiguous": "3"
    tooltips:
      "Clear": "Audio is clean with clearly audible speech"
      "Noisy": "Background noise is present but speech is still identifiable"
      "Ambiguous": "Speech is unclear or could be interpreted as multiple different words"

  - annotation_type: audio_annotation
    name: command_label
    description: "Label the spoken command in the audio clip"
    mode: "label"
    labels:
      - "Yes"
      - "No"
      - "Up"
      - "Down"
      - "Left"
      - "Right"
      - "On"
      - "Off"
      - "Stop"
      - "Go"
      - "Unknown"
      - "Silence"

annotation_instructions: |
  You will be shown an audio clip containing a short spoken command.
  1. Listen to the audio clip (you may replay it as needed).
  2. Label the audio with the command keyword you hear.
     Use "Unknown" if the word is not one of the target keywords.
     Use "Silence" if no speech is detected.
  3. Assess the audio quality: Clear, Noisy, or Ambiguous.

  The expected command is shown for reference, but your label should
  reflect what you actually hear in the audio.

html_layout: |
  <div style="padding: 15px; max-width: 800px; margin: auto;">
    <div style="background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px; padding: 16px; margin-bottom: 16px; text-align: center;">
      <audio controls style="width: 100%;">
        <source src="{{audio_url}}" type="audio/wav">
        Your browser does not support the audio element.
      </audio>
    </div>
    <div style="background: #fef3c7; border: 1px solid #fde68a; border-radius: 8px; padding: 12px;">
      <strong style="color: #92400e;">Expected Command:</strong>
      <span style="font-size: 16px; color: #78350f;">{{text}}</span>
    </div>
  </div>

allow_all_users: true
instances_per_annotator: 50
annotation_per_instance: 2
allow_skip: true
skip_reason_required: false

Sample Datasample-data.json

json
[
  {
    "id": "cmd_001",
    "text": "Yes",
    "audio_url": "audio/cmd_001.wav"
  },
  {
    "id": "cmd_002",
    "text": "No",
    "audio_url": "audio/cmd_002.wav"
  }
]

// ... and 8 more items

Get This Design

View on GitHub

Clone or download from the repository

Quick start:

git clone https://github.com/davidjurgens/potato-showcase.git
cd potato-showcase/audio/speech-commands-recognition
potato start config.yaml

Dataset & paper

Warden, arXiv 2018

Citation (BibTeX)

bibtex
@article{warden2018speech,
    title = "Speech Commands: A Dataset for Limited-Vocabulary Speech Recognition",
    author = "Warden, Pete",
    journal = "arXiv preprint arXiv:1804.03209",
    year = "2018",
    url = "https://arxiv.org/abs/1804.03209"
}

Details

Annotation Types

radioaudio_annotation

Domain

AudioSpeech

Use Cases

Keyword SpottingSpeech RecognitionAudio Classification

Tags

speech-commandskeyword-recognitionaudiovoicespeech

Found an issue or want to improve this design?

Open an Issue