SpeechRecognition 3.8.1
听我的声音四天。我已经在互联网上看到了以下内容:
sudo apt-get install python-pyaudio python3-pyaudio
对我不起作用。我经历了更多的讨论,一切都是徒劳的。
到目前为止,没有任何解决方案对我有用。请帮忙!!
经过多次不成功的尝试,我至少成功地使用命令
pyaudio
安装了
pipwin install pyaudio
我的Python代码:
import os
import pyttsx3, datetime, pyaudio
import speech_recognition as sr
# Initial Setup for pyttsx3 - speaking abilities
engine = pyttsx3.init("sapi5")
voices = engine.getProperty("voices")
engine.setProperty("voice", voices[1].id) # 0-male voice , 1-female voice
sr.Microphone.list_microphone_names()
# Initial Setup for speech_recognition - listening abilities
# r.energy_threshold = 10
# print(pyaudio.get_device_count() - 1)
def speak(speakable):
"""speak() takes a string and reads it loud"""
engine.say(str(speakable))
engine.runAndWait()
def takeCommand():
pyaudio.PyAudio()
r = sr.Recognizer()
"""It takes microphone input from the user and returns string output"""
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source, duration=0.9)
print("Listening...")
r.pause_threshold = 45
audio = ""
try:
audio = r.listen(source)
print("Recognizing...")
except Exception as e:
print("Listen err: ", e)
try:
print("Recognizing...")
query = r.recognize_google(audio)
print(f"User said: {query}\n") # User query will be printed.
except sr.UnknownValueError as e:
print("Say that again please...")
return "None" # None string will be returned
except Exception as err:
print("Check your internet...")
return "None"
return query
def wishMe():
hour = int(datetime.datetime.now().hour)
if hour >= 0 and hour < 12:
speak("Good Morning!")
elif hour >= 12 and hour < 18:
speak("Good Afternoon!")
else:
speak("Good Evening!")
speak(
"Hello Sir, I am Friday, your Artificial intelligence assistant. Please tell me how may I help you"
)
if __name__ == "__main__":
os.system("CLS")
while True:
command = takeCommand().lower()
print(f"Command: {command}")
if "wish" in command:
wishMe()
输出卡在
Listening...
。之后什么也没有发生。
你尝试过
python3 -m speech_recognition
吗?您应该看到类似以下内容:
...
A moment of silence, please...
Set minimum energy threshold to 51.208131879528096
Say something!
Got it! Now to recognize it...
You said hello
如果这不起作用,您的音频系统可能有问题。确保您可以录制音频 (https://onlinehardwaretest.com/microphone-test/) 并考虑重新启动系统。
当我评论这些行时:
def takeCommand():
.....
with sr.Microphone() as source:
# --> r.adjust_for_ambient_noise(source, duration=0.9)
print("Listening...")
# --> r.pause_threshold = 45
...
对我有用。