Basically, the problem with this is that your phone cannot distinguish between what you want to say and transmit to the other end of the conversation, and words you want to be commands to the phone. What if you call an automated system that says "Say 'one' for X. Say 'two' for Y."? When you say 'one' or 'two', there's no way (without very advanced AI) for the phone to decide whether you intended to transmit that speech (e.g. "two") or intended it to be a command for the phone to dial ('2').
You could possibly have a custom dialer app where if you press a button on your phone, it stops transmitting your voice and accepts commands, and pressing again stops accepting commands and resumes transmitting your voice. I'd bet a lot of money that no one has made such a custom dialer.
Of course, there are many phones where you can enter "pauses" into the dialer, followed by menu choices. For example, 555-555-5555-PAUSE-PAUSE-PAUSE-2-PAUSE-1 will:
- Dial 555-555-5555
- Wait for the call to connect
- Press '2' (for a menu option)
- Wait for the next menu
- Press '1' (for a menu option)
This might serve your needs if you know the menu layout, but otherwise I think you're stuck (unless you want to use headphones as Lie Ryan suggests).