Construire un assistant vocal IA : de la reconnaissance vocale à la réponse
Les assistants vocaux deviennent omniprésents. Ce guide montre comment construire votre propre assistant vocal IA de A à Z.
Architecture générale
Un assistant vocal comporte quatre composants :
- Reconnaissance vocale (STT) : Convertir l'audio en texte
- Compréhension du langage naturel (NLU) : Comprendre l'intention
- Génération de réponse : Générer une réponse appropriée
- Synthèse vocale (TTS) : Convertir la réponse en parole
- STT : Whisper supporte 100+ langues
- NLU : GPT-4 fonctionne en arabe et en français
- TTS : Google TTS supporte l'arabe et le français
- La prise de rendez-vous
- Les rappels de médicaments
- Le triage des symptômes
- Les informations santé
- Utilisez WebSocket pour la communication en temps réel
- Déployez le STT sur des instances GPU pour une faible latence
- Mettez en cache les réponses courantes pour la rapidité
- Surveillez la précision et la satisfaction des utilisateurs
- Ajoutez la détection de mot d'activation (« Hey Assistant »)
- Implémentez les conversations multi-tours
- Ajoutez des actions personnalisées (envoyer un email, contrôler la maison connectée)
- Supportez l'alternance codique entre les langues
Étape 1 : Reconnaissance vocale
import speech_recognition as sr
def listen():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("Écoute...")
audio = recognizer.listen(source)
try:
text = recognizer.recognize_whisper(audio, language="french")
return text
except sr.UnknownValueError:
return "Impossible de comprendre l'audio"
except sr.RequestError:
return "Impossible d'obtenir les résultats"
Étape 2 : Reconnaissance d'intention
def understand_intent(text):
import openai
response = openai.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "Classifiez l'intention de ce message utilisateur : météo, rappel, recherche, général"},
{"role": "user", "content": text}
]
)
return response.choices[0].message.content.strip()
Étape 3 : Génération de réponse
def generate_response(intent, text):
if intent == "weather":
# Appeler l'API météo
return "Le temps aujourd'hui est ensoleillé avec une maximale de 25 degrés."
elif intent == "reminder":
# Logique de rappel
return "J'ai défini un rappel pour vous."
else:
# Conversation générale
response = openai.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": text}]
)
return response.choices[0].message.content
Étape 4 : Synthèse vocale
from gtts import gTTS
import pygame
def speak(text, lang='fr'):
tts = gTTS(text=text, lang=lang)
tts.save('reponse.mp3')
pygame.mixer.init()
pygame.mixer.music.load('reponse.mp3')
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
continue
Support multilingue
Pour les assistants vocaux en arabe ou en français :
Cas d'usage concret : Assistant médical
Une startup health tech à Casablanca a construit un assistant vocal parlant darija pour :
L'assistant traite plus de 1 000 appels par jour en arabe marocain.