2 - Same processor or not?

If your main controller is small (ATMega8 etc) and cannot cope with all of the extra demands specified above then you will have no option but to put the speech synthesiser onto another 'board'. As mentioned later, this can be a cut-down $50 robot board with an ATMega168. All you need to do is to create a link to it via the UART so that you can ask it what to say via the serial link.

If you are using an ATMega32, say, then you may have enough space to link the code in alongside your own code, in which case you can call the functions, mentioned later, directly. e.g.

say("I am running on the same board.");

However: my personal recommendation would be to have everything as a seperate board. For the following reasons:-

1. The speech software may get bigger and so may suddenly not fit on your combined processor

2. As a seperate board you can just plug it into the UART of a main board for debugging and remove it later

3. Debugging the speech board is made easier as you can plug it into 'Hyperterminal'/etc as a stand alone unit

4. Perhaps most importantly - a seperate board can concentrate on doing the speech without your main board suffering from all of the important timings required to make the speech as good as possible. ie if it's all on the same board then the interrupts you use to drive your own program may cause the speech to 'slurr'. So let 'one board speak' whilst the main board does 'robot stuff'.