Mercurial > boomslang
diff pyntnclick/speech.py @ 548:ded4324b236e pyntnclick
Moved stuff around, broke everything.
author | Jeremy Thurgood <firxen@gmail.com> |
---|---|
date | Sat, 11 Feb 2012 13:10:18 +0200 |
parents | gamelib/speech.py@a2c09200a433 |
children | 38fb04728ac5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyntnclick/speech.py Sat Feb 11 13:10:18 2012 +0200 @@ -0,0 +1,44 @@ +# speech.py +# Copyright Boomslang team, 2010 (see COPYING File) +# Speech playing and cache + +import re + +from sound import get_sound + + +# cache of string -> sound object mappings +_SPEECH_CACHE = {} + +# characters not to allow in filenames +_REPLACE_RE = re.compile(r"[^a-z0-9-]+") + + +class SpeechError(RuntimeError): + pass + + +def get_filename(key, text): + """Simplify text to filename.""" + filename = "%s-%s" % (key, text) + filename = filename.lower() + filename = _REPLACE_RE.sub("_", filename) + filename = filename[:30] + filename = "%s.ogg" % filename + return filename + + +def get_speech(thing_name, text): + """Load a sound object from the cache.""" + key = (thing_name, text) + if key in _SPEECH_CACHE: + return _SPEECH_CACHE[key] + filename = get_filename(thing_name, text) + _SPEECH_CACHE[key] = sound = get_sound("speech", filename) + return sound + + +def say(thing_name, text): + """Play text as speech.""" + sound = get_speech(thing_name, text) + sound.play()