mirror of
https://github.com/dscripka/openWakeWord.git
synced 2026-08-27 18:17:20 -04:00
101 lines
No EOL
5.3 KiB
YAML
101 lines
No EOL
5.3 KiB
YAML
## Configuration file to be used with `train.py` to create custom wake word/phrase models
|
|
|
|
# The name of the model (will be used when creating directoires and when saving the final .onnx and .tflite files)
|
|
model_name: "my_model"
|
|
|
|
# The target word/phrase to be detected by the model. Adding multiple unique words/phrases will
|
|
# still only train a binary model detection model, but it will activate on any one of the provided words/phrases.
|
|
target_phrase:
|
|
- "hey jarvis"
|
|
|
|
# Specific phrases that you do *not* want the model to activate on, outside of those generated automatically via phoneme overlap
|
|
# This can be a good way to reduce false positives if you notice that, in practice, certain words or phrases are problematic
|
|
custom_negative_phrases: []
|
|
|
|
# The total number of positive samples to generate for training (minimum of 20,000 recommended, often 100,000+ is best)
|
|
n_samples: 10000
|
|
|
|
# The total number of positive samples to generate for validation and early stopping of model training
|
|
n_samples_val: 2000
|
|
|
|
# The batch size to use with Piper TTS when generating synthetic training data
|
|
tts_batch_size: 50
|
|
|
|
# The batch size to use when performing data augmentation on generated clips prior to training
|
|
# It's recommended that this not be too large to ensure that there is enough variety in the augmentation
|
|
augmentation_batch_size: 16
|
|
|
|
# The path to a fork of the piper-sample-generator repository for TTS (https://github.com/dscripka/piper-sample-generator)
|
|
piper_sample_generator_path: "./piper-sample-generator"
|
|
|
|
# The output directory for the generated synthetic clips, openwakeword features, and trained models
|
|
# Sub-directories will be automatically created for train and test clips for both positive and negative examples
|
|
output_dir: "./my_custom_model"
|
|
|
|
# The directories containing Room Impulse Response recordings
|
|
rir_paths:
|
|
- "./mit_rirs"
|
|
|
|
# The directories containing background audio files to mix with training data
|
|
background_paths:
|
|
- "./background_clips"
|
|
|
|
# The duplication rate for the background audio clips listed above (1 or higher). Can be useful as a way to oversample
|
|
# a particular type of background noise more relevant to a given deployment environment. Values apply in the same
|
|
# order as the background_paths list above. Only useful when multiple directories are provided above.
|
|
background_paths_duplication_rate:
|
|
- 1
|
|
|
|
# The location of pre-computed openwakeword features for false-positive validation data
|
|
# If you do not have deployment environment validation data, a good general purpose dataset with
|
|
# a reasonable mix with ~11 hours of speech, noise, and music is available here: https://huggingface.co/datasets/davidscripka/openwakeword_features
|
|
false_positive_validation_data_path: "./validation_set_features.npy"
|
|
|
|
# The number of times to apply augmentations to the generated training data
|
|
# Values greater than 1 reuse each generation that many times, producing overall unique
|
|
# clips for training due to the randomness intrinsic to the augmentation despite using
|
|
# the same original synthetic generation. Can be a useful way to increase model robustness
|
|
# without having to generate extremely large numbers of synthetic examples.
|
|
augmentation_rounds: 1
|
|
|
|
# Paths to pre-computed openwakeword features for positive and negative data. Each file must be a saved
|
|
# .npy array (see the example notebook on manually training new models for details on how to create these).
|
|
# There is no limit on the number of files but training speed will decrease as more
|
|
# data will need to be read from disk for each additional file.
|
|
# Also, there is a custom dataloader that uses memory-mapping with loading data, so the total size
|
|
# of the files is not limited by the amount of available system memory (though this will result
|
|
# in decreased training throughput depending on the speed of the underlying storage device). A fast
|
|
# NVME SSD is recommended for optimal performance.
|
|
|
|
feature_data_files:
|
|
"ACAV100M_sample": "./openwakeword_features_ACAV100M_2000_hrs_16bit.npy"
|
|
|
|
# Define the number of examples from each data file per batch. Note that the key names here
|
|
# must correspond to those define in the `feature_data_files` dictionary above (except for
|
|
# the `positive` and `adversarial_negative` keys, which are automatically defined). The sum
|
|
# of the values for each key define the total batch size for training. Initial testing indicates
|
|
# that batch sizes of 1024-4096 work well in practice.
|
|
|
|
batch_n_per_class:
|
|
"ACAV100M_sample": 1024
|
|
"adversarial_negative": 50
|
|
"positive": 50
|
|
|
|
# Define the type of size of the openwakeword model to train. Increasing the layer size
|
|
# may result in a more capable model, at the cost of decreased inference speed. The default
|
|
# value (32) seems to work well in practice for most wake words/phrases.
|
|
|
|
model_type: "dnn"
|
|
layer_size: 32
|
|
|
|
# Define training parameters. The values below are recommended defaults for most applications,
|
|
# but unique deployment environments will likely require testing to determine which values
|
|
# are the most appropriate.
|
|
|
|
# The maximum number of steps to train the model
|
|
steps: 50000
|
|
|
|
# The maximum negative weight and target false positives per hour, used to control the auto training process
|
|
# The target false positive rate may not be achieved, and adjusting the maximum negative weight may be necessary
|
|
max_negative_weight: 1500
|
|
target_false_positives_per_hour: 0.2 |