Pyttsx,代码中无法更改性别,问题出在哪?

1 投票
3 回答
3992 浏览
提问于 2025-04-18 08:07

这是我第一次用这个很棒的库!我在Linux系统上使用,开始的时候挺简单的,但现在我想把语音改成女性的声音... 我试着用下面的代码,但没有成功... 能帮帮我吗?

import pyttsx

def say(text):
    print "{}".format(text)
    engine = pyttsx.init()
    engine.setProperty('rate', 100)
    voices = engine.getProperty('voices')
    for voice in voices:
        print voice.gender
        engine.setProperty('female', voice.gender)
        print "change: {}".format(voice.gender)
    engine.say(text)
    engine.runAndWait()

3 个回答

0

对我来说,在Linux系统中,唯一能把声音改成女性声音的方法是:

voices = speaker.getProperty('voices')
speaker.setProperty('voice', 'english+f4')
speaker.say('Finally, something worked!')
speaker.runAndWait()
0

你可以试试下面的代码。对我来说效果很好:

for voice in voices:
     engine.setProperty('voice',voices[1].id)
      engine.say("Hello") 
 engine.runAndWait()
1
engine.setProperty('female', voice.gender)

这个引擎没有一个叫做 female 的属性,所以把这个属性设置为当前声音的性别是没有意义的,正如你发现的那样,它也不会产生任何效果。

我猜你的意思是想遍历所有可用的声音,然后选择第一个找到的女性声音。如果是这样的话,可以试试下面的代码:

for voice in voices:
    if voice.gender == "female"
        engine.setProperty('voice', voice.id)
        break

撰写回答