I am trying to run a basic code for speech recognition. But I am getting an error in the following line:
audio = r.listen(source)
The small piece of code that I am trying is:
import speech_recognition as s_r
print(s_r.__version__) # just to print the version not required
r = s_r.Recognizer()
my_mic = s_r.Microphone() #my device index is 1, you have to put your device index
with my_mic as source:
print("Say now!!!!")
audio = r.listen(source) #take voice input from the microphone
print(r.recognize_google(audio)) #to print voice into text
I have developed multiple projects using this code but this time I am getting the following error:
3.10.0
Say now!!!!
Traceback (most recent call last):
File "D:\professional\JARVIS\assistant\test.py", line 7, in <module>
audio = r.listen(source) #take voice input from the microphone
File "C:\Users\theas\AppData\Roaming\Python\Python38\site-packages\speech_recognition\__init__.py", line 465, 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:\professional\JARVIS\assistant\test.py", line 7, in <module>
audio = r.listen(source) #take voice input from the microphone
File "C:\Users\theas\AppData\Roaming\Python\Python38\site-packages\speech_recognition\__init__.py", line 189, in __exit__
self.stream.close()
AttributeError: 'NoneType' object has no attribute 'close'
>>>
I am using this code on a new system with Windows 11. I have installed a fresh Python with default settings with version 3.11.4
. The following library versions have been installed for speech recognition:
SpeechRecognition: 3.10.0
Pyaudio: 0.2.13
The same code is working in my other system. Please help me find this silly mistake I made during the setup.
UPDATE: When I try to print the objects of my_mic
. I get the following output:
['CHUNK', 'MicrophoneStream', 'SAMPLE_RATE', 'SAMPLE_WIDTH', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'audio', 'device_index', 'format', 'get_pyaudio', 'list_microphone_names', 'list_working_microphones', 'pyaudio_module', 'stream']
When I try to get a list of all the microphones present, I get a large list. But when I try to get the list of working microphones, that is empty.
from
Error in r.listen(source) while using the speech recognition module