Étude de cas sur un assistant vocal basé sur l'IA

Vocale

Un agent qui répond au téléphone de l'entreprise, trouve la réponse dans les documents de cette dernière et ouvre le ticket d'assistance avant même que l'appelant n'ait raccroché — sur les numéros dont l'entreprise dispose déjà et sur son propre matériel, si elle le souhaite.

  • IndustrieInbound support and telephony
  • UtilisateursSupport teams on a Yeastar or SIP PBX
  • CouvertureEvery call, around the clock
  • ServicesProduct Design, Development, AI
Vocale : plateforme d'agent vocal basé sur l'IA

Aperçu

Vocale intègre un agent IA à la ligne téléphonique dont dispose déjà une entreprise. Un client compose le numéro qu'il a toujours composé ; l'agent décroche dès la première sonnerie, s'exprime dans sa langue, répond en s'appuyant sur les manuels et les politiques de l'entreprise et, lorsque la réponse est en réalité « quelqu'un doit examiner cela », il crée un ticket d'assistance avec les informations déjà recueillies.

Le système téléphonique reste inchangé. L'entreprise conserve son opérateur, ses numéros et son forfait d'appels ; une plateforme Yeastar ou SIP compatible est connectée une seule fois via un formulaire, et la ligne réseau ainsi que le routage des appels sont configurés en arrière-plan. Il suffit ensuite de télécharger les documents que l’agent doit connaître, de rédiger les quelques phrases qui définissent son ton, et de tester le tout dans un navigateur jusqu’à ce que le résultat soit satisfaisant — le tout avant qu’un seul appel réel ne lui soit acheminé.

Le choix du lieu d’exécution des modèles est déterminant pour la rentabilité ; c’est pourquoi la plateforme propose deux moteurs au sein d’un même produit. Dans l’offre hébergée, la reconnaissance vocale, le raisonnement et la synthèse vocale proviennent d’une API tierce, et chaque minute est facturée à l’unité. Sur le niveau auto-hébergé, ces trois fonctionnalités s’exécutent sur un GPU sous le contrôle direct de l’entreprise ; aucun fichier audio ni document ne quitte les locaux, et un appel ne coûte que l’électricité consommée. Le passage d’un niveau à l’autre se fait par simple configuration ; le comportement de l’agent reste identique dans les deux cas.

  • Next.js 15
  • TypeScript
  • Tailwind CSS
  • Supabase
  • PostgreSQL
  • LiveKit
  • WebRTC
  • SIP telephony
  • Python
  • vLLM + Qwen3-8B
  • Faster-Whisper
  • Coqui XTTS-v2
  • Pinecone

Vidéo du projet

vocaleBranchez la ligne téléphonique. On répond.

Un guide pas à pas de Vocale, depuis la connexion d'un système téléphonique et le téléchargement d'un manuel jusqu'à un appel en direct permettant de répondre à la question et de classer celle à laquelle le système n'a pas pu répondre.

Fonctionnalités clés

  • Répond au téléphone

    Il s'intègre au système Yeastar ou SIP déjà utilisé par l'entreprise, de sorte que les appels parviennent à l'agent aux numéros que les clients ont toujours composés.

  • En s'appuyant sur vos documents

    Les manuels, les politiques et les listes de prix sont mis en ligne, indexés et consultés au moment même où la question est posée ; la réponse provient donc des ressources propres à l'entreprise plutôt que de la mémoire du modèle.

  • Crée des tickets en cours d'appel

    Lorsqu'un appelant a besoin d'une personne, l'agent recueille les informations relatives à l'objet de la demande, aux coordonnées de la personne concernée et au degré d'urgence pendant que l'appelant est encore en ligne, puis il crée lui-même le ticket.

  • Sait qui appelle

    La base de données clients existante est connectée en lecture seule ; ainsi, un numéro entrant est associé à un compte avant même que l'agent n'ait prononcé un mot.

  • Deux moteurs, un seul produit

    Le même agent peut fonctionner soit sur une API hébergée, soit entièrement sur un GPU privé. L'entreprise choisit en fonction du coût et de la destination autorisée pour ses données.

Le défi

Le téléphone sonne à sept heures du soir. La réponse se trouve dans un fichier PDF sur le disque partagé. Personne n'est là pour la lire.

La qualité d’un service d’assistance dépend entièrement des personnes qui y répondent, et les questions qui y sont posées se résument presque toujours aux mêmes : quels sont vos horaires, est-ce pris en charge, comment puis-je le réinitialiser ? Les réponses sont déjà consignées — dans un manuel, une charte, une grille tarifaire — mais elles ne se trouvent nulle part où un appelant puisse les consulter ni où un opérateur puisse les trouver pendant qu’un client attend. Mettre une IA en ligne résout la moitié du problème d’accessibilité. La location à la minute transforme discrètement ce problème en un problème de coût, car plus l’IA fonctionne efficacement, plus elle est utilisée, et plus la facture mensuelle est élevée.

  • Appels en dehors des heures de bureau

    Le soir, le week-end et les jours fériés, les appels sont redirigés vers la messagerie vocale — et la plupart des messages qui y aboutissent ne sont que des demandes courantes qu’une personne aurait pu régler en une minute.

  • Des réponses que personne ne peut trouver

    Ces informations figurent bien dans des documents, mais elles ne sont pas disponibles sous une forme permettant de les consulter pendant qu'un appelant attend en ligne.

  • Tarification à la minute

    Les plateformes d'IA vocale gérées facturent à la minute d'appel, ce qui fait que la facture augmente à mesure que leur utilisation se généralise — ce qui constitue une mauvaise incitation à mettre en place une ligne d'assistance.

Notre solution

Un agent est déjà en ligne.

Vocale s'intercale entre le système téléphonique d'une entreprise et sa base de connaissances. Le PBX s'y connecte via un formulaire et le routage est configuré en arrière-plan. Les documents sont téléchargés et indexés. Le comportement de l'agent est défini en langage naturel plutôt qu'en code, et l'ensemble peut être testé dans un navigateur avant qu'un véritable appel ne lui parvienne. Une fois en production, toutes ses actions sont consignées — la transcription, les recherches effectuées, les tickets ouverts — afin que l'équipe puisse évaluer s'il remplit correctement sa mission avant de lui confier davantage de tâches.

Se connecte au PBX, et non pas en contournant celui-ci

L'enregistrement de Yeastar et des systèmes SIP compatibles s'effectue via un formulaire, et l'entreprise conserve son opérateur, ses numéros et son forfait d'appels.

Récupération avant qu'il ne parle

Une question nécessitant une information concrète déclenche une recherche parmi les documents indexés, et la réponse est élaborée à partir des résultats obtenus — l'agent étant autorisé à répondre « aucune information trouvée » si la recherche n'a donné aucun résultat.

Hébergé ou auto-hébergé, le comportement est le même

Les fonctionnalités liées à la parole, au langage et à la voix s'exécutent soit via une API tierce, soit sur un GPU privé. Le passage de l'une à l'autre se fait par simple configuration, sans nécessiter de recompilation.

Comment ça marche

Testez-le avant qu'un client ne le fasse

A sandbox that runs the whole pipeline in the browser. Pick a caller, start the call, and the transcript arrives live beside it as the agent hears and answers. Every session it has ever handled — browser or phone, inbound or outbound — is one click away in the rail on the left.

La console de l'agent vocal Vocale : un grand écran en mode veille, flanqué d'un panneau affichant la transcription en direct, d'un sélecteur d'appelant et d'un bouton « Démarrer l'appel » en dessous, ainsi qu'une barre latérale présentant l'historique des appels récents avec les numéros masqués.

Les documents auxquels il fait référence

Files are dropped straight onto the page, then parsed, split and indexed. Each row reports how many pages went in and how many searchable pieces came out, so it is obvious at a glance when a document is ready to be quoted on a call and when it is still being worked on.

La page de la base de connaissances : un panneau de téléchargement par glisser-déposer situé au-dessus d'un tableau répertoriant les documents indexés, avec indication du nom, du statut, du nombre de pages et du nombre de segments.

Ce à quoi il n'a pas pu répondre devient un ticket

The agent collects the subject, the customer and the urgency while the caller is still on the line and files the ticket itself, transcript attached. Support opens the queue to a list of real problems in the caller's own words instead of a column of missed calls.

La page des tickets : un tableau répertoriant les tickets d'assistance avec leur numéro, leur objet, le client concerné, leur statut, leur priorité et leur date de création ; la plupart d'entre eux sont ouverts automatiquement lors des appels.

Il sait qui appelle

An existing customer database connects read-only, with a mapping step for whichever columns hold the name and the number. From then on an inbound call is matched against it before the agent speaks — and the records stay where they are. Vocale reads them; it does not become the place they live.

La page « Clients » affiche une base de données externe synchronisée contenant 14 039 enregistrements, avec les commandes « Modifier les mappages » et « Modifier la connexion ». Les colonnes « Nom » et « Téléphone » sont masquées.

Numéros attribués depuis la console

Telephony is the one part a business should not have to get right alone, so provisioning is an operator job rather than a self-service form. Each number is registered, pointed at an organisation and switched on from here — which doubles as the fastest way to see which tenants are actually taking calls.

L'écran des numéros SIP de l'administrateur : des compteurs indiquant le nombre total de numéros, ainsi que le nombre de numéros actifs et inactifs, et un tableau associant chaque numéro à un nom, une organisation et un locataire, avec un bouton permettant d'activer ou de désactiver le numéro.

Ce que coûte chaque minute

Spend is metered the way the models bill it — caller speech, agent speech and replayed history, broken out per model and per organisation. It is what turns the choice between a hosted API and a private GPU into a decision with a number attached rather than an argument.

Le tableau de bord des coûts administratifs et d'utilisation : coût total, coût moyen par appel, nombre d'appels et de minutes ainsi que coût à la minute, un graphique des dépenses quotidiennes, une ventilation par type de coût et par modèle, ainsi que les tarifs en vigueur.

Impact & résultats

On m'a répondu dès la première sonnerie, et les tarifs sont ceux d'un logiciel.

Ce qui compte pour un service d’assistance téléphonique, ce n’est pas la précision en soi, mais le fait que l’appel ait été pris en charge et que la réponse ait été correcte. Vocale répond à tous les appels, à toute heure, dans la langue de l’appelant, et fournit une transcription permettant de régler la deuxième question. Le coût indiqué ci-dessous correspond à ce que la plateforme a facturé sur la formule hébergée pour un mois d’appels réels ; la formule auto-hébergée transfère cette ligne vers le matériel que l’entreprise paie déjà, et le coût à la minute cesse alors d’évoluer.

Prise de garde, sans planning ni file d'attente
Coût facturé à la minute par appel, formule hébergée
Langues disponibles pour l'agent
Modalités d'exécution : API hébergée ou GPU privé

Architecture

Ce qu'une entreprise peut faire à partir du tableau de bord

Organigramme. Un utilisateur disposant d’un PBX Yeastar ou d’un système similaire se connecte et accède à un tableau de bord principal, qui se divise en sept sections : configuration de la téléphonie et du PBX ; base de connaissances permettant de télécharger, consulter et supprimer des documents ; configuration des agents vocaux avec paramétrage des messages d’accueil du système et test de l’interface de chat et vocale ; opérations en temps réel et surveillance avec historique des conversations et activité des agents ; Intégration du système de tickets avec les fonctions de connexion, de création, de consultation, de modification et de suppression ; Gestion des informations clients avec connexion à la base de données clients et création de nouveaux clients ; et Gestion des comptes avec modification du profil, téléchargement des données et suppression du compte.
Sept domaines accessibles via une seule connexion. La téléphonie et la base de connaissances sont configurées une seule fois ; les opérations, la gestion des tickets et les dossiers clients relèvent du quotidien.

Anatomie d'un tour de parole unique

Diagramme de séquence d'un tour de parole. Le flux audio WebRTC de l'utilisateur parvient à un serveur LiveKit, qui transmet les trames audio à l'agent. La détection d’activité vocale identifie la parole, le tampon est transmis à Faster-Whisper qui renvoie une transcription, le tour de parole de l’utilisateur est enregistré dans PostgreSQL, le contexte et l’historique de la conversation sont transmis au modèle linguistique Qwen3-8B hébergé par vLLM qui renvoie les tokens en continu, le texte est normalisé et agrégé en phrases avant que XTTS-v2 ne le convertisse en trames audio, le tour de parole de l’assistant est enregistré, et le flux audio est renvoyé à l’utilisateur via WebRTC.
Entrée et sortie vocales en un seul passage — les deux parties étant transcrites au fur et à mesure. Dans la formule auto-hébergée, chaque module de l'agent correspond à un modèle fonctionnant sur le GPU de l'entreprise.

Ce qu'il fallait résoudre

Être interrompu au milieu d'une phrase

Solution: Dès qu'ils ont compris la réponse, les appelants reprennent la parole, et un conseiller qui continue à parler donne l'impression de bafouiller. La détection d'activité vocale coupe le son dès que l'appelant prend la parole, puis tronque la transcription du conseiller pour ne conserver que ce qui a réellement été entendu. Ainsi, la conversation reprend là où l'appelant l'a laissée, et non là où le système l'avait prévue.

Silence pendant qu'il réfléchit

Solution: La recherche dans les documents prend suffisamment de temps pour être perçue comme une coupure de ligne. L'agent lance une petite phrase de remplissage naturelle au bout d'une demi-seconde et l'interrompt si la recherche aboutit avant, ce qui laisse le temps à la recherche de s'effectuer sans qu'il y ait de silence gênant.

Texte qui n'est pas lu à voix haute

Solution: Ce qui est écrit pour un écran n'est pas écrit pour être lu à voix haute : montants monétaires, dates sous forme de chiffres, acronymes. Une couche de normalisation réécrit les montants, les dates, les heures et les abréviations sous leur forme orale, selon la langue, avant même qu'ils n'atteignent le modèle vocal.

Un GPU, plusieurs conversations

Solution: Une session vocale en temps réel stocke ses modèles dans la mémoire vidéo ; sa capacité est donc limitée par la VRAM plutôt que par la puissance de calcul brute. Les sessions sont réparties par carte et la charge de travail est explicitement répartie entre les cartes : si l’on s’en remet au regroupement par défaut, les tâches de reconnaissance vocale et de traitement du langage se retrouvent sur le même GPU et se privent mutuellement de ressources.

Questions

Non. Vocale se connecte au système téléphonique que vous utilisez déjà — Yeastar et les plateformes SIP compatibles — et les appels continuent d'arriver sur les numéros que vos clients possèdent déjà. La connexion s'effectue en une seule fois depuis le tableau de bord, et la ligne réseau ainsi que le routage sont configurés en arrière-plan.

Vous ne recevez plus d'appels après 17 heures ?

Nous allons vous mettre en relation avec un conseiller.