Pour celles et ceux qui souhaitent discuter avec VISON (Marvel) voici le code source à installer sus raspberry Pi après avoir installer Python.
Insérer le code dans un fichier que vous aurez appelé vision.py puis taper la commande suivante :
python3 vision.py
import os
import openai
from dotenv import load_dotenv
import time
import speech_recognition as sr
import pyttsx3
import numpy as np
from gtts import gTTS
language = ‘fr’
openai.api_key = ‘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’
load_dotenv()
model = ‘gpt-3.5-turbo’
Set up the speech recognition and text-to-speech engines
r = sr.Recognizer()
engine = pyttsx3.init(“dummy”)
voice = engine.getProperty(‘voices’)[1] # Ajustez cet indice pour sélectionner la voix française
engine.setProperty(‘voice’, voice.id)
def listen_for_wake_word(source):
print(“À l’écoute de ‘Vision’…”)
while True:
audio = r.listen(source)
try:
text = r.recognize_google(audio, language="fr")
if "vision" in text.lower():
print("Mot d'activation détecté.")
engine.say("Oui azais je suis à ta disposition comment puis-je t'aider?")
engine.runAndWait()
listen_and_respond(source)
break
except sr.UnknownValueError:
pass
def listen_and_respond(source):
print(“À l’écoute…”)
while True:
audio = r.listen(source)
try:
text = r.recognize_google(audio, language=”fr”)
print(f”Vous avez dit: {text}”)
if not text:
continue
# Send input to OpenAI API
response = openai.ChatCompletion.create(
model=”gpt-3.5-turbo”,
messages=[
{“role”: “user”, “content”: f”[En français s’il vous plaît] {text}”}
]
)
response_text = response.choices[0].message.content
print(response_text)
print(“Génération audio”)
myobj = gTTS(text=response_text, lang=language, slow=False)
myobj.save(“response.mp3”)
print(“Lecture audio”)
os.system(“vlc response.mp3”)
# Speak the response
print(“Lecture audio”)
engine.say(response_text)
engine.runAndWait()
if not audio:
listen_for_wake_word(source)
except sr.UnknownValueError:
time.sleep(2)
print(“Silence détecté, j’arrête de parler, j’écoute…”)
listen_for_wake_word(source)
break
except sr.RequestError as e:
print(f”Erreur lors de la demande de résultat; {e}”)
engine.say(f”Erreur lors de la demande de résultat; {e}”)
engine.runAndWait()
listen_for_wake_word(source)
break
Use the default microphone as the audio source
with sr.Microphone() as source:
listen_for_wake_word(source)

