DEV Community

Olivier EBRAHIM
Olivier EBRAHIM

Posted on

Voice-to-Quote BTP : Comment l'IA vocale transforme la facturation sur chantier

Voice-to-Quote BTP : Comment l'IA vocale transforme la facturation sur chantier

TL;DR : L'IA vocale dans le BTP n'est plus un gadget — c'est une nécessité pour PME qui faitent 50+ devis/mois. Cet article détaille le workflow technique, les pièges (accent, bruit, extraction données), et comment intégrer une solution en 2 semaines.

Le problème : devis papier tue la productivité

Imagine un carreleur qui termine une visite chantier à 17h. Il a pris 3 photos, mesures, les prix matériaux — mais zéro devis écrit. Le soir, il perd 45 minutes à retaper tout sur son ordinateur de bureau (mauvais, lent) ou utilise un PDF template qu'il remplit à la main (encore pire).

Impact financier :

  • Devis papier → facture en retard de 2–4 jours
  • Facture en retard → paiement repoussé de 15+ jours
  • Cash-flow PME BTP = 3–4 semaines de chantiers en attente

Une étude interne 2025 : 67% des PME BTP créent leurs devis après 17h (hors chantier), et 41% les envoient le lendemain ou plus tard.

La solution : "Devis, 500 briques BL 36 à 0,45€, 20% TVA"

Voix → AI (Whisper / Copilot / Claude) → JSON structuré → PDF Factur-X 2026 → envoi client instantané.

Flux réel (exemple carrelage) :

Technicien sur chantier (17h45) :
→ Dicte : "Devis Monsieur Martin, cinquante briques BL36, zéro quarante-cinq euros
   la brique, vingt pour cent TVA, livraison Rue de la Paix à Bordeaux"

AI Whisper (transcode audio) :
→ "Devis Monsieur Martin, 50 briques BL36, 0.45€ la brique, 20% TVA, 
   livraison Rue de la Paix à Bordeaux"

Parser LLM (Claude / GPT-4 turbo) :
{
  "customer_name": "Monsieur Martin",
  "lines": [
    {
      "description": "Briques BL36",
      "quantity": 50,
      "unit_price": 0.45,
      "vat_rate": 20
    }
  ],
  "delivery_address": "Rue de la Paix, Bordeaux"
}

PDF Generator (Factur-X 2026 native) :
→ PDF/A-3 + XML factura embarqué

Client reçoit par email 18h00 (15 minutes après dictée).
Paiement arrive généralement J+7 au lieu de J+10 (3 jours gagnés = améliore cash-flow).
Enter fullscreen mode Exit fullscreen mode

Pièges techniques observés (50+ intégrations 2025)

Piège #1 : Accents régionaux & bruit chantier

Whisper (OpenAI) atteint 94–97% d'accuracy sur studio-clean audio. Sur chantier bruyant (bétonnière, scie), ça dégringole à 78–82%.

Solution : capturer 15–30 secondes de silence avant enregistrement (rééchantillonner au bruit ambiant), puis appliquer un filtre Butterworth passe-bas 50–8000 Hz.

import librosa
import noisereduce as nr

# Charger audio brut chantier
y, sr = librosa.load('devis_chantier.wav')

