可能以某种方式使用python 3.5的文本到语音
import speech
import time
response = speech.input("Say something, please.")
speech.say("You said " + response)
def callback(phrase, listener):
if phrase == "goodbye":
listener.stoplistening()
speech.say(phrase)
listener = speech.listenforanything(callback)
while listener.islistening():
time.sleep(.5)
错误:
Traceback (most recent call last):
File "D:/project/prog_2.py", line 1, in <module>
import speech
File "C:\Users\User\AppData\Roaming\Python\Python35\site-packages\speech.py", line 157
print prompt
^
SyntaxError: Missing parentheses in call to 'print'
我对gTTS有疑问可能会有一些建议:
答案 0 :(得分:2)
Traceback显示已安装的speech
模块中的代码导致在调用print
错误时缺少括号。这表明该模块已编写为在Python 2中工作 - 但不是Python 3。
两种选择是:
找到兼容Python 3的软件包;这可能是prove to be difficult
在Python 2中重写您的代码。
答案 1 :(得分:0)
我知道这很晚了,但是如果有人偶然发现这可能很有用。这样可以将文本转换为语音,但也可以将其转换为语音,以便该过程可以继续进行而不必等待python停止讲话。仅适用于Windows,因为需要win32com
import threading
import win32com
def talk(wordsToSay):
def thread_speak(wordsToSay):
import pythoncom
pythoncom.CoInitialize()
speaker = win32com.client.Dispatch("SAPI.SpVoice")
speaker.Speak(wordsToSay)
talk_thread = threading.Thread(target=thread_speak, args=[
wordsToSay], daemon=True)
talk_thread.start()
在我的整个应用程序中,我将随后调用talk并传递我想要它说的文字。例如
talk("Hello, my name is Josh")
input('Just waiting for this to stop talking before closing")