首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyttsx3 runAndWait()方法卡住

Pyttsx3 runAndWait()方法卡住
EN

Stack Overflow用户
提问于 2019-05-08 00:29:23
回答 2查看 4.1K关注 0票数 2

我正在尝试使用pyttsx3模块在python中做一个虚拟助手。问题是,我使用pyttsx3的talk (音频)方法只说了一次,即使我必须说不止一次,它在第一个命令之后也会保持沉默。

事实是,我一直在上网,似乎没有人有类似于我的问题,我变得有点疯狂。我已经看到了是否可能是一个问题,模块没有正确安装或其他什么,但似乎一切正常。我正在使用Python3.7版本、Pycharm、Pyttsx3最后一个版本和Windows10。

我附加了密码看看你是否知道为什么。我搜索过互联网,但似乎没有人有这个问题,所以我想这可能是我代码中的一些错误。输出是计算机:你好,先生,我是您的数字助理LARVIS,贾维斯夫人!ans也应该打印下一行:

代码语言:javascript
复制
import pyttsx3

engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[len(voices) - 2].id)


def speak(audio):
    print('Computer: ' + audio)
    engine.say(audio)
    engine.runAndWait()

if __name__ == '__main__':
    speak('Hello Sir, I am your digital assistant LARVIS the Lady Jarvis!')
    speak('How may I help you?')
EN

回答 2

Stack Overflow用户

发布于 2019-08-27 17:08:48

为了解决这个问题:

  1. 为pyttsx3创建一个类;
  2. 创建一个类的实例,将文本发送到它,然后是del()它。
  3. 重复步骤2多次。

全班:

代码语言:javascript
复制
import pyttsx3

class _TTS:

    engine = None
    rate = None
    def __init__(self):
        self.engine = pyttsx3.init()


    def start(self,text_):
        self.engine.say(text_)
        self.engine.runAndWait()

实例:

代码语言:javascript
复制
 tts = _TTS()
 tts.start("text")
 del(tts)
票数 3
EN

Stack Overflow用户

发布于 2019-05-11 21:26:11

我也遇到了这个问题(也运行python3.7)。这并不是最好的实现,但是如果我将引擎初始化放在我的time函数中,那么它就能工作,这样每次它说话时它都会重新初始化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56032027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档