<p>I have need to write an application which uses a speech recognition engine -- either the built in vista one, or a third party one -- that can display a word or phrase, and recognise when the user reads it (or an approximation of it).  I also need to be able to switch quickly between languages, without changing the language of the operating system.</p>

<p>The users will be using the system for very short periods.  The application needs to work without the requirement of first training the recognition engine to the users' voices.</p>

<p>It would also be fantastic if this could work on Windows XP or lesser versions of Windows Vista.</p>

<p>Optionally, the system needs to be able to read information on the screen back to the user, in the user's selected language.  I can work around this specification using pre-recorded voice-overs, but the preferred method would be to use a text-to-speech engine.</p>

<p>Can anyone recommend something for me?</p>

If the engine is what you're asking about then I've found (beware, I'm just listing, I haven't tried any of them):
Lumenvox engine
you also have the
SAPI SDK
from Microsoft itself, I've only tried it for text to speech but according to its definition:
The SDK also includes freely distributable text-to-speech (TTS) engines (in U.S. English and Simplified Chinese)
and speech recognition (SR) engines
(in U.S. English, Simplified Chinese, and Japanese).