Hello,
I got my python script to work using Text-To-Speech output but when I run it, it cuts off the last word or letters.
Ex:
Is there a way to fix this? I tried playing around with the speech rate but it didn't help.
Any help is appreciated,
Thanks.
Here's The full code:
I got my python script to work using Text-To-Speech output but when I run it, it cuts off the last word or letters.
Ex:
speak("How may I be of service?")Will say "How may I be of Serv-" and the "-ice" get's cut off.
Is there a way to fix this? I tried playing around with the speech rate but it didn't help.
Any help is appreciated,
Thanks.
Here's The full code:
#!/usr/bin/env python3 import json import random import datetime import operator import os import time import sys import requests from bs4 import BeautifulSoup from Weather import * import wikipedia import wolframalpha import pyttsx3 import speech_recognition as sr from Animations import startupAnimation #------------------------------------------------------------------------------------- #Commander Name (You) and A.I Name #------------------------------------------------------------------------------------- Commander = "Commander" AI_Name = 'Baxter' #------------------------------------------------------------------------------------- def speak(audio): engine = pyttsx3.init() voices = engine.getProperty('voices') engine.setProperty('voice',voices[1].id) engine.setProperty('rate', 125) engine.setProperty('volume', 1.0) engine.say(audio) engine.runAndWait() def wishMe(): hour = int(datetime.datetime.now().hour) if hour>=0 and hour<12: speak("Good Morning" + Commander) elif hour>=12 and hour<18: speak("Good Afternoon" + Commander) else: speak("Good Evening" + Commander) def listenCommand(): command=0 hear = sr.Recognizer() with sr.Microphone() as source: print("Listening...") audio = hear.listen(source) #--------------------------- # Uses google API to listen try: print("Recognizing...") command = hear.recognize_google(audio, language='en-in') print(f'{Commander} : {command}\n') #-------------------------------- except: pass return command wishMe() speak("How may I be of service?") #Initiate Start Up Animation #startupAnimation() while True: command = listenCommand() command=str(command).lower() #------------------------------------------------------------------------------------- #Search Wikipedia (General Info) #------------------------------------------------------------------------------------- if ('weather' not in command): if ('who is' in command) or ('what is the' in command) or ('what is a' in command) or ("what is" in command): if ('time' not in command): if ('news' not in command): speak('Searching Wikipedia...') command = command.replace("who is","") command = command.replace("what is the","") command = command.replace("what is a","") command = command.replace("what is","") results = wikipedia.summary(command, sentences = 2) #---------------------- #Auto typing animation: print("Baxter: ", end="") for i in results: sys.stdout.write(i) sys.stdout.flush() time.sleep(0.05) print("\n") #---------------------- speak(results) #------------------------------------------------------------------------------------- #Search Wolfram Alpha (Math/Conversions, Definitions) #------------------------------------------------------------------------------------- if ('weather' not in command): if ('news' not in command): if ('calculate' in command) or ("what's" in command) or ('define' in command): speak('Searching Wolfram Alpha...') command = command.replace("calculate","") command = command.replace("what's","") command = command.replace("define","") # Wolframalpha App Id appId = 'JH9XHR-W9J76L7H5A' # Wolfram Instance client = wolframalpha.Client(appId) res = client.query(''.join(command)) results = next(res.results).text #---------------------- #Auto typing animation: print("Baxter: ", end="") for i in results: sys.stdout.write(i) sys.stdout.flush() time.sleep(0.05) print("\n") #---------------------- speak(results) #------------------------------------------------------------------------------------- #Search News #------------------------------------------------------------------------------------- if ('news' in command): speak('Searching news networks...') command = command.replace("news","") #Gets the news headlines from this url: url='https://www.google.com/search?q=windsor+news&client=firefox-b-d&source=lnms&tbm=nws&sa=X&ved=2ahUKEwjFr5SwoJb1AhXELs0KHdabBAEQ_AUoAXoECAEQAw&biw=1024&bih=486' results = requests.get(url) soup = BeautifulSoup(results.text, 'html.parser') headlines = soup.find('body').find_all('h3') for x in headlines: print("Baxter:",x.text.strip()) speak(results) #------------------------------------------------------------------------------------- #Search Weather #------------------------------------------------------------------------------------- if ('weather' in command): if ('week' in command): speak('Searching weather networks...') command = command.replace("weather for the week","") #Call weather data for the week: displayWeeksWeatherData() else: speak('Searching weather networks...') command = command.replace("weather","") #Call weather data for today: displayWeatherData() #------------------------------------------------------------------------------------- #Tell Time #------------------------------------------------------------------------------------- elif ('time' in command): speak('Scanning local clock networks...') command = command.replace("time","") strTime = datetime.datetime.now().strftime("%I:%M%P") speak("The time is {strTime}") print("Baxter: The time is ", strTime) #------------------------------------------------------------------------------------- #Enter the Matrix (Easter Egg) #------------------------------------------------------------------------------------- elif ('matrix' in command): speak('Entering the matrix...') command = command.replace("matrix","") response = "Taking the red pill..." #---------------------- #Auto typing animation: print("Baxter: ", end="") for i in response: sys.stdout.write(i) sys.stdout.flush() time.sleep(0.2) print("\n") #---------------------- time.sleep(2) os.system("cmatrix") #------------------------------------------------------------------------------------- #------------------------------------------------------------------------------------- #Stop Program/Script Command #------------------------------------------------------------------------------------- elif ('stop' in command) or ('shutdown' in command) or ('quit' in command): speak("Shutting Down...") response = "Terminating program..." #---------------------- #Auto typing animation: print("Baxter: ", end="") for i in response: sys.stdout.write(i) sys.stdout.flush() time.sleep(0.2) print("\n") #---------------------- exit() #-------------------------------------------------------------------------------------