Bonjour.

Je sollicite à nouveau votre aide, sur Python cette fois.

J'ai crée un (petit) projet d'assistant virtuel qui interagit avec la personne (comme Alexa chez Amazon).

Mais après une mise à jour de PIP et des librairies associées à ce projet (pyaudio, pywhatkit, speech_recognition ...), cette commande ne répond plus et n'émet plus de son après le premier bonjour.

Voilà les erreurs : line 52, in alicia_command

voice = listener.listen(source)

^^^^^^^^^^^^^^^^^^^^^^^

File "d:\Chemin_du_Projet\venv\Lib\site-packages\speech_recognition\__init__.py", line 651, in listen

assert source.stream is not None, "Audio source

must be entered before listening, see documentation

for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?"

^^^^^^^^^^^^^^^^^^^^^^^^^

AssertionError: Audio source must be entered before

listening, see documentation for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "d:\Chemin_du_Projet\main.py", line 188, in <module>

run_alicia()

File "d:\Chemin_du_Projet\main.py", line 68, in run_alicia

command = alicia_command()

^^^^^^^^^^^^^^^^

File "d:\Chemin_du_Projet\main.py", line 47, in alicia_command

with sr.Microphone() as source:

File "d:\Chemin_du_Projet\venv\Lib\site-packages\speech_recognition\__init__.py", line 201, in __exit__

self.stream.close()

^^^^^^^^^^^^^^^^^

AttributeError: 'NoneType' object has no attribute 'close'

Et voilà l'extrait du code concerné :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 
# import des librairies
import sys
import pyttsx3
import speech_recognition as sr
import pywhatkit
import datetime
import wikipedia
import random
import webbrowser
 
# initialisation de la reconnaissance vocale
listener = sr.Recognizer()
engine = pyttsx3.init()
# Pour la langue parlée
engine.setProperty("voice", "french")
# Pour la vitesse d'élocution
engine.setProperty("rate", 200)
 
name = input("Comment t'appelles-tu ? ")
 
# FONCTION pour parler
def talk(text) :
    engine.say(text)
    engine.runAndWait()
 
# FONCTION pour saluer
def greetme():
    # initialisation de l'heure actuelle
    currentHour = int(datetime.datetime.now().hour)
    # création des conditions
    if 0 <= currentHour <= 18:
        talk("Bonjour" + name)
    if 18 <= currentHour <= 24:
        talk("Bonsoir" + name)
 
# pour paramétrer la voix féminine française
voices = engine.getProperty("voices")
engine.setProperty("voice", voices[0].id)
# appel de la fonction greetme
greetme()
engine.say("Comment vas-tu ? ")
engine.runAndWait()
 
# FONCTION pour envoyer des instructions
def alicia_command():
    # utilisation du microphone interne
    with sr.Microphone() as source:
        print("Un instant, s'il te plait ...")
        # un temps de pause
        listener.pause_threshold = 3
        # passer le texte à la commande vocale
        voice = listener.listen(source)
        command = listener.recognize_google(voice, language="fr-FR")
        # vérification si la commande est bien demandée
        if "alicia" in command :
            command = command.replace("alicia", "")
        return command
 
 
# FONCTION pour éxécuter des tâches
def run_alicia():
 
    # définir un navigateur pour ouvrir les pages
    navigateur_path = r"C:\CheminDuNavigateur\Navigateur.exe"
    # enregistrer le site
    webbrowser.register('navigateur', None, webbrowser.BackgroundBrowser(navigateur_path))
    # appel de la fonction alicia_command
    command = alicia_command()

Merci d'avance !!!