Text-to-Speech and Voice Selection in Python
This Python snippet de pyttsx3 library. It allows users to choose between male and female voice options for the speech output. The code also includes basic error handling for user inputs when selecting a voice. A fun way to create a voice assistant named Jarvis!utsavm18
python
a year ago
2.9 kB
3
Indexable
import pyttsx3 # pip install pyttsx3 for text-to-speech functionality
import datetime
import speech_recognition as sr # pip install SpeechRecognition for speech recognition functionality
engine = pyttsx3.init()
def speak(audio):
engine.say(audio)
engine.runAndWait()
def get_voices():
voices = engine.getProperty('voices')
try:
voice_choice = int(input("Press 1 for male voice\nPress 2 for female voice\n"))
if voice_choice == 1:
engine.setProperty('voice', voices[0].id) # Male voice
elif voice_choice == 2:
engine.setProperty('voice', voices[1].id) # Female voice
else:
print("Invalid choice, defaulting to male voice.")
engine.setProperty('voice', voices[0].id) # Default to male
except ValueError:
print("Invalid input, defaulting to male voice.")
engine.setProperty('voice', voices[0].id) # Default to male
speak("Hello, this is Jarvis.")
def get_time():
Time = datetime.datetime.now().strftime("%I:%M:%S") # hour = I, minutes = M, seconds = S
speak("The current time is:")
speak(Time)
def get_date():
year = int(datetime.datetime.now().year)
month = int(datetime.datetime.now().month)
day = int(datetime.datetime.now().day)
speak("The current date is:")
speak(day)
speak(month)
speak(year)
def greeting():
hour = datetime.datetime.now().hour
if hour >= 6 and hour < 12:
speak("Good morning sir!")
elif hour >= 12 and hour < 18:
speak("Good afternoon sir!")
elif hour >= 18 and hour < 24:
speak("Good evening sir!")
else:
speak("Good night sir!")
def wishme():
speak("Welcome back sir!")
get_time()
get_date()
greeting()
speak("Jarvis at your service. Please tell me what can I do for you?")
def takeCommandCMD():
query = input("Please tell me what can I do for you?\n")
return query
def takeCommandMic():
r = sr.Recognizer() # Corrected from 'recogniser' to 'Recognizer'
with sr.Microphone() as source:
print("Listening...")
r.pause_threshold = 1
audio = r.listen(source)
try:
print("Recognizing...")
query = r.recognize_google(audio, language="en-IN")
print(query)
except Exception as e:
print(e)
speak("Say that again please...")
return "None"
return query
if __name__ == "__main__":
wishme()
while True:
query = takeCommandMic().lower()
if "time" in query:
get_time()
elif "date" in query:
get_date()
elif "exit" in query or "quit" in query: # Added exit conditions to stop the loop
speak("Goodbye!")
break # Exit the while loop
Editor is loading...
Leave a Comment