Show HN : un bot vocal avec un temps de réponse de 500 ms
(fastvoiceagent.cerebrium.ai)- Une IA vocale doit réagir immédiatement, comme dans une conversation normale, pour paraître naturelle ; cette démo vise donc une réponse voix-à-voix en 500 ms
- Le défi principal consiste à réduire la latence perçue par l’utilisateur, à laquelle contribuent à la fois le réseau et le temps de traitement du modèle
- La démo montre jusqu’où il est possible d’aller en matière d’interactions LLM à faible latence grâce à l’optimisation et au mode de déploiement
- L’implémentation s’appuie sur Pipecat, un framework open source pour l’IA conversationnelle vocale et multimodale
- Pour créer un bot vocal conversationnel de niveau produit réel, il est essentiel de gérer la latence de toute la chaîne d’appel, pas seulement les performances du modèle
Démo visant une réponse vocale en 500 ms
- The World's Fastest Voice Bot Demo est une démonstration qui montre à quelle vitesse un chatbot IA vocal peut réagir
- L’objectif est d’atteindre un temps de réponse voix-à-voix de 500 ms
- Comme les humains s’attendent à des réponses rapides dans une conversation ordinaire, la vitesse devient un critère de qualité essentiel pour les interfaces d’IA vocale
Orientation de l’implémentation pour réduire la latence
- La démo est centrée sur des interactions LLM à faible latence
- Elle montre le potentiel d’un chatbot IA vocal optimisé et déployé pour minimiser à la fois la latence réseau et celle du modèle
- Le bot est construit avec Pipecat
- Pipecat est un framework open source pour l’IA conversationnelle vocale et multimodale
1 commentaires
Avis sur Hacker News
Vraiment rapide. Excellent et propre. On a l’impression que la vitesse l’emporte sur tout le reste. Ce n’est qu’après avoir lu les commentaires que j’ai remarqué la voix robotique.
J’ai déjà créé une IA pour le support client, et le temps de réponse moyen est passé de 24–48 heures à quelques secondes.
Un message du type « Hello Bitch, your package will be picked up by USPS today... » a été envoyé à une cliente, qui a répondu « thank you so much » et a donné la note CSAT maximale. Même avec une erreur aussi grave, la vitesse l’emporte sur tout.
Mais l’ingénieur avant-vente le plus actif n’a alors plus pu faire de démos auprès de prospects. Il y avait beaucoup d’appels embarrassants où l’IA ne répondait tout simplement pas, parce que son nom de famille était Dick.
Vraiment, vraiment bon. Si j’ai bien compris, ça ressemble à une application teaser pour montrer Cerebrium, mais elle a un gros potentiel de killer app. Testée sur iPad, la latence indiquée variait entre 1400 ms et 400 ms, et dans le bas de la fourchette c’était très fluide.
Avec ce niveau de vitesse, une approche en plusieurs étapes pourrait devenir nécessaire ou possible dans certains workflows de chat. D’abord répondre rapidement, pendant qu’une requête plus longue de données/informations/RAG tourne séparément, puis laisser un résultat enrichi prendre le relais.
Les humains fonctionnent aussi comme ça. Ils commencent à répondre tout en organisant leur pensée, en utilisant plusieurs mots de remplissage.
Aujourd’hui, la plupart des systèmes envoient un prompt d’un seul coup, ou font parsing → requête → génération en arrière-plan, mais avec des réponses à faible latence, un meilleur flux ressemblerait plutôt à « [Llama 8B dans l’oreille pendant 3 secondes] → requête → [55 secondes de Llama 70B/GPT-4, etc., intégrant les résultats de la requête] ».
Cette application est facile à étendre ou à implémenter, donc vous pouvez la modifier comme vous le souhaitez. Vous pouvez changer de LLM, de reconnaissance vocale, de modèle de synthèse vocale, modifier le prompt, ou implémenter aussi du RAG.
Avec Daily, nous nous sommes concentrés sur les ingénieurs. Nous voulions rendre l’application très flexible pour l’adapter aux cas d’usage et aux préférences, tout en supprimant la partie pénible de la configuration d’infrastructure.
Vous pouvez en savoir plus sur les façons de l’étendre ici : https://docs.cerebrium.ai/v4/examples/realtime-voice-agents
Si l’on peut attribuer un score continu à la complexité, on peut savoir s’il faut d’abord envoyer une réponse du type « Oui, un instant. Je vais vérifier », au lieu d’attendre un long aller-retour.
Pour un module de détection d’activité vocale multiplateforme dans le navigateur, il y a https://github.com/ricky0123/vad. C’est un portage vers ONNX du réseau VAD de Silero. Par multiplateforme, j’entends que ça fonctionne aussi dans Firefox. C’est plus simple, car il suffit d’avoir accès au micro, sans session WebRTC. Je me demande aussi si les navigateurs proposeront ce genre de fonction comme option native.
Il existe aussi des moteurs de synthèse vocale basés navigateur, de plus en plus rapides et de meilleure qualité. Ce serait bien que les navigateurs intègrent par défaut un excellent TTS.
GPT-4o a intégré la reconnaissance vocale automatique, la compréhension et la génération de réponse vocale dans un modèle unique pour obtenir une faible latence, et cela semble être une assez bonne idée. Comme ce n’est toujours pas sorti, il doit y avoir des problèmes de scalabilité ou de qualité sous une forme ou une autre.
Il doit aussi y avoir des gens qui créent des grands modèles de langage multimodaux ouverts et unifiés, avec entrée/sortie audio et même entrée visuelle.
Je me demande à quel point un modèle unique couplé est nécessaire et optimal en matière d’optimisation de la latence et des coûts.
Le tableau de décomposition fourni est intéressant. Si possible, il semblerait préférable de faire tourner davantage de modèles sur l’appareil, notamment la génération vocale, et peut-être même la transcription ou la compréhension vocale au début. Qui a envie d’attendre STUN ?
Les apps n’écouteraient pas par défaut et l’ignoreraient donc, mais le transcripteur serait remplaçable et utilisable par toutes les applications.
Logiquement, il faudrait penser en unités de phonèmes. La sortie du LLM doit rattraper le dernier phonème assez vite pour pouvoir répondre « immédiatement » dès que la fin est détectée, ce qui impose à toute la chaîne une latence de bout en bout d’environ 200 ms.
Pour s’en rapprocher, il faudra probablement une autre architecture. Comme dans le traitement de la parole chez l’humain : prendre de l’avance sur le flux audio à partir de phonèmes prédits avant leur arrivée, et n’utiliser l’audio réellement reçu que comme un signal léger de vérification pour décider s’il faut vider le buffer de sortie actuel ou le retraiter.
Le décodage spéculatif permettrait d’aller en partie dans cette direction, mais ce serait difficile avec un pipeline mêlant audio et texte. Il vaut bien mieux éviter dès le départ de convertir l’audio en texte puis de le reconvertir en audio.
https://github.com/charlesyu108/voiceai-js-starter
Je l’ai essayé moi-même et c’était amusant. Plus tôt cette semaine, j’ai testé june-va, mais les longs temps de réponse nuisaient pas mal à l’utilité. Les réponses rapides sont une excellente fonctionnalité, et là ça ressemble beaucoup plus à une conversation
Le plus drôle, c’est que je lui ai demandé de me raconter une histoire et il ne répondait qu’une phrase à la fois, donc pour entendre la ligne suivante je devais dire « yes », « aha », « please continue »
Puis on a eu cet échange. « Ah, je crois que j’ai découvert ton secret ! » « Dites-moi » « Tu obtiens des temps de réponse courts en gardant un contexte court » « Exactement »
Très impressionnant. C’est extrêmement rapide, peut-être même trop rapide, mais c’est sans doute le but. Le plus impressionnant, c’est la manière dont la VAD et la gestion des interruptions sont coordonnées. C’est de loin la conversation avec un agent qui m’a semblé la plus naturelle jusqu’ici. J’ai vraiment envie de l’essayer quand ce sera public
Le marketing annonce 500, mais le calcul donne 759
Moi aussi, j’ai hâte de voir le raisonnement vocal. Avant la sortie de GPT-4o d’OpenAI, j’avais construit ma propre implémentation de Faster Whisper basée sur WebSocket. Mon concept de coach d’entretien https://intervu.trueforma.ai et mon coach de pitch commercial https://sales.trueforma.ai se sont fait dépasser par eux
Je n’ai pas réussi à faire fonctionner la VAD de façon fiable, donc j’ai laissé le push-to-talk par défaut. Tout tourne sur un LattePanda. J’avais prévu de brancher le Whisper hébergé de Groq
Lassé des conversations d’entreprise ennuyeuses, j’aime bien l’idée d’utiliser le Llama3 non censuré de Groq comme LLM. J’aimerais réduire la latence et apprendre à partir des exemples. Je voudrais aussi essayer la démo, mais elle semble trop sollicitée, je n’arrive pas à lancer une conversation avec le bot
Rien qu’avec 3 personnes tentant de faire de l’inférence en même temps, mon LattePanda risquerait de fondre
Personnellement, j’utilise https://github.com/foges/whisper-dictation avec le llama-70b de Groq
Je commence à parler, je vais sur le site, j’attends la fin du chargement, et au moment de choisir llama-70b j’ai aussi fini de parler, donc le temps d’attente supplémentaire est nul. Comme lire est beaucoup plus rapide qu’écouter, ça me convient parfaitement
J’utilise encore Firefox
Il nous fallait un moyen de mesurer la latence voix-à-voix du point de vue de l’utilisateur final, et Silero Voice Activity Detection (https://github.com/snakers4/silero-vad) nous a semblé le plus fiable pour détecter le moment où l’utilisateur cesse de parler, démarrer un minuteur, puis l’arrêter quand l’audio arrive du bot
Silero tourne avec onnx-runtime et wasm. Ça fonctionne dans une certaine mesure sur Firefox, mais la VAD se comporte mal plus souvent que prévu, ce qui rend les chiffres de latence assez étranges. Je veux quand même absolument que ça marche, et je continue d’essayer
Le code de la VAD de l’UI est ici : https://github.com/pipecat-ai/web-client-ui/tree/main/src/va...
Vraiment impressionnant
La Siri d’Apple en est encore à permettre seulement des conversations où l’on se coupe la parole, où ça s’arrête, où ça échoue, et où l’on finit par espérer obtenir au moins une réponse minimale