Oops I was a bit unclear. I meant, include the engine part that matches English statements to commands and parameters but hook it up to a keyboard-driven text box instead of a microphone. So it's:
written text->'AI'->command
vs.
speech->'AI'->command
(Edit: and sure, voice as an adjunct per my first comment.)
written text->'AI'->command vs. speech->'AI'->command
(Edit: and sure, voice as an adjunct per my first comment.)