TTSModeID with L&H TTS 3000 voices
Brought to you by:
cinsoft
Netbook EEE-PC Windows7 DoubleAgent installed alone
setting the ttsmodeID with the strings for L&H TTS 3000 British(Peter/Carol) or Spanish(Julio/Carmen) voices doesn't work.
setting to the MS voices (Mary/mike/sam) or the tv_enua (TruVoices) seem to work
Replaced DoubleAgent with MS hotfix and they all work fine.
According to the MS Agent documentation, in order for a voice to work you must have installed the MS Agent Language Pack for the relevant language.
There is actually no reason that I know of for this, but I followed that rule. It may be that MS Agent no longer enforces that rule. If so, I'm glad to drop it.
Also, if you're working on a 64-bit system and your app is 64-bit, then it will use the 32-bit MS Agent server by default, but will use the 64-bit Double Agent server by default. This is documented in the Double Agent SDK documentation for the Control.AutoConnect property (and elsewhere as well).
The 64-bit version of Double Agent cannot use any SAPI4 voices since they are implemented as 32-bit in-process COM servers. You can change the Control.AutoConnect property (see documentation) to use the 32-bit server.
For absolute compatibility with MS Agent, I should change Double Agent to always use the 32-bit server by default. On the other hand, Microsoft recommends running 64-bit servers on 64-bit machines. It's a conundrum.
Another thought. Double Agent requires Character.TTSModeID to be compatible with Character.LangID. You should set the LangID first, then the TTSModeID.
Actually, setting the LangID should automatically use the first available voice engine for that language.
Is is possible that MS Agent no longer works that way? That's how it used to work and that's how it's documented.