Jarbas commited on
Commit
8a8e121
·
verified ·
1 Parent(s): 260a62f

Calibrated int8 wake-up models in Spanish, German, Dutch and Italian

Browse files
README.md CHANGED
@@ -3,6 +3,10 @@ license: apache-2.0
3
  library_name: onnx
4
  language:
5
  - en
 
 
 
 
6
  tags:
7
  - wake-word
8
  - keyword-spotting
@@ -34,12 +38,16 @@ datasets:
34
  - TigreGotico/synthetic-wakeword-hey_k9
35
  - TigreGotico/synthetic-wakeword-hey_scout
36
  - TigreGotico/not-wake-words-speech-en
 
 
 
 
37
  pipeline_tag: audio-classification
38
  ---
39
 
40
  # WakeHuBERT wake words
41
 
42
- Ready English wake-word models for [OpenVoiceOS](https://openvoiceos.org), trained with
43
  [wakeforge](https://github.com/TigreGotico/wakeforge). Each model is a small GRU classifier that reads
44
  features from [WakeHuBERT tiny](https://huggingface.co/TigreGotico/wakehubert-tiny), a 0.64M-parameter speech
45
  feature extractor distilled from HuBERT-base. A model scores the last 1.5 s of audio (75 feature frames) and
@@ -78,6 +86,10 @@ its own ONNX metadata (`wake_word`, `pretrained_featurizer`, `default_threshold`
78
  | `wakehubert_hey_stemcom` | hey stemcom | wakehubert-int8 | yes | 0.28 |
79
  | `wakehubert_computer` | computer | wakehubert (float32) | no | 0.99 |
80
  | `wakehubert_hey_mycroft` | hey mycroft | wakehubert-int8 | yes | 0.18 |
 
 
 
 
81
 
82
  ## Use with OpenVoiceOS
83
 
@@ -207,10 +219,14 @@ false activations are counted per hour of negative audio.
207
  | `wakehubert_hey_potato` | 88.9% | 0.34 | 80.6% | 0.02 | 360 clips in held-out edge-tts voices only, without OmniVoice test clips |
208
  | `wakehubert_hey_stemcom` | 89.0% | 0.21 | 83.1% | 0.06 | 337 clips of OmniVoice and held-out edge-tts voices |
209
  | `wakehubert_hey_mycroft` | 97.4% | 1.57 | 84.8% | 0.24 | 285 clips in held-out edge-tts voices and 379 Kokoro clips converted to unseen speakers |
 
 
 
 
210
 
211
  The false activations are counted over 46.5 h of negative audio (speech, non-speech and household audio). The
212
  held-out synthetic voices are text-to-speech voices that no training clip uses, converted to the voices of
213
- speakers who appear in no training clip. No figures are published for the uncalibrated model.
214
 
215
  ## Training data
216
 
@@ -222,6 +238,8 @@ multi-engine, edge-tts and Piper (LibriTTS-R speakers) clips of its dataset and
222
  datasets listed above. Speech from LibriSpeech train-clean-100 is mixed into training clips as background babble.
223
  The negatives are the wakeforge negative list and half of an AudioSet noise sample; the other half is held out.
224
 
 
 
225
  `wakehubert_computer` was trained on synthetic speech only, from `TigreGotico/synthetic-wakeword-computer`, with
226
  negatives from `TigreGotico/not-wake-words-speech-en` and AudioSet-derived clips.
227
 
@@ -234,7 +252,7 @@ the calibrated scale. The fitted slope and offset are in each model's `calib_a`
234
 
235
  ## Limitations
236
 
237
- - Sixteen of the twenty-three calibrated models are scored on held-out synthetic voices, so recall on real speech can
238
  be lower for those words. `wakehubert_jarvis` and `wakehubert_alexa` are scored on the Picovoice recordings,
239
  `wakehubert_hey_chatterbox` and `wakehubert_hey_floyd` on OVOS community recordings, and `wakehubert_marvin`,
240
  `wakehubert_sheila` and `wakehubert_stop` on Speech Commands, all real speakers.
@@ -253,7 +271,9 @@ the calibrated scale. The fitted slope and offset are in each model's `calib_a`
253
  sometimes on "hey floyd", `wakehubert_computer` and `wakehubert_hey_computer` on each other's words, and
254
  `wakehubert_sheila` on "computer", all at their default
255
  thresholds. Raise the threshold when two of these models run side by side.
256
- - The models are English only.
 
 
257
 
258
  ## License
259
 
 
3
  library_name: onnx
4
  language:
5
  - en
6
+ - es
7
+ - de
8
+ - nl
9
+ - it
10
  tags:
11
  - wake-word
12
  - keyword-spotting
 
38
  - TigreGotico/synthetic-wakeword-hey_k9
39
  - TigreGotico/synthetic-wakeword-hey_scout
40
  - TigreGotico/not-wake-words-speech-en
41
+ - TigreGotico/synthetic-wakeword-despierta
42
+ - TigreGotico/synthetic-wakeword-aufwachen
43
+ - TigreGotico/synthetic-wakeword-wakker_worden
44
+ - TigreGotico/synthetic-wakeword-sveglia
45
  pipeline_tag: audio-classification
46
  ---
47
 
48
  # WakeHuBERT wake words
49
 
50
+ Ready wake-word models for [OpenVoiceOS](https://openvoiceos.org), trained with
51
  [wakeforge](https://github.com/TigreGotico/wakeforge). Each model is a small GRU classifier that reads
52
  features from [WakeHuBERT tiny](https://huggingface.co/TigreGotico/wakehubert-tiny), a 0.64M-parameter speech
53
  feature extractor distilled from HuBERT-base. A model scores the last 1.5 s of audio (75 feature frames) and
 
86
  | `wakehubert_hey_stemcom` | hey stemcom | wakehubert-int8 | yes | 0.28 |
87
  | `wakehubert_computer` | computer | wakehubert (float32) | no | 0.99 |
88
  | `wakehubert_hey_mycroft` | hey mycroft | wakehubert-int8 | yes | 0.18 |
89
+ | `wakehubert_despierta` | despierta (Spanish) | wakehubert-int8 | yes | 0.05 |
90
+ | `wakehubert_aufwachen` | aufwachen (German) | wakehubert-int8 | yes | 0.43 |
91
+ | `wakehubert_wakker_worden` | wakker worden (Dutch) | wakehubert-int8 | yes | 0.16 |
92
+ | `wakehubert_sveglia` | sveglia (Italian) | wakehubert-int8 | yes | 0.08 |
93
 
94
  ## Use with OpenVoiceOS
95
 
 
219
  | `wakehubert_hey_potato` | 88.9% | 0.34 | 80.6% | 0.02 | 360 clips in held-out edge-tts voices only, without OmniVoice test clips |
220
  | `wakehubert_hey_stemcom` | 89.0% | 0.21 | 83.1% | 0.06 | 337 clips of OmniVoice and held-out edge-tts voices |
221
  | `wakehubert_hey_mycroft` | 97.4% | 1.57 | 84.8% | 0.24 | 285 clips in held-out edge-tts voices and 379 Kokoro clips converted to unseen speakers |
222
+ | `wakehubert_despierta` | 95.4% | 0.39 | 92.4% | 0.16 | 370 Spanish OmniVoice clips with unseen seeds |
223
+ | `wakehubert_aufwachen` | 99.2% | 0.16 | 94.6% | 0.03 | 390 German OmniVoice clips with unseen seeds |
224
+ | `wakehubert_wakker_worden` | 98.2% | 0.58 | 94.4% | 0.06 | 390 Dutch OmniVoice clips with unseen seeds |
225
+ | `wakehubert_sveglia` | 98.7% | 0.19 | 96.0% | 0.03 | 222 Italian OmniVoice clips with unseen seeds |
226
 
227
  The false activations are counted over 46.5 h of negative audio (speech, non-speech and household audio). The
228
  held-out synthetic voices are text-to-speech voices that no training clip uses, converted to the voices of
229
+ speakers who appear in no training clip. For the localised wake-up models (the words with a language in brackets in the table above), the false activations are counted over the 31.1 h of speech and non-speech audio without the household audio, and recall is measured on clips of OmniVoice voices drawn from seeds that no training clip uses. No figures are published for the uncalibrated model.
230
 
231
  ## Training data
232
 
 
238
  datasets listed above. Speech from LibriSpeech train-clean-100 is mixed into training clips as background babble.
239
  The negatives are the wakeforge negative list and half of an AudioSet noise sample; the other half is held out.
240
 
241
+ The localised wake-up models were trained on synthetic speech only: OmniVoice clips with no reference speaker, one seed per clip, kept when a speech recogniser transcript matched the phrase (or, for languages no recogniser covers, when duration, level and speech-activity checks passed), together with the clips of the phrase's `TigreGotico/synthetic-wakeword-<word>` dataset, which also holds the kept OmniVoice clips and their held-out test split. Speech from LibriSpeech train-clean-100 is mixed in as background babble, and the negatives are the same as above.
242
+
243
  `wakehubert_computer` was trained on synthetic speech only, from `TigreGotico/synthetic-wakeword-computer`, with
244
  negatives from `TigreGotico/not-wake-words-speech-en` and AudioSet-derived clips.
245
 
 
252
 
253
  ## Limitations
254
 
255
+ - Twenty of the twenty-seven calibrated models are scored on held-out synthetic voices, so recall on real speech can
256
  be lower for those words. `wakehubert_jarvis` and `wakehubert_alexa` are scored on the Picovoice recordings,
257
  `wakehubert_hey_chatterbox` and `wakehubert_hey_floyd` on OVOS community recordings, and `wakehubert_marvin`,
258
  `wakehubert_sheila` and `wakehubert_stop` on Speech Commands, all real speakers.
 
271
  sometimes on "hey floyd", `wakehubert_computer` and `wakehubert_hey_computer` on each other's words, and
272
  `wakehubert_sheila` on "computer", all at their default
273
  thresholds. Raise the threshold when two of these models run side by side.
274
+ - The models are English except the localised wake-up models, whose language is in brackets in the table above.
275
+ Their negative audio is English speech and non-speech audio; on read speech in their own language (the FLEURS
276
+ development set) at the default threshold they gave: `wakehubert_despierta` 0.00 per hour over 1.4 h; `wakehubert_aufwachen` 0.79 per hour over 1.3 h; `wakehubert_wakker_worden` 0.00 per hour over 0.5 h; `wakehubert_sveglia` 1.30 per hour over 1.5 h.
277
 
278
  ## License
279
 
models.json CHANGED
@@ -656,6 +656,118 @@
656
  "negative_hours": 46.5
657
  }
658
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
659
  }
660
  ]
661
  }
 
656
  "negative_hours": 46.5
657
  }
658
  }
659
+ },
660
+ {
661
+ "name": "wakehubert_despierta",
662
+ "file": "models/wakehubert_despierta.onnx",
663
+ "word": "despierta",
664
+ "language": "es",
665
+ "featurizer": "wakehubert-int8",
666
+ "calibrated": true,
667
+ "default_threshold": 0.05,
668
+ "sha256": "ff50e507a3aed854970655b0244805cbcbf9b103e07aedd97dbd636d4a3b5c38",
669
+ "license": "Apache-2.0",
670
+ "training_data": "synthetic only: OmniVoice clips with no reference speaker, one seed per clip, each checked against a speech recogniser transcript, and the OmniVoice clips of TigreGotico/synthetic-wakeword-despierta (CC BY 4.0); LibriSpeech train-clean-100 (CC BY 4.0) mixed in as background babble; negatives from wakeforge datasets/train.csv and the even half of an AudioSet noise sample",
671
+ "measured": {
672
+ "default": {
673
+ "recall": 0.9541,
674
+ "false_activations_per_hour": 0.39,
675
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
676
+ "recall_test_clips": 370,
677
+ "negative_hours": 31.1
678
+ },
679
+ "0.8": {
680
+ "recall": 0.9243,
681
+ "false_activations_per_hour": 0.16,
682
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
683
+ "recall_test_clips": 370,
684
+ "negative_hours": 31.1
685
+ }
686
+ }
687
+ },
688
+ {
689
+ "name": "wakehubert_aufwachen",
690
+ "file": "models/wakehubert_aufwachen.onnx",
691
+ "word": "aufwachen",
692
+ "language": "de",
693
+ "featurizer": "wakehubert-int8",
694
+ "calibrated": true,
695
+ "default_threshold": 0.43,
696
+ "sha256": "bd1e0030d1405fd0e7cb9c25e5d1917e7df0054543fef49d7cde5f42883f5a52",
697
+ "license": "Apache-2.0",
698
+ "training_data": "synthetic only: OmniVoice clips with no reference speaker, one seed per clip, each checked against a speech recogniser transcript, and the OmniVoice clips of TigreGotico/synthetic-wakeword-aufwachen (CC BY 4.0); LibriSpeech train-clean-100 (CC BY 4.0) mixed in as background babble; negatives from wakeforge datasets/train.csv and the even half of an AudioSet noise sample",
699
+ "measured": {
700
+ "default": {
701
+ "recall": 0.9923,
702
+ "false_activations_per_hour": 0.16,
703
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
704
+ "recall_test_clips": 390,
705
+ "negative_hours": 31.1
706
+ },
707
+ "0.8": {
708
+ "recall": 0.9462,
709
+ "false_activations_per_hour": 0.03,
710
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
711
+ "recall_test_clips": 390,
712
+ "negative_hours": 31.1
713
+ }
714
+ }
715
+ },
716
+ {
717
+ "name": "wakehubert_wakker_worden",
718
+ "file": "models/wakehubert_wakker_worden.onnx",
719
+ "word": "wakker worden",
720
+ "language": "nl",
721
+ "featurizer": "wakehubert-int8",
722
+ "calibrated": true,
723
+ "default_threshold": 0.16,
724
+ "sha256": "b1c090730190f091297fac7e07725c501b2045fd71b15929fa37aa38f5fecad7",
725
+ "license": "Apache-2.0",
726
+ "training_data": "synthetic only: OmniVoice clips with no reference speaker, one seed per clip, each checked against a speech recogniser transcript, and the OmniVoice clips of TigreGotico/synthetic-wakeword-wakker_worden (CC BY 4.0); LibriSpeech train-clean-100 (CC BY 4.0) mixed in as background babble; negatives from wakeforge datasets/train.csv and the even half of an AudioSet noise sample",
727
+ "measured": {
728
+ "default": {
729
+ "recall": 0.9821,
730
+ "false_activations_per_hour": 0.58,
731
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
732
+ "recall_test_clips": 390,
733
+ "negative_hours": 31.1
734
+ },
735
+ "0.8": {
736
+ "recall": 0.9436,
737
+ "false_activations_per_hour": 0.06,
738
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
739
+ "recall_test_clips": 390,
740
+ "negative_hours": 31.1
741
+ }
742
+ }
743
+ },
744
+ {
745
+ "name": "wakehubert_sveglia",
746
+ "file": "models/wakehubert_sveglia.onnx",
747
+ "word": "sveglia",
748
+ "language": "it",
749
+ "featurizer": "wakehubert-int8",
750
+ "calibrated": true,
751
+ "default_threshold": 0.08,
752
+ "sha256": "d799d6e973e145d781b435ab4ee0f0dcb60afce549c3bc40e42989f33f62b74f",
753
+ "license": "Apache-2.0",
754
+ "training_data": "synthetic only: OmniVoice clips with no reference speaker, one seed per clip, each checked against a speech recogniser transcript, and the OmniVoice clips of TigreGotico/synthetic-wakeword-sveglia (CC BY 4.0); LibriSpeech train-clean-100 (CC BY 4.0) mixed in as background babble; negatives from wakeforge datasets/train.csv and the even half of an AudioSet noise sample",
755
+ "measured": {
756
+ "default": {
757
+ "recall": 0.9865,
758
+ "false_activations_per_hour": 0.19,
759
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
760
+ "recall_test_clips": 222,
761
+ "negative_hours": 31.1
762
+ },
763
+ "0.8": {
764
+ "recall": 0.9595,
765
+ "false_activations_per_hour": 0.03,
766
+ "recall_test_set": "held-out synthetic voices: OmniVoice clips whose seeds no training clip uses",
767
+ "recall_test_clips": 222,
768
+ "negative_hours": 31.1
769
+ }
770
+ }
771
  }
772
  ]
773
  }
models/wakehubert_aufwachen.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:bd1e0030d1405fd0e7cb9c25e5d1917e7df0054543fef49d7cde5f42883f5a52
3
+ size 467388
models/wakehubert_despierta.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ff50e507a3aed854970655b0244805cbcbf9b103e07aedd97dbd636d4a3b5c38
3
+ size 467394
models/wakehubert_sveglia.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d799d6e973e145d781b435ab4ee0f0dcb60afce549c3bc40e42989f33f62b74f
3
+ size 467391
models/wakehubert_wakker_worden.onnx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b1c090730190f091297fac7e07725c501b2045fd71b15929fa37aa38f5fecad7
3
+ size 467402