openWakeWord ne détecte pas votre mot de réveil ? Guide de diagnostic
Un modèle qui ne réagit pas n'est pas forcément mal entraîné. La capture micro, le rééchantillonnage, les trames, l'extraction des caractéristiques, le seuil ou l'écart entre voix TTS et voix réelles peuvent produire le même symptôme.
1. Tester le modèle avec un WAV
Avant le microphone, utilisez un fichier positif connu à 16 kHz avec predict_clip(). Vérifiez le nom et le score du modèle. Un mauvais chemin, un ancien fichier en cache ou une confusion ONNX/TFLite ressemble à un rappel nul.
from openwakeword.model import Model
model = Model(wakeword_models=["mon_modele.onnx"])
print(model.predict_clip("positif.wav"))
2. Vérifier le contrat audio
openWakeWord attend du PCM 16 bits à 16 kHz ; la documentation recommande des trames multiples de 80 ms. Enregistrez le flux réellement reçu et écoutez-le. Contrôlez les canaux, le type, la taille des trames et l'amplitude. Désactivez temporairement gain automatique, réduction de bruit et annulation d'écho.
3. Mesurer les scores avant de changer le seuil
0,5 est un point de départ, pas une valeur universelle. Mesurez au moins 20 prononciations positives et plusieurs minutes de parole ordinaire. Un seuil plus bas réduit les ratés mais augmente les faux déclenchements.
| Observation | À vérifier |
|---|---|
| Score toujours proche de zéro | Chemin, format audio, fréquence et pipeline |
| Bon mot juste sous le seuil | Tester un seuil inférieur sur des négatifs |
| WAV reconnu, microphone non | Capture, resampling, tampon et trames |
| Une seule personne reconnue | Diversité des voix et prononciations |
| Échec à distance ou dans le bruit | Données réalistes de pièce, bruit et distance |
4. Isoler VAD, cooldown et debounce
Un VAD, un délai anti-répétition ou plusieurs trames positives obligatoires peuvent bloquer un score valide. Désactivez ces couches, puis réactivez-les une par une en journalisant score, VAD, seuil et état du cooldown.
5. Améliorer les données
- Varier voix TTS, vitesse, hauteur et volume.
- Ajouter bruit, réverbération et distance proches du déploiement.
- Employer les mots phonétiquement voisins comme négatifs difficiles.
- Ajouter des enregistrements réels bien découpés pour les accents manqués.
- Évaluer rappel et faux déclenchements sur un jeu séparé.
Comment Voicute réduit les variations
Voicute entraîne un modèle compact pour la cible, diversifie les voix synthétiques et les conditions acoustiques, et propose une version renforcée par des enregistrements réels sélectionnés. L'objectif est de réduire l'écart entre synthèse propre et microphone réel. Le modèle ONNX/TFLite exporté doit néanmoins être validé et réglé sur l'appareil final.