语音文本到语音与python 3.5

时间:2016-05-12 04:32:19

标签: python-3.x speech-recognition speech

可能以某种方式使用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有疑问可能会有一些建议:

gTTS HTTPError: 403 Client Error: Forbidden for url

2 个答案:

答案 0 :(得分:2)

Traceback显示已安装的speech模块中的代码导致在调用print 错误时缺少括号。这表明该模块已编写为在Python 2中工作 - 但不是Python 3。

两种选择是:

  1. 找到兼容Python 3的软件包;这可能是prove to be difficult

  2. 在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")