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