2017-03-16 81 views
0

下午好,我在学习和使用pyttsx语音,事情是,我想用它作为“女性”的声音,但使用此代码,我不能做到这一点:Pyttsx音性别

import pyttsx as pt 
from pyttsx import voice 
engine = pt.init() 
voices = engine.getProperty('voices') 
#engine.setProperty('gender', 'female') # also does not work 
engine.setProperty('female', voice.Voice.gender) #not even 
engine.setProperty('female', voice.gender) #does not work 
engine.setProperty('voice', voices[4].id) 
engine.say("Hello World") 
engine.runAndWait() 


class Voice(object): 
    def __init__(self, id, name=None, languages=[], gender=None, age=None): 
     self.id = id 
     self.name = name 
     self.languages = languages 
     self.gender = gender 
     self.age = age 

回答

2

我用下面的代码通过声音来迭代找到女声

import pyttsx 
engine = pyttsx.init() 
voices = engine.getProperty('voices') 
for voice in voices: 
    engine.setProperty('voice', voice.id) 
    print voice.id 
    engine.say('The quick brown fox jumped over the lazy dog.') 
engine.runAndWait() 

在我的Windows 10的机器女声是HKEY_LOCAL_MACHINE \ SOFTWARE \微软\语音\声音\令牌\ TTS_MS_EN,US_ZIRA_11.0

所以我改变了我的代码看起来像这样

import pyttsx 
engine = pyttsx.init() 
engine.setProperty('voice', 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\TTS_MS_EN-US_ZIRA_11.0') 
engine.say('The quick brown fox jumped over the lazy dog.') 
engine.runAndWait() 
1

,如果你使用Linux/espeak的...

改变这里engine.setProperty('voice', 'english+f1')

代码,你可以通过添加F1至F4

更改语音
0

这是一个更简单的解决方案:

engine = pyttsx.init() 
voices = engine.getProperty('voices') 
engine.setProperty('voice', voices[1].id)