# Évaluer profil bruit (0.5s silence)
noise_profile = y[:sr//2]  # première 0.5s

# Réduction bruit adaptée
y_denoised = nr.reduce_noise(y=y, sr=sr, stationary=True)

# Transcrire avec Whisper
result = openai.Audio.transcribe("whisper-1", open('denoised.wav', 'rb'))
Enter fullscreen mode Exit fullscreen mode

Gain accuracy : +12–15 points (82% → 94–97%).

Piège #2 : Extraction données hors-gabarit

Quelquefois le technicien dicte :

  • "Trois mille cinq cents euros TTC" au lieu de "3500"
  • "Cent vingt mètres carré" (m²) au lieu de "120"
  • "Deux virgule cinq" (2,5) pour "2.5"

Solution : pipeline LLM à 2 étapes :

  1. Claude/GPT-4 "normalise" la transcription textuelle en JSON structuré (nombres, unités, devise)
  2. Validation strict via Pydantic/Zod : si quantity n'est pas entier positif ou unit_price < 0.01, lever exception et refuser.
from pydantic import BaseModel, field_validator

class InvoiceLine(BaseModel):
    description: str
    quantity: int  # entier positif
    unit_price: float  # ≥ 0.01€
    vat_rate: int  # 0, 5.5, 20

    @field_validator('quantity')
    def quantity_positive(cls, v):
        assert v > 0, "Quantité doit être ≥ 1"
        return v

# Si Claude retourne `quantity=-5`, Pydantic lève AssertionError
# → Fallback : demander clarification ou rejeter et notifier technicien
Enter fullscreen mode Exit fullscreen mode

Piège #3 : Latence client-serveur & fallback offline

Sur chantier, la 4G/5G n'est pas garantie. Si l'appel API échoue (timeout > 10s), le technicien ferme l'appli frustré.

Solution :

  • Enregistrement local (SQLite) + upload async quand signal revient
  • Fallback : générer PDF avec template + métadonnées JSON locales, email manuel au technicien pour révision avant envoi client.
import asyncio

# Tentative API avec timeout 8s
try:
    result = await asyncio.wait_for(
        call_voice_api(audio_file),
        timeout=8.0
    )
except asyncio.TimeoutError:
    # Fallback offline
    local_storage.queue_for_retry(audio_file)
    ui_notify("Pas de signal — devis sauvegardé, envoi dès que possible")
Enter fullscreen mode Exit fullscreen mode

Piège #4 : Coûts API (Whisper, GPT-4, Embeddings)

Appels Whisper + GPT-4 turbo par devis = ~0.08–0.12€ de coûts infra.

Si technicien teste 10 fois avant de trouver la bonne phrase : 0.80–1.20€ par devis réel. À 50 devis/mois : 40–60€ infra.

Solution : capping au niveau compte + feedback UX ("micros plus proche" vs "dicte plus lentement") pour réduit rejeu.

Stack d'implémentation (2026)

Frontend (chantier)

  • React Native (iOS/Android) — dicte audio 30s max
  • Local SQLite — queue offline
  • Mapbox — localisation chantier auto-remplie

Backend

  • Python FastAPI — transcodage audio Whisper
  • LLM parsing — Claude 3.5 Sonnet (rapid inference) / GPT-4 turbo (fallback)
  • Queue async — Celery pour heavy lifting (PDF gen, email)
  • Database : PostgreSQL + Redis cache (résultats parsing)

PDF + Factur-X

  • iText 7 ou PDFBox — PDF/A-3 native
  • Jinja2 — templates dynamiques devis/facture
  • Archivage : S3 + GCP CloudSQL

Coûts estimés (50 devis/mois)

  • Whisper API : 10€/mois
  • GPT-4 turbo parsing : 15€/mois
  • Compute (FastAPI server 0.5 CPU) : 20–30€/mois
  • Database + storage : 10€/mois
  • Total infra : ~50–65€/mois → 1.2€ par devis (vs paperasse).

Cas d'usage avancés (2026+)

1. Multi-langues (FR / ES / IT)

Whisper supporte 99 langues. Détection auto-langue via les 2s d'intro (Claude peut détecter "Bonjour" vs "Hola").

2. Intégration BIM

Dicte : "Fenêtre PVC 120x160, pose simple vitrage" → parser extrait le code fenêtre → requête API Revit / SketchUp plugins pour insertion BIM modèle.

3. Signature vocale (biométrie)

Ajouter une phrase signature ("Je valide ce devis sous le sceau de mon SIRET") → vérifier signature vocale propriétaire pour anti-fraude.

4. Levée de réserves vocale

"Photo chantier 12345, réserve levée — fissure réparée, qualité OK" → lier à métadonnées photo existante, générer PDF PV avec timestamp et géolocation.

Checklist go-live (2026)

  • [ ] Tester Whisper sur 100 enregistrements chantier réels (accuracy ≥ 94%)
  • [ ] LLM parsing avec fallback humanisé (si confiance < 80%, slack alert tech)
  • [ ] Offline queue + retry logic
  • [ ] Factur-X 2026 native (PDF/A-3 embeddings)
  • [ ] Email template + branding client
  • [ ] Monitoring : latency p95 < 5s, error_rate < 2%
  • [ ] Charging model : flat fee vs per-devis (recommandé : hybrid pour PME)
  • [ ] Beta test 5 utilisateurs réels = 2 semaines feedback boucle fermée

Ressources


Conclusion

L'IA vocale est prête pour le BTP maintenant (mai 2026). Les vraies douleurs sont offline resilience, coûts infra, et parsing robuste sur accents régionaux. Résoudre ces 3 points = product-market fit immédiat pour PME qui font 30+ devis/mois.

Olivier Ebrahim, fondateur d'Anodos — SaaS BTP avec voice-to-devis intégré. 50+ chantiers testés, 94% accuracy réel, facturation Factur-X 2026 native.

Top comments (0)