PyKlatt is a Python 2.x implementation of the Klatt synthesizer model, featuring linguist-friendly IPA-based input and computer-scientist-friendly extensibility and coding. It was created as a term project for a Computational Linguistics class taught by Sean McLennan in 2009.
The primary goal of this project was to see how well a collection of programmatically simple rules could be combined to approximate the prosody patterns of human speech, as found in Canadian English. However, a secondary goal was to create an extensible synthesizer platform on which other languages could be implemented and refinements to universal production rules and IPA-sound mappings could be shared.
This project was published to share information with other students, possibly including you, who may wish to use this work as a basis for their own exploration into the field of computational linguistics, with an open invitation to contribute what you discover to this central resource to benefit those who may stumble upon it afterwards.
Maturity and scope
This project’s scope is highly flexible, although it is constrained to synthesis — any semantic processing should happen at a higher level, and it should generate synthesizable output by inserting stress markings where appropriate.
As for this project’s maturity, it is actually, with a little bit of massaging, capable of producing rather comprehensible speech. (Finding ways to reduce the amount of massaging required would be an excellent basis for a student project) For example, this is what it sounds like when producing “Hello, World!”:
Note how the string of characters is plain, easy-to-read IPA with a bit of simple stress markup: the ‘l’ is lengthened, a comma adds a brief pause between words, the ‘ʌ’ is lengthened a bit more and given a lower pitch, and the statement is an exclamation. That’s all that’s needed as input. Seriously. No XML or scary numbers anywhere.
PyKlatt’s source is hosted on Google Code, http://code.google.com/p/pyklatt/, which is where you should go if you want to extend it or report a problem.
If you like PyKlatt, let us know. If you really need a specific feature, tell us. We want to help you learn so you can help us learn.
- Programming, Syntax
- Phonology, accessibility