我的 pyvona speak() 函数不起作用

Posted

技术标签:

【中文标题】我的 pyvona speak() 函数不起作用【英文标题】:my pyvona speak() function is not working 【发布时间】:2016-05-03 15:37:38 【问题描述】:

我正在尝试使用 pyvona,但在 speak() 函数中这种情况一直在发生。代码如下:

def speak(self, text_to_speak):
    """Speak a given text
    """
    if not pygame_available:
        raise PyvonaException(
            "Pygame not installed. Please install to use speech.")

    with tempfile.SpooledTemporaryFile() as f:
        with self.use_ogg_codec():
            self.fetch_voice_fp(text_to_speak, f)
        f.seek(0)
        if not pygame.mixer.get_init():
            pygame.mixer.init()
        channel = pygame.mixer.Channel(5)
        sound = pygame.mixer.Sound(f)
        channel.play(sound)
        while channel.get_busy():
            pass

错误是

Traceback (most recent call last):
    File "/Users/noahchalifour/Desktop/pyvona-0.25/pyvona.py", line 250, in <module>
        v.speak('Hello World')
    File "/Users/noahchalifour/Desktop/pyvona-0.25/pyvona.py", line 138, in speak
        sound = pygame.mixer.Sound(f)
TypeError: Unrecognized argument (type SpooledTemporaryFile)

【问题讨论】:

你用的是什么版本的pygame? 对我来说很好用,你是如何安装 pygame 和 pyvona 的? 我正在使用 pygame 1.9.2 我的 macbook 上只有这个问题,在 ubuntu 上可以正常工作。也许这是船长再次打破的东西之一 【参考方案1】:

试试这个

sound = pygame.mixer.Sound(file=f)

sound = pygame.mixer.Sound(file=f._file)

如果文件是声音文件,它应该可以工作。

【讨论】:

【参考方案2】:

在 pygame 遇到类似问题后,我转向 pyglet,尝试:

Import pyglet
music = pyglet.media.load('file.mp3')
music.play()
pyglet.app.run()

【讨论】:

以上是关于我的 pyvona speak() 函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

C ++覆盖方法不起作用

VBScript 不识别说话命令?

为啥我的数组或函数不起作用?

为啥我的基本指数函数不起作用? [关闭]

为啥我的 Pandas 引用多个列的“应用”函数不起作用? [关闭]

为啥我的函数在调用时不起作用? [关闭]