"Tõnu" is the name of this project - a talking head for the estonian language.

It is an application that displays a 3-dimensional head model and tries to present realistic speech for the estonian language. It is written in C++ using the Ogre3D graphics engine and CEGUI user interface system. The models were made using Blender. All the components were chosen so that they are open-source, accessible for free and working on different operating systems (including Linux and Windows).

The head can be controlled manually using parameters or by activating an animation. The animation is generated by using the .pho files from the EKI speech synthesiser for estonian language. This synthesiser can produce the necessary input files for any kind of text.

I made this talking head as part of my bachelor's project in TUT. This is not yet a finished application for the common user, but more of a proof-of-concept. I am publishing my work under the MIT licence which means it can be freely used by other developers, even for commercial use. At the moment I cannot be sure I get the chance to develop it further but hopefully others can get useful bits and ideas. If you use it somewhere/somehow, please let me know.

This was my first-ever attempt at 3D modelling and using 3D engines so I apologise in advance for any dumb mistakes.

The talking head is intended for the estonian language but the source code and this page are in english so that they can be accessible to international developers. The program could easily be adapted to any language.

Marek Rei, marek [ät] siineiolekala [punkt] net


Here is a video of the talking head in action.

Here the sound from the EKI synthesiser is placed on top of the video from my talking head. There is no audio in Tõnu, this is just a demonstration of a possibility.


This is not an easy part and I do not suggest this to anyone with no experience or a weak heart. The components (Ogre3D, CEGUI, Blender, Code::Blocks) are all developed by an open community and unfortunately there are often problems and eveything is not as user-friendly as one might hope. At least I have spent hours, maybe days trying to get everything to work on different platforms. But the C++ code and 3D models are rather universal so with enough persistence this should eventually work on any computer.

See here for instructions on installing Ogre: http://www.ogre3d.org/wiki/index.php/Main_Page
Before you attempt to launch Tõnu, make sure that the samples supplied by Ogre are working. Linux users find those in the source code package, Windows installer puts them at OgreSDK/samples.

If you are using Linux, you need to install everything related to ogre, cegui and ois (might be called libois). My source code contains a Makefile that is meant for linux (at least it works in OpenSuse 11.0). There are two important configuration files - you need to check that plugins.cfg and resources.cfg point to correct locations. They are read at execution time and all the models/materials/etc are loaded from locations listed there. Basically it everything is configured right, you just run:
and the full-screen program launches. Exit with ESC.

If you are using Windows, you can install the Ogre package that alreadt contains CEGUI. On the Ogre download page you need to choose, which IDE you want to use and download the right package. I have been using Code::Blocks and thus the package "Ogre for Code::Blocks + MinGW C++ Toolbox". In Code::Blocks, again, first make sure that you can launch the samples. When you build an application there, the executable is placed into OgreSDK/bin/... and it automatically uses the resources.cgf that is in there folder. So you need to add the location of the resources folder for Tõnu into that file. Something like
If everything is configured right, you can launch the code directly from the Code::Blocks editor.


Yes, there will be troubleshooting. Well here are some things to try:


My bachelor's thesis on the creation of this talking head (unfortunately not available in english): LINK

The package containing the source code: LINK

Blender models: LINK