Better way to synch voice/wav to servo?

I'm using a wave shield on the arduino for playback of voice/wav files, and was wanting to know if anyone has a good way to maybe pre-process the wav files so that the servo can move a mouth in synch.

Most of the voice synched servos seem to be triggered by the volume of the wav file, which makes them seem to be a half a second or so out of phase, since the mouth is told to move as the sound triggers, not a fraction of a second or so before like a real mouth.

Could the wav file perhaps play to some null output to gauge the volume to trigger the servo, then play the actual wav 200 ms or so after the volume peak?

I know it's possible to script the movement of the servo so that it is in synch with a file, but if there's a long file, or frequently changing file, that option wouldn't be too great.

Could you modify the code to look a few thousand samples ahead to drive the servo?

Or, could you use the bottom bit of the sample to encode a mouth-open/closed track? It would probably make the wav a iny bit noisy but...

You'd have to run the file through something like a processing app that would look a few thousand samples ahead and replace the bottom bit of the sample with the signal.

The AF waveshield and the arduino servo library both require timer1 so I would not expect them to work together, have you tried it?

If you need it, there is a servo library that uses timer2 that you can try with the shield.: Arduino Playground - HomePage
The thread on this library is here: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1230479947

I may try using that timer2 servo library, that sounds like it may work for a long term solution.

Adding the sub track to the wav file is a good idea, I'll probably use that in the short term since it should be easy to do.

I'm not sure how to go about having the code look ahead in the sample, do you know if there's an example of this code floating around anywhere?

Thanks for the ideas!