# Ajouter la reconnaissance vocale des commandes à une caisse WooCommerce POS

> Tutoriel pour brancher la reconnaissance vocale du navigateur sur une caisse WooCommerce POS, afin d'ajouter un article au ticket sans quitter les mains du comptoir.

- Auteur : Clément Hadrot
- Publié le : 2025-01-14
- Mis à jour le : 2025-01-14
- Catégorie : E-commerce
- URL : https://wpmoderne.dev.wordpress-developpement.fr/ecommerce/reconnaissance-vocale-commandes-caisse-woocommerce-pos/

## L’essentiel

- L'API Web Speech du navigateur suffit, sans service tiers payant
- La recherche vocale se limite au vocabulaire du catalogue local
- Le mode mains libres réduit le temps de saisie sur les commandes complexes

« Fromagerie du Marché » équipe son comptoir d'une caisse WooCommerce POS depuis un an, mais l'équipe de vente jonglait en permanence entre la balance, l'emballage du produit et la tablette de caisse, ce qui rendait la saisie tactile parfois maladroite au comptoir, mains occupées ou légèrement humides. Ce tutoriel ne traite pas la synchronisation multi-boutiques du catalogue, déjà couverte ailleurs, mais construit précisément l'ajout d'un mode de saisie vocale au ticket en cours.

Plutôt que de recourir à un service cloud de reconnaissance vocale payant, l'implémentation retenue s'appuie entièrement sur l'API Web Speech, disponible nativement dans les navigateurs basés sur Chromium, largement suffisante pour reconnaître un vocabulaire restreint au catalogue de la boutique.

## Étape 1 : capter la voix côté navigateur

L'interface POS de WooCommerce, construite en JavaScript, expose un point d'ajout au ticket réutilisable. L'ajout vocal se branche sur ce même point d'entrée, sans toucher au cœur de la logique de caisse, simplement en déclenchant l'ajout d'article comme le ferait un clic sur une vignette produit.

```
const reconnaissance = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
reconnaissance.lang = 'fr-FR';
reconnaissance.continuous = true;
reconnaissance.interimResults = false;

reconnaissance.onresult = (evenement) => {
    const phrase = evenement.results[evenement.results.length - 1][0].transcript;
    fdm_traiter_phrase_vocale(phrase.toLowerCase().trim());
};

document.getElementById('bouton-micro').addEventListener('click', () => {
    reconnaissance.start();
});
```

## Étape 2 : associer la phrase à un produit du catalogue

Reconnaître du texte libre ne suffit pas : il faut le rapprocher d'un produit réel. La solution retenue construit un index local, au chargement de la caisse, associant chaque produit à des variantes de prononciation courantes (nom complet, nom court, unité de vente), plutôt que de tenter une recherche floue générique sur l'ensemble du texte reconnu.

```
function fdm_traiter_phrase_vocale(phrase) {
    const correspondance = catalogueVocal.find((produit) =>
        produit.variantes.some((variante) => phrase.includes(variante))
    );

    if (!correspondance) {
        fdm_afficher_message('Produit non reconnu : "' + phrase + '"');
        return;
    }

    const quantite = fdm_extraire_quantite(phrase) || 1;
    posAjouterAuTicket(correspondance.id, quantite);
}
```

> L'essentiel à retenir : L'API Web Speech du navigateur suffit, sans service tiers payant ; La recherche vocale se limite au vocabulaire du catalogue local ; Le mode mains libres réduit le temps de saisie sur les commandes complexes

## Étape 3 : gérer les quantités énoncées

Le vocabulaire du comptoir mêle souvent quantité et poids dans la même phrase, du type « deux cents grammes de comté » ou « trois parts de tarte ». Une petite fonction d'extraction, basée sur une liste d'expressions régulières simples plutôt que sur un traitement du langage complexe, couvre la grande majorité des formulations réellement utilisées en boutique.

- Nombres écrits en toutes lettres reconnus jusqu'à dix
- Unités de poids courantes (grammes, kilos) converties en quantité de vente
- Repli systématique sur une quantité de un en cas d'ambiguïté, avec confirmation visuelle avant validation

### Le choix délibéré de ne pas viser l'exhaustivité

Le système ne cherche pas à comprendre n'importe quelle phrase : il se limite volontairement au vocabulaire du catalogue local, régénéré chaque matin à l'ouverture de la caisse. Une reconnaissance trop permissive aurait multiplié les erreurs d'association, plus coûteuses en confiance de l'équipe de vente qu'un message clair « produit non reconnu, veuillez répéter ».

## Étape 4 : la confirmation visuelle, indispensable au comptoir

Chaque ajout vocal s'accompagne d'un retour visuel bref, un encart qui affiche le produit ajouté pendant deux secondes, permettant à l'employé de repérer immédiatement une mauvaise reconnaissance sans devoir fixer l'écran en continu. Sans ce retour, une erreur de reconnaissance ne serait détectée qu'au moment du paiement, bien trop tard pour la corriger sereinement.

> Une saisie mains libres n'a de valeur que si l'erreur se voit tout de suite. Le silence d'un système qui ajoute le mauvais article sans le signaler coûte plus cher que la saisie tactile qu'il devait remplacer.

## Résultat mesuré après un mois d'usage

Le temps moyen entre la fin d'une phrase énoncée et l'ajout effectif au ticket s'est stabilisé autour de 1,4 seconde, essentiellement le temps de traitement local par le navigateur, sans latence réseau puisque tout le traitement reste côté client. L'équipe de Fromagerie du Marché a adopté ce mode principalement sur les commandes complexes à plusieurs articles, en le combinant à la saisie tactile plutôt qu'en la remplaçant totalement.

## En résumé

Ajouter une reconnaissance vocale à une caisse WooCommerce POS ne nécessite ni service cloud payant ni traitement du langage sophistiqué : un index de vocabulaire limité au catalogue réel de la boutique, couplé à l'API Web Speech native du navigateur, couvre l'essentiel des besoins d'un comptoir, à condition de toujours prévoir un retour visuel immédiat en cas de mauvaise reconnaissance.
