Help with espeak in python - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Help with espeak in python (/thread-35937.html) Pages:
1
2
|
Help with espeak in python - Extra - Dec-31-2021 Hello, I'm using arch-linux (Manjaro Gnome) and I downloaded espeak-ng successfully by doing: sudo pacman -S espeak-ng. I can test it in the terminal by inputting: espeak-ng "This is a test"and it will speak it. However, I'm trying it implement it into my python code. I tried adding import espeak& from espeakng import ESpeakNGbut I get an error saying there is no module named 'espeak' or 'espeakng'. My question is how do I import espeak into my code so I can get it to work? I've been scouring the internet and haven't found anything useful. Any help will be greatly appreciated. Thanks. (I also tried running the code without importing espeak and just using pyttsx3 but I get another error (see below)). My Code: import json import random import datetime import operator import wikipedia import wolframalpha import pyttsx3 import speech_recognition as sr Commander = "Commander" print ("Initialising B.A.X.T.E.R...") def speak(text): engine = pyttsx3.init() voices = engine.getProperty('voices') engine.setProperty('voice',voices[1].id) engine.setProperty('rate', 125 ) engine.setProperty('volume',1.0) engine.say(text) 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) speak("How may I be of service?") 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'{BOSS} : {command}\n') except: pass return command #-------------------------------- speak("Initialising Baxter..........") wishMe() def main(): command = listenCommand() command=str(command).lower() if ('who is' in command) or ('what is' in command): speak('Searching Wikipedia...') command = command.replace("who is","") command = command.replace("what is","") results = wikipedia.summary(command, sentences = 1) print("Baxter:",results) return speak(results) elif 'stop' in command: speak("Shutting Down...") return exit() else: return 0 while True: main()If I run that code I get this error:
RE: Help with espeak in python - bowlofred - Jan-01-2022 Have you installed the python espeakng module? It looks like you've installed the espeak library, but not the python interface. Presumably you need to also pip install espeakng in your python environment.
RE: Help with espeak in python - Extra - Jan-02-2022 (Jan-01-2022, 01:13 AM)bowlofred Wrote: Have you installed the python espeakng module? Thanks for your response. The error disappeared and I got it to mostly work. It will recognize and execute my commands but it won't speak the results. If I do mySpeaker.say('Initializing Baxter')it will speak it, but I can't get it to speak anything else. If I do speak("Good Afternoon" + Commander)since it's in the speak function, it won't work. def speak(text): mySpeaker = espeakng.Speaker() And if I do mySpeaker.say('Good Afternoon" + Commander')It also won't work. Why is that and how can I fix it? Thanks. import json import random import datetime import operator import wikipedia import wolframalpha import pyttsx3 import espeakng import speech_recognition as sr Commander = "Commander" print ("Initializing B.A.X.T.E.R...") def speak(text): mySpeaker = espeakng.Speaker() #mySpeaker.say('Initializing Baxter') 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) speak("How may I be of service?") 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 #-------------------------------- speak("Initializing Baxter..........") wishMe() def main(): command = listenCommand() command=str(command).lower() if ('who is' in command) or ('what is' in command): speak('Searching Wikipedia...') command = command.replace("who is","") command = command.replace("what is","") results = wikipedia.summary(command, sentences = 1) print("Baxter:",results) return speak(results) elif 'stop' in command: speak("Shutting Down...") return exit() else: return 0 while True: main() RE: Help with espeak in python - menator01 - Jan-02-2022 Using a basic function, this works for me import pyttsx3 def speak(text): engine = pyttsx3.init() engine.say(text) engine.runAndWait() speak('Hi there, what is your name?')The wishme function def wishme(): engine hour = datetime.now().hour if hour < 24: engine.say('Good evening.') elif hour < 18: engine.say('Good afternoon.') else: engine.say('Good morning.') engine.say('How can I be of service?') engine.runAndWait() RE: Help with espeak in python - Extra - Jan-02-2022 (Jan-02-2022, 08:20 PM)menator01 Wrote: Using a basic function, this works for me If I use the pyttsx3 engine I still get this error and it doesn't work.
RE: Help with espeak in python - menator01 - Jan-02-2022 As bowlofred suggested, make sure you have the correct library of espeak or espeak-dev installed. Is your script using the desired version of python? When on my linux box I use the #! /usr/bin/env python3 at the top of my scripts.
RE: Help with espeak in python - Extra - Jan-02-2022 I added #! /usr/bin/env python3at the top of my script and no luck (I also downloaded espeak-ng from the manjaro app store and did the pip install espeakng I still get that OSError for libespeak. Then I found this: ROS Index and according to this the libespeak-dev is not supported on Arch-Linux (which I am using). Is that the reason my espeak won't work? Is there another offline TTS alternative that I can use? Thanks. Or is there a way to send the text I want to speak to the terminal where it would execute espeak-ng "this is a test"since that seems to work. So it would replace the "this is a test" text with the text I want it to speak from my code. Is that possible? RE: Help with espeak in python - menator01 - Jan-02-2022 I do not have any experience with arch linux but, did find this on a quick search https://aur.archlinux.org/packages/?O=0&SeB=nd&K=text+to+speech&outdated=&SB=m&SO=a&PP=250&do_Search=Go RE: Help with espeak in python - Extra - Jan-02-2022 (Jan-02-2022, 09:12 PM)menator01 Wrote: I do not have any experience with arch linux but, did find this on a quick search Thanks for your help. I'll look into that. Although I was thinking and came up with kind of a wild idea. I have an Arduino with a Speech Synthesizer shield attached to it (it's called a Movi Shield) and I was wondering it it was possible to send the strings/text I want to be spoken from my Python script to my Arduino and have the Movi shield (speech synthesizer) read out/speak the text. Is that something that can be done via serial commands? RE: Help with espeak in python - menator01 - Jan-02-2022 One of the more experienced people will have to answer that one. Like Arch Linux, I;m not familiar with Arduino. Sorry I could not be more help. |