我的 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() 函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章