Débloquez le copilote de conversation IA en temps réel pour votre téléphone
Déverrouillez le copilote de conversation IA en temps réel pour votre téléphone. Construisez un outil puissant qui transcrit et analyse les conversations en temps réel, fournissant des suggestions et des commentaires instantanés pour améliorer la communication. Améliorez vos entretiens, vos réunions et vos interactions sociales avec cet assistant alimenté par l'IA.
20 février 2025

Ce billet de blog explore le potentiel d'un copilote de conversation IA en temps réel qui peut aider avec des tâches comme les entretiens d'embauche et la recherche utilisateur. L'auteur présente le développement d'une application web et mobile qui exploite des modèles de parole-à-texte et de langue avancés pour fournir des capacités de transcription et de suggestion instantanées, mettant en évidence les avantages d'un tel outil pour améliorer la communication et la productivité.
Introduction à l'assistant conversationnel IA en temps réel
Défis de la construction d'une transcription en temps réel et d'une inférence rapide
Création d'une démonstration d'assistant conversationnel Web
Utilisation du kit Whisper pour un assistant conversationnel mobile
Conclusion
Introduction à l'assistant conversationnel IA en temps réel
Introduction à l'assistant conversationnel IA en temps réel
Il y a presque un an, vers mars 2023, lorsque ChatGPT est sorti et est devenu le sujet le plus brûlant au monde, je me souviens avoir clairement vu une démonstration d'Arony où il a construit un "Interview Breaker" - un outil ChatGPT qui aide à réussir les entretiens d'embauche. Cette semaine, j'ai construit quelque chose appelé le "Interview Breaker" - un prototype réalisé avec ChatGPT pour réussir les entretiens d'embauche. Il prend votre expérience précédente, écoute votre conversation avec votre recruteur et vous dit quoi dire, vous informant sur des choses que vous pourriez ne pas savoir.
En tant qu'architecte principal, lorsque je priorise ce sur quoi me concentrer pour un service backend, je priorise la mise à l'échelle. Ce genre d'outil va semer le chaos dans le processus d'entretien d'embauche. Habituellement, lorsque ces grandes technologies émergent, comme les ordinateurs ou Internet, elles changent tous les processus qui les ont précédées. Cela signifie que certaines de ces questions pourraient ne plus avoir de sens à poser si nous regardons très loin dans l'avenir.
J'ai pensé que c'était une idée fantastique car à l'époque, je passais moi-même des entretiens d'embauche, donc j'aurais adoré avoir un outil en temps réel qui puisse m'aider à les réussir. J'ai en fait essayé de construire ce prototype où il utilisait un modèle de reconnaissance vocale pour générer la transcription et utilisait également un modèle de langage pour générer des réponses, mais ce prototype n'a jamais bien fonctionné dans la vraie vie. L'une des exigences difficiles pour ces copilotes d'entretien ou de conversation en temps réel est qu'ils doivent avoir une latence faible et fonctionner en temps réel. Si cela prenait 30-40 secondes pour générer des résultats, cela ne fonctionnerait pas vraiment. Malheureusement, c'était le cas en mars dernier, car le modèle de reconnaissance vocale et le modèle de langage ont tous deux pris beaucoup de temps pour l'inférence. C'était un projet simple en théorie, mais très difficile à transformer en un produit utilisable dans la réalité.
Cependant, quelques mois plus tard, j'ai vu un autre produit présentant un scénario similaire mais avec des performances presque en temps réel. En ingénierie aérospatiale, comme dans les moteurs à réaction ou la rentrée des véhicules spatiaux, comment abordez-vous ces défis ?
Défis de la construction d'une transcription en temps réel et d'une inférence rapide
Défis de la construction d'une transcription en temps réel et d'une inférence rapide
Il y a deux composants clés pour construire un compagnon de conversation en temps réel : une transcription en temps réel et une inférence rapide.
Transcription en temps réel
Atteindre une transcription en temps réel est l'un des plus grands défis. Les modèles de reconnaissance vocale classiques comme Whisper ne sont pas conçus pour les scénarios de diffusion en continu, où l'audio est traité par petits morceaux plutôt que l'enregistrement complet.
Pour surmonter cela, une solution courante consiste à créer une boucle récurrente qui capture en permanence de petits morceaux audio (par exemple, toutes les 2-5 secondes), les envoie au modèle de reconnaissance vocale et assemble les petites transcriptions ensemble. Cette approche nécessite des optimisations pour assurer l'exactitude, comme comparer les horodatages des mots de connexion pour améliorer la transcription finale.
Heureusement, la technologie de reconnaissance vocale a évolué rapidement, et il existe maintenant des solutions qui permettent une transcription en temps réel, comme l'utilisation de modèles incroyablement rapides hébergés sur des plateformes comme Replicate ou le déploiement de modèles légers comme Whisper Kit directement sur les appareils mobiles.
Inférence rapide
Le deuxième défi est d'obtenir une inférence très rapide avec le modèle de langage pour générer des suggestions en temps réel. Pour y remédier :
-
Choisir un modèle de langage rapide et petit : Des modèles comme Meteo 7B sont beaucoup plus petits et plus rapides que GPT-4, permettant une génération de réponses plus rapide avec moins de ressources de calcul.
-
Réduire la taille de l'entrée : À mesure que la conversation s'allonge, l'entrée du modèle de langage peut devenir trop importante. Des techniques comme la résumé par modèle de langage peuvent être utilisées pour n'extraire que les informations pertinentes et réduire la taille de l'entrée.
-
Optimiser la génération de la sortie : D'autres optimisations peuvent être effectuées pour réduire le nombre de jetons de sortie, comme l'utilisation de méthodes d'ingénierie des invites.
En combinant ces techniques pour la transcription en temps réel et l'inférence rapide, il est possible de construire un compagnon de conversation en temps réel très réactif qui peut fournir des suggestions et un soutien précieux pendant les conversations.
Création d'une démonstration d'assistant conversationnel Web
Création d'une démonstration d'assistant conversationnel Web
Pour construire une démonstration de copilote de conversation web, nous utiliserons une combinaison de Flask (un framework web Python) et de Replicate (une plateforme pour exécuter des modèles IA open source).
Les composants clés sont :
-
Transcription en temps réel : Nous utiliserons un modèle de reconnaissance vocale rapide de Replicate pour générer une transcription en temps réel de la conversation. Cela implique de capturer en permanence de petits morceaux audio, de les envoyer au modèle de reconnaissance vocale et d'assembler les résultats.
-
Inférence rapide : Nous utiliserons un petit modèle de langage rapide de Replicate (comme Minitram) pour générer des suggestions et des réponses en temps réel en fonction de la transcription. Nous explorerons également des techniques comme la réduction de la taille de l'entrée et le résumé de la conversation pour améliorer la vitesse.
L'application web aura les fonctionnalités suivantes :
- Un champ de texte pour que l'utilisateur fournisse le contexte de la conversation.
- Un bouton "Enregistrer" pour démarrer et arrêter l'enregistrement audio.
- Un bouton "Obtenir une suggestion" pour déclencher le modèle de langage et obtenir des suggestions.
- Un affichage en temps réel de la transcription.
- Un affichage des suggestions générées.
Voici le processus étape par étape :
-
Configurer l'application Flask :
- Créer le fichier
app.py
et importer les bibliothèques nécessaires, y compris le SDK Python Replicate. - Définir les routes Flask pour la page d'accueil et le point de terminaison de traitement audio.
- Configurer le seau AWS S3 et les identifiants pour stocker temporairement les enregistrements audio.
- Créer le fichier
-
Mettre en œuvre la fonctionnalité de transcription en temps réel :
- Utiliser le modèle Replicate Whisper pour capturer et transcrire en continu les morceaux audio.
- Optimiser la transcription en gérant les limites de mots et en maintenant le contexte entre les morceaux.
-
Mettre en œuvre la fonctionnalité d'inférence rapide :
- Utiliser le modèle Replicate Minitram (ou un modèle de langage similaire petit et rapide) pour générer des suggestions en fonction de la transcription complète.
- Explorer des techniques comme la réduction de la taille de l'entrée et le résumé de la conversation pour améliorer la vitesse d'inférence.
-
Construire le front-end avec HTML et JavaScript :
- Créer le fichier
index.html
dans le dossiertemplates
. - Définir la structure HTML avec le champ de texte, le bouton d'enregistrement et l'affichage des suggestions.
- Implémenter la logique JavaScript pour gérer l'enregistrement, le téléchargement audio et les appels d'API au backend Flask.
- Créer le fichier
-
Tester et déployer l'application web :
- Exécuter l'application Flask localement et tester les fonctionnalités.
- Déployer l'application sur une plateforme d'hébergement (par exemple, Heroku, AWS ou votre propre serveur).
Utilisation du kit Whisper pour un assistant conversationnel mobile
Utilisation du kit Whisper pour un assistant conversationnel mobile
Après avoir vu la démonstration impressionnante du copilote de conversation web, j'ai décidé d'explorer le potentiel de la construction d'une version mobile en utilisant le cadre open source Whisper Kit. Whisper Kit fournit un package Swift qui permet le déploiement du modèle de reconnaissance vocale Whisper directement sur les appareils iOS, permettant une transcription en temps réel avec une latence minimale.
Pour commencer, j'ai cloné le dépôt GitHub de Whisper Kit et ouvert le projet d'exemple dans Xcode. Le projet comprend un dossier whisper-ax
, qui contient le code source d'une application iOS d'exemple qui démontre l'utilisation de Whisper Kit.
Dans le fichier ContentView.swift
, j'ai d'abord défini quelques variables d'état supplémentaires pour gérer l'entrée de l'invite et le résumé de la réponse de l'API du modèle de langage. J'ai ensuite ajouté un champ de saisie pour que l'utilisateur puisse personnaliser l'invite, qui sera utilisée pour fournir le contexte au modèle de langage.
Ensuite, j'ai implémenté la fonction getSuggestion()
, qui est chargée d'envoyer la transcription et l'invite à l'API Replicate pour générer une réponse du modèle de langage Mistral. Cette fonction gère la nature en flux continu de l'API Replicate, vérifiant en permanence le statut jusqu'à ce que la réponse soit complète, puis met à jour la variable d'état API_response_summary
avec la suggestion générée.
Enfin, j'ai ajouté un bouton "Obtenir une suggestion" qui déclenche la fonction getSuggestion()
, et affiché le résumé de la réponse de l'API sous la transcription en temps réel.
L'application iOS résultante permet aux utilisateurs de démarrer une conversation, de voir la transcription en temps réel et de recevoir des suggestions instantanées du modèle de langage pour les aider à guider la conversation. L'utilisation de Whisper Kit pour la fonctionnalité de reconnaissance vocale, combinée à l'intégration de l'API Replicate, offre une expérience de copilote de conversation fluide et réactive directement sur l'appareil mobile de l'utilisateur.
Cette approche ouvre de nouvelles possibilités pour une assistance conversationnelle en temps réel et contextuelle, permettant aux utilisateurs de bénéficier d'un soutien intelligent lors de discussions, d'entretiens et d'interactions sociales importantes. En tirant parti des dernières avancées en matière de reconnaissance vocale et de modèles de langage, le copilote de conversation mobile peut devenir un outil précieux pour améliorer la communication et la productivité.
Je suis impatient de continuer à affiner et à peaufiner cette application de copilote de conversation mobile, et j'ai hâte de la partager avec la communauté une fois qu'elle sera prête pour la sortie. N'hésitez pas à me faire savoir si vous êtes intéressé pour essayer l'application ou pour fournir des commentaires sur son développement.
Conclusion
Conclusion
En conclusion, le développement d'un copilote de conversation en temps réel est une tâche complexe qui nécessite de relever plusieurs défis clés. Les principaux défis sont :
-
Génération de transcription en temps réel : Atteindre une transcription vocale-texte à faible latence et précise est essentiel pour fournir des commentaires en temps réel. Des techniques comme l'utilisation d'un modèle de reconnaissance vocale en flux continu et l'optimisation de la connexion entre les morceaux audio et le texte transcrit sont essentielles.
-
Inférence rapide du modèle de langage : Générer des suggestions et des réponses pertinentes rapidement nécessite l'utilisation de modèles de langage plus petits et spécialisés qui peuvent fournir des temps d'inférence rapides. Des techniques comme la réduction de la taille du jeton d'entrée et le résumé de l'historique de la conversation peuvent aider à améliorer les performances.
-
Intégration transparente : Combiner la génération de transcription en temps réel et l'inférence du modèle de langage dans une application cohérente et conviviale est essentiel pour offrir une expérience fluide et efficace.
La démonstration a montré comment ces défis peuvent être relevés en utilisant une combinaison de technologies, notamment le modèle de reconnaissance vocale Whisper, le modèle de langage Minstrel et la plateforme Replicate pour un déploiement facile. Les applications web et mobiles résultantes fournissent une transcription en temps réel et une génération de suggestions, montrant le potentiel de cette technologie pour améliorer divers scénarios de conversation, comme les entretiens d'embauche, les entretiens de recherche utilisateur et les interactions sociales.
Dans l'ensemble, le développement d'un copilote de conversation en temps réel est un domaine de recherche et de développement prometteur, avec le potentiel d'améliorer considérablement la qualité et l'efficacité de la communication entre les humains.
FAQ
FAQ

