Tutoriel publié le 21/08/2024. Les outils et leurs interfaces peuvent avoir évolué. Cet exemple pédagogique ne constitue pas une réalisation client ni une garantie de résultat.
Technologies Utilisées
Groq, une start-up fondée par Jonathan Ross, créateur du TPU de Google, développe des puces spécialisées appelées Tensor Streaming Processor (TSP), conçues pour accélérer les tâches d'inférence en IA. Leur processeur de traitement du langage (LPU) promet une exécution des modèles de langage jusqu'à dix fois plus rapide et 100 fois plus rentable que les GPU actuels de Nvidia. Deepgram : est une entreprise technologique spécialisée dans la reconnaissance automatique de la parole (ASR). Elle propose des services de transcription audio en texte qui s'appuient sur des modèles d'apprentissage profond et d'intelligence artificielle. Leur plateforme vise à offrir des transcriptions précises et rapides pour diverses applications.Comment ça marche ?
import requests
import speech_recognition as sr
from groq import Groq
import pygame
import datetime
# Function to listen and recognize speech
def takeCommandCMic():
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Recognizing...")
query = r.recognize_google(audio, language='en-US')
print(query)
return query
except Exception as e:
print(e)
return "Could not understand. Please try again."
def play_audio(audio_file):
pygame.mixer.init()
pygame.mixer.music.load(audio_file)
pygame.mixer.music.play()
while pygame.mixer.music.get_busy():
pygame.time.Clock().tick(5)
# Load API keys from environment variables
GROQ_API_KEY = " "
DEEPGRAM_API_KEY = " "
# Initialize the Groq client
client = Groq(api_key=GROQ_API_KEY)
def create_groq_response(user_input):
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": user_input}],
model="mixtral-8x7b-32768",
)
if chat_completion.choices:
return chat_completion.choices[0].message.content
else:
return "Sorry, I couldn't retrieve a response."
def send_to_deepgram(text):
url = "https://api.deepgram.com/v1/speak?model=aura-asteria-en"
headers = {
"Authorization": f"Token {DEEPGRAM_API_KEY}",
"Content-Type": "application/json"
}
payload = {"text": text}
response = requests.post(url, headers=headers, json=payload)
if response.status_code == 200:
timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
filename = f"output_response_{timestamp}.mp3"
with open(filename, "wb") as f:
f.write(response.content)
print("Audio response saved successfully.")
return filename
else:
print(f"Error: {response.status_code} - {response.text}")
return None
# Main interaction loop
while True:
user_input = takeCommandCMic()
if user_input.lower() in ["exit", "quit", "stop"]:
print("Exiting...")
break
groq_response = create_groq_response(user_input)
audio_file = send_to_deepgram(groq_response)
if audio_file:
play_audio(audio_file)
Résumé du code :
Ce script Python combine la reconnaissance vocale, les réponses d'un chatbot et la synthèse audio. Il écoute les entrées vocales de l'utilisateur, génère une réponse textuelle via un chatbot, puis convertit la réponse en parole en utilisant Deepgram.Composants principaux :
- Imports :
requests: Pour envoyer des requêtes HTTP.speech_recognition(assr) : Pour la transcription de la parole en texte.groq: Pour interagir avec l'API du chatbot Groq.pygame: Pour la lecture audio.datetime: Pour générer des horodatages.
Fonctions :
takeCommandCMic:- Utilise un microphone pour écouter les entrées vocales et les reconnaître grâce à l'API de reconnaissance vocale de Google.
- Renvoie le texte reconnu ou un message d'erreur si la reconnaissance échoue.
play_audio:- Lit un fichier audio en utilisant le module
pygame.
- Lit un fichier audio en utilisant le module
create_groq_response:- Génère une réponse du chatbot Groq en envoyant les entrées de l'utilisateur à l'API Groq.
- Renvoie le texte de la réponse ou un message d'erreur.
send_to_deepgram:- Convertit le texte en parole en utilisant l'API Deepgram et enregistre le résultat en tant que fichier
.mp3. - Renvoie le chemin du fichier audio enregistré ou
Noneen cas d'erreur.
- Convertit le texte en parole en utilisant l'API Deepgram et enregistre le résultat en tant que fichier
Clés d'API :
GROQ_API_KEYetDEEPGRAM_API_KEY: Clés d'API temporaires à remplacer par des valeurs réelles pour Groq et Deepgram.
Boucle d'interaction principale :
- Écoute l'entrée vocale de l'utilisateur en utilisant
takeCommandCMic. - Si le texte reconnu correspond à "exit", "quit" ou "stop", la boucle se termine.
- Sinon, il génère une réponse du chatbot Groq et envoie la réponse à Deepgram pour la synthèse vocale.
- Enfin, l'audio synthétisé est lu en utilisant
play_audio.
Flux du script :
- Entrée vocale de l'utilisateur (takeCommandCMic)
- Réponse du chatbot Groq (create_groq_response)
- Conversion texte-parole (send_to_deepgram)
- Lecture audio (play_audio)
Améliorations :
- Gérer la récupération des clés d'API de manière sécurisée en utilisant des variables d'environnement.
- Ajouter une gestion des erreurs pour les clés d'API vides ou invalides.
- Inclure des messages plus conviviaux pour les erreurs d'API.

