From f0b74984b013ddf730b7b947318d7dd5826346e4 Mon Sep 17 00:00:00 2001 From: Aleksey Lim Date: Sat, 21 Feb 2009 12:49:31 +0000 Subject: Use espeak command when gst-plugins-espeak is not installed(Joshua Minor) --- (limited to 'Speak.activity/voice.py') diff --git a/Speak.activity/voice.py b/Speak.activity/voice.py index 9727fb0..256bbf0 100644 --- a/Speak.activity/voice.py +++ b/Speak.activity/voice.py @@ -22,6 +22,7 @@ # along with Speak.activity. If not, see . +import subprocess import pygst pygst.require("0.10") import gst @@ -84,16 +85,29 @@ class Voice: def allVoices(): if len(_allVoices) == 0: - for i in gst.element_factory_make('espeak').props.voices: - name, language = i.split(':') - if name in ('en-rhotic','english_rp','english_wmids'): - # these voices don't produce sound - continue - voice = Voice(language, name) - _allVoices[voice.friendlyname] = voice - + try: + for i in gst.element_factory_make('espeak').props.voices: + name, language = i.split(':') + if name in ('en-rhotic','english_rp','english_wmids'): + # these voices don't produce sound + continue + voice = Voice(language, name) + _allVoices[voice.friendlyname] = voice + except: + result = subprocess.Popen(["espeak", "--voices"], stdout=subprocess.PIPE).communicate()[0] + for line in result.split('\n'): + m = re.match(r'\s*\d+\s+([\w-]+)\s+([MF])\s+([\w_-]+)\s+(.+)', line) + if m: + language, gender, name, stuff = m.groups() + if stuff.startswith('mb/') or name in ('en-rhotic','english_rp','english_wmids'): + # these voices don't produce sound + continue + voice = Voice(language, name) + _allVoices[voice.friendlyname] = voice return _allVoices + + def defaultVoice(): """Try to figure out the default voice, from the current locale ($LANG). Fall back to espeak's voice called Default.""" -- cgit v0.9.1