A biomechanical model of the human tongue for understanding speech production and other lingual behaviors

Adam Baker
Department of Linguistics
University of Arizona

Using Tongue Viewer

Here are some basic usage instructions for Tongue Viewer. (I'm not going into what you would need to do to change the advanced settings intelligently; that's pretty subtle stuff.)

Selecting a settings file

First thing when you run Tongue Viewer will be to select a settings file. These are described on page 276 of the disseration. Probably you'd like to start with “D1P1.xml.” If you want a different settings file, you'll need to close Tongue Viewer and then open it again.

When you first open it, you can rotate the tongue by clicking and dragging in the main window. You can also use the “Orientation” toolbar to change the orientation.

Playing around with the sliders

First we'll look at using the sliders. (Using Tongue Viewer is a lot more fun than trying to parse all of those figures in chapters 5 and 6!)

Find the “Parameters” toolbar. When you slide the parameters around, you're exploring the tongue parameter space. You can see just about every posture the tongue can make (and some it can't; see the note below). If you want to reset the tongue to its rest position, click the “Reset Parameters” button on the “Settings & Information” toolbar.

Find the “Controls” toolbar, and you can see what happens when you flex different muscles. Careful: this isn't real simulation data. Tongue Viewer is actually using a neural network to predict the posture values that will result from the muscle activations you're specifying.

You can also predict muscle activation from posture parameters, although less accurately. On the “Settings & Information” toolbar, check the box that reads “Keep control activations synchronized with parameters with a neural net.” Then when you change the parameters you'll see the muscle activations update as well.

Prepare to make the jump to hyperspace!

On the “Settings & Information” toolbar, there's a checkbox that reads “Check that coordinate is within the hull”. If you check that box, then whenever you update the tongue parameters the model will check to see whether your seven-dimensional tongue coordinate is within the convex hull of D2 (for the pretencious: the equivalent of a polyhedron in space with greater dimensionality than three is a polytope). This is a check (sort of) to make sure that the tongue posture you create with the sliders could be generated by the model. This is explained at greater length, though perhaps not with greater clarity, in Section 5.4.

3D models, neural nets, hyperspace... is this a PhD dissertation or an episode of Star Trek?

If, for some reason, you would like the nodal coordinates of the posture you've made, click the “Reset Parameters” button on the “Settings & Information” toolbar. It will create a binary file with the x-, y-, and z-coordinates of the downsampled mesh; there are 2,880 nodes in that mesh. (I can't recall ever using this feature; I don't know why I included it.)

Viewing simulation results

You can view plain simulation results as well, by clicking on the “Open Static” button on the “Settings & Information” toolbar. Select an appropriate .bin file (not the ones you downloaded from here, but the ones you created using inp2feb, which is decribed at the bottom of this page). You'll see a nicely shaded result.

Taking pictures

You can take your own pictures of the model, from three angles. Just click the “Take Pictures” button on the “Settings & Information” toolbar. The pictures will be the same size as the window you have open, so if you want higher resolution, just expand your window. The “Take Pictures” function will give you a PNG image with a side, front, and top view. If you want another angle, you'll have to do a screen capture.

It wasn't a problem when I checked it just now, but previously it was necessary to have all the toolbars to the right of the tongue to avoid ugly gray artifacts. Really.


You can also animate tongue parameters or control parameters (muscle activations). You specify the animation you want in a plain text file. Here is an example. You can view it by selecting that file after clicking the “Open Parameter Score” button on the “Settings & Information” toolbar. The buttons on the “Animation” toolbar work as you would expect them to do.

Of course, you can create your own animations. The beginning of the sample input file looks like this:

0	6.8225	-42.9103	-6.259	0	0	0	0
0.05	-9.66018415	-42.49298328	-5.175123525	0	0	0	0
0.1	-26.0448472	-40.9150192	-3.5648552	0	0	0	0
0.15	-41.98946755	-38.26307193	-1.560564175	0	0	0	0
0.2	-57.1520236	-34.6238056	0.7053804	0	0	0	0

There are three lines of single numbers, and then 41 lines of eight numbers each. The first three lines may be read (as if addressing the computer), “I will specify 41 animation frames, each with 7 parameter values, and I want it to be animated at 25 frames per second.” Each animation frame tells the computer the posture at a specific time. If there isn't a position specified at a particular time, it choses and intermediate posture between two points that you did specify (linear interpolation).

The 41 lines are animation frames. The first number is the time. The next seven numbers are the seven parameters. Here I've only actually varied three parameters, and have left the rest to zero.

You can also create animations of muscle activations. That file would look identical to the one above, except that instead of parameters you would have muscle activation values (ranging between 0 and 0.35). The first number you specify is the first muscle you see on the “Controls” control toolbar, and so forth. Then you would open it with the “Open Control Score” button on the “Settings & Information” toolbar.

When you open a parameter score, the number of parameters you specify needs to be the same as the number of parameters in your settings XML file. If you want to use fewer parameters (perhaps because seven dimensional space is difficult for you), you can just add zeros for the remaining parameters, as I've done above. If you open a control score, you need to specify as many numbers in your animation as you have muscles. (This issue probably won't arise.)

Interesting animation

That sample animation isn't just any animation. Did you notice that in Figure 5.39 there seem to be four clusters of points? I did. So I ran a k-means classfier on the first three parameters of D2, with k=4. I got back the four points that are the parameter values at t=0, t=0.5, t=1.0, and t=1.5. Then a smoothed out the transitions with a spline to generate the intermediate time points, for a nice animation. And that's what the sample animation is. It looks a lot like suckling, which made me very excited about what that might mean about biomechanical biases, etc.

But it turns out that it only looks like suckling to a non-expert. If you read the literature you'll find that suckling actually involves peristaltic motion.

But then I got interested in that peristaltic motion, and I tried to reproduce it with the tongue model, mostly by flexing subregions of superior longitudinalis, transversus, and verticalis. I tried lots of different combinations. Never got close.

All contents copyright © 2008 Adam Baker