That makes sense. I also understand that a lot of it is a limitation of how TTS is implemented on windows and the different engines just don't play all that well together, especially when the 64-bit engine can't run a 32-bit voice and all that nonsense. I spent a great deal of time with Festival under linux and it really makes me sad to think that something as fully scriptable as that never got more attention with the TTS crowd. The problems I'm having with the AT&T voices aren't entirely Ultra Hal's fault but if there was some way to load the pronunciations from the .dict files (which are probably specific to the AT&T voices), then that would fix the problem and even allow me to control the phrasing of words nearly as well as in Festival(I'm pretty sure Festival did it's analysis on a sentence by sentence basis instead of word for word, which is how SAPI5 works if I'm not mistaken, which made for much more natural sounding speech).
I've been trying my hardest to figure all this out on my own, but the SAPI technology really is a mess, as most documentation doesn't differentiate between a voice and a TTS engine, and then there is the fact that Microsofts TTS tools are as minimalistic as possible leaving it up to the makers of the voices and engines to write the tools to configure such things as lexicon objects. The more I read about SAPI5 and it's design the more I think Ultra Hal itself is supposed to provide an interface to adjust pronunciation regardless of the voice engine used but that's just silly.
EDIT: I just had another look at where the AT&T voices are installed and messed with the config file again and discovered that Vista was being it's usual temperamental self and the permissions were being set strangely. With the lexical dictionary file overridden with my custom version Hal now picks up my changes reliably, unfortunately any changes to the dictionary requires restarting Hal to pick up those changes. There still has to be a better way to alter SAPI5 lexical objects.