2017-03-16 4 views
0

Guten Tag, ich lerne und mit pyttsx für Sprache, die Sache ist, dass ich es als „weiblich“ Stimme verwenden möchten, aber ich kann es nicht mit diesem Code:Pyttsx Stimme Geschlecht

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 

Antwort

2

habe ich den folgenden Code durch die Stimmen iterieren

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() 

auf meinem Windows-Maschine 10 die weibliche Stimme die weibliche Stimme \ Microsoft \ Speech \ Voices \ Tokens \ TTS_MS_EN-US_ZIRA_11.0 HKEY_LOCAL_MACHINE \ SOFTWARE zu finden war

Also änderte ich meinen Code wie dieser

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

zu suchen, wenn Sie Linux/espeak verwenden ...

den Code ändern hier engine.setProperty('voice', 'english+f1')

Sie die Stimme durch Zugabe von f1 bis f4 ändern

0

Dies ist eine einfachere Lösung:

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