1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import pyttsx3
- from PyDictionary import PyDictionary
- import speech_recognition as spr
- from gtts import gTTS
- import os
- #Speaking class
- class Speak:
- def SpeakWord(self, audio):
- #Having initial constructor of pyttsx3
- pSpeakEngine= pyttsx3.init('sapi5')
- pVoices= pSpeakEngine.getProperty('voices')
- #Speaking audio that got as parameter
- pSpeakEngine.setProperty('voices', pVoices[0].id)
- pSpeakEngine.say(audio)
- pSpeakEngine.runAndWait()
- #Create Recognizer, Microphone instance
- sRecog= spr.Recognizer()
- sMic= spr.Microphone()
- #Capture voice from microphone
- with sMic as source:
- print("Speak 'Hello' to initiate Speaking Dictionary!")
- print("----------------------------------------------")
- sRecog.adjust_for_ambient_noise(source, duration= .2)
- rAudio= sRecog.listen(source)
- szHello= sRecog.recognize_google(rAudio, language= 'en-US')
- szHello= szHello.lower()
- #If you said 'Hello', initialize the speaking dictionary
- if 'hello' in szHello:
- sSpeak= Speak()
- pDict= PyDictionary()
- print("Which word do you want to find? Please speak slowly.")
- sSpeak.SpeakWord("Which word do you want to find Please speak slowly")
-
- try:
- sRecog2= spr.Recognizer()
- sMic2= spr.Microphone()
- #Capture the word that the user want to find the meaning of
- with sMic2 as source2:
- sRecog2.adjust_for_ambient_noise(source2, duration= .2)
- rAudio2= sRecog2.listen(source2)
-
- szInput= sRecog2.recognize_google(rAudio2, language= 'en-US')
-
- try:
- #Make sure that the recognizer got the correct word
- print("Did you said "+ szInput+ "? Please answer with yes or no.")
- sSpeak.SpeakWord("Did you said "+ szInput+ "Please answer with yes or no")
-
- sRecog2.adjust_for_ambient_noise(source2, duration= .2)
- rAudioYN= sRecog2.listen(source2)
- szYN= sRecog2.recognize_google(rAudioYN)
- szYN= szYN.lower()
- #If the user said 'yes' (When the recognizer got the correct word)
- if 'yes' in szYN:
- szMeaning= pDict.meaning(szInput)
- print("The meaning is ", end="")
- for i in szMeaning:
- print(szMeaning[i])
- sSpeak.SpeakWord("The meaning is"+ str(szMeaning[i]))
- #When the recognizer got the wrong word
- else: sSpeak.SpeakWord("I am sorry Please try again")
- #When the recognizer couldn't understand the answer(yes or no)
- except spr.UnknownValueError: sSpeak.SpeakWord("Unable to understand the input Please try again")
- except spr.RequestError as e: sSpeak.SpeakWord("Unable to provide required output")
- #When the recognizer couldn't understand the word
- except spr.UnknownValueError: sSpeak.SpeakWord("Unable to understand the input Please try again")
- except spr.RequestError as e: sSpeak.SpeakWord("Unable to provide required output")
|