PAMELA - Lipsynch utility for Moho
Python-based Accessory for Moho Enhanced Lipsynch Activities
What it does
PAMELA helps you to take a WAV sound file (containing speech) and create a Moho switch data file, which (in Moho) controls the sequence of visible mouth shapes to give the appearance of speech - i.e. if you're animating with Lost Marble's Moho, PAMELA helps you get your characters talking.
For those familiar with Magpie,
it's a basically like an amateur version of that excellent program,
specifically for Moho users, written by a hobbyist programmer.
PAMELA also provides automatic breakdown of words into phonemes to increase productivity.
PAMELA is currently for Windows machines only - a Mac port is
underway (thanks, Rich!)
Moho switch layers
Of course, you could also use it for controlling layers of a character's eyes, limbs, hands, ears and tail, etc., synched to speech, music, or some other sound file.
Where to get it
Right here :
Important installation note : - the Windows binary executables are designed
to be unzipped to C:\, preserving the folder names and structure. If
you unzip to another location, you will need to edit the file
PAMELA.prf in the Pamela_beta02\Pamela folder to point to the
location of the sample.mot file, and you will also need to
edit the sample projects
(the files with a filetype extension of pam) in the
Pamela_beta02\samples folder to point to the location of the
sample WAV file.
Use an ASCII text editor - if you don't know what an ASCII text
editor is, or you don't know the difference between a text editor and a word
processor, or you don't know how to save ASCII text from your word
processor, then use the Windows Notepad accessory (not Wordpad) -
Notepad is an ASCII text editor.
- pamela031.zip (1,370 kB) - fix for crash
when dragging on canvas background without a chosen phoneme.
Extract (and replace) the files into your PAMELA binary folder, the folder with
PAMELA.exe in it (C:\Pamela_beta03\bin on a standard install)
- Pamela_03_install.exe -
proper installation file for Windows (6.2 MB)
- Pamela_03_source.zip -
source files and preview images (place in a "preview" subfolder)
- about 80 kB. Requires CMU dictionaries, below, and an installed
copy of the
Snack Sound Toolkit and
Python 2.1 or greater
- cmu_dicts.zip (3.4 MB pronunciation
and soundex dictionaries in BSDDB 1x format,
using Carnegie-Mellon University phonetic breakdown)
What it costs
This software is freeware and open source, for personal, educational,
corporate, and/or commercial use. Due to the GPL license of the sound
toolkit used, PAMELA is also covered by the GPL license.
I do have a few requests :
- If you have Python source code bug fixes or feature enhancement
patches for PAMELA,
send 'em to
me and I'll add 'em in.
Naturally, you'll get credit/blame 8-) in the documentation and source.
(Feature requests that I have to write the code for, see below under
Words of Warning and also see Future Plans)
- If you want to port it to BeOS, be my guest
- Please don't put it up for download on other web sites, include a link to this web page instead - as features get added and bugs get fixed, I'd prefer it not to end up with multiple out-of-date versions scattered all over the place.
- If you include it on book or magazine CD-ROMS, with commercial
software, etc., please make it quite clear that this is a separate
freeware product and not part of any commercial package (e.g. not an
official part of Lost Marble Moho - I don't want them getting blamed for
my bugs), and provide the address of this web page for updates and
source code availability.
- Yes, you can include PAMELA screenshots in any reviews, software links pages, tutorials, etc.
PAMELA wouldn't be possible without :
- Moho, the fun and inexpensive 2D vector-based animation software (with bones and layers), by Mike Clifton and others at Lost Marble (special thanks for the Switch layers in particular, and making Switch data an ASCII file)
- Python, a wonderful and surprisingly fun programming language by Guido van Rossum, with contributions by others too numerous to mention (although a special thanks to Tim Peters for his varied expositions, contributions, and wit, given forth in comp.lang.python, and to Fredrik Lundh particularly for his Tkinter contributions in comp.lang.python).
- Tkinter, a Python GUI toolkit based on Tk/Tcl - included as an optional install with Windows/Mac binary installations of Python.
- The Snack Sound Toolkit,
a fantastic Tcl-based sound manipulation toolkit by Kåre Sjölander
- Tkinter documentation by Fredrik Lundh
- Tkinter book by John Grayson
- Carnegie-Mellon University, for providing the pronunciation dictionary
- Thomas Heller, the PY2EXE author, so I can provide a Windows executable version for those who don't wish to dabble in scripting and interpreters
- Ken F. Morton's Lipsync software (now incorporated into Animation:Master) which, along with Magpie, provided inspiration for the concept of PAMELA
- The support of my lovely wife (also, by some strange coincidence, named Pamela), who cooked me meals and made sure I ate them while I was writing this software.
Licences and copyrights
How to use it
Errm, you might have missed the note on the table of contents above - the how to use it page is here
Words of warning
Limitations - err, other features
- PAMELA has no warranties, no guarantees of fitness for any particular task, etc. - use at your own risk.
- PAMELA has no animation output, and you'll have to write your
own export code if you want output support for
only Moho Switch layer data files are currently exported.
- PAMELA support is on an ad hoc, as-time-permits, after-hours, as-I-feel-like-it, hobbyist-only basis.
- Beta testing and bug fixing so far has been extremely limited.
- It works on my PC - if it doesn't work on your machine, sorry, but that's your problem - the source is available, send me a patch when you've found the problem.
- Feature requests and bug reports will be accepted, but may not get high priority.
- Please note : the Snack Sound Toolkit uses the
standard viral GPL license,
so that makes this version of PAMELA GPLed too - this means you
can't distribute a closed-source derivation of any of this.
If any of the above worries you, don't use PAMELA, go register the
excellent Magpie (or Magpie Pro)
lipsynch utility intead.
(Somewhat more expensive, but a lot more established, professional,
tested, flexible, and supported. Customisable output.
Evaluation version available for download.)
Note : Catnap Studio and Myles are not associated with Magpie in any
If you own Animation:Master 8.x or better, you can use its phonetic
breakdown system instead, and use the utility
Motley to convert the dopesheet
action into a Moho Switch layer data file.
History and planned development
- Version 0.1 (first public beta) released on 07 December 2001
(Australian EST), and announced on the Yahoo Group for Moho users at
What's new: everything
- Version 0.2 (second public beta) released on 12 March 2002
(Australian EST), and announced on the Yahoo Group for Moho users at
- import Switch data files (assumes ".dat" file name
extension) - but see
for more about MOT files
- optional simplified phonetic breakdown with reduced phonemes
- Spanish phonetic breakdown (and simplified breakdown)
- image preview when a phoneme is selected on the canvas
- image sequence preview with phoneme-by-phoneme sound
playback (somewhat stuttery)
- fixed : phoneme insertion or replacement
- PLEASE READ :
- The image preview has fairly rigid requirements.
- You can provide your own preview images - size is not vital, but
I'd recommend 120x120 pixels.
- All images should be the same size.
- The images must be named (case-sensitive names) according to the
phoneme names in the mot file currently being used, and must be
in the GIF
format with an extension of ".gif" (lower-case).
- All images must be in the "preview" folder underneath the folder
containing the main Pamela executable (or main Python file).
- There must be an image named "blank.gif" in the images.
- I have provided a set of preview images for the modified Preston
set I currently use, which is represented in the sample files
- Version 0.21 released on 16 March 2002
- The canvas now resizes horizontally with the window
(requested by David Knight)
- The canvas now starts at a larger size horizontally
- Fixed : changing/editing a phoneme wasn't exported or saved.
- Fixed : loading the tutorial from program (help menu)
should now work (on Windows, anyway)
- Changed : some of the internal event handling, no visible
user effect, but hopefully better memory usage
- Changed : if the preferences file or translation file
cannot be found, now provides an error message before exiting
- Version 0.3 released on 4 April 2002
- Added pause indicator (underscore character, i.e. "_") to improve automatic matching
You can now insert an underscore in the sentence to be
phonetically broken down - this will insert a space before the next
phoneme, equivalent to the space taken by a single phoneme (according
to the Preferences setting of Frames Per Phoneme)
Treat the underscore as a word in itself
e.g. hello _ world becomes HH EH0 L OW1 (pause) W ER1 L D
Note : multiple underscores must have spaces between them
e.g. hello _ _ world
- Removed automatic breakdown when preferences changed
- Started moving text strings to single file (strings.py) -
enabling possible future language customisation.
- Phoneme example usage help available in phoneme selection
- Phoneme list window with usage examples, now available
under Help menu
- New toolbar in the GUI
- Preview button
- phoneme insertion
- MOT file selection (used for preview feature, Moho
Switch file importing, Switch export translation)
- Moved some code from PAMELA.py to pamgui.py - no visible
change to users
- Windows binary version now also available as a proper installer
- Windows binary version now comes with a path fixing
utility (it modifies the included sample files) if the user chooses
not to install PAMELA folder into C:\Pamela_beta03 (the
- Version 0.31 released on 20 September 2003
- Fix for crashing when dragging (no phoneme chosen) on canvas background.
Future plans :
- utility to add and modify dictionary words (in both pronunciation and soundex dictionaries)
- change internal setup for testing and debugging
- cleanup code, add documentation and comments into the code for other programmers
- Maybe - allow for simplified phoneme set without vowel stresses
- Maybe - keep track of modification status, ask user about saving when exiting before changes saved
Contact Myles at email@example.com