I had a similar program in my speech recognition for Chives , my butler robot, when I wanted him to say the current temperature out loud. I didn't want to record numbers from 1 - 100 because that was too annoying. Instead you do the following :
Get the raw number ( e.g. 250)
Divide up the number into its components ( 200 , 50 , 0 )
Now you just speak 200, then 50 , then skip zero and say nothing
Please note you have to program exceptions to this rule , like numbers between 10 and 19. You would have to manually record those , since eleven follows no rule. But from 14 to 19 , you could say the singles digit ( four ) and then the tens digit ( teen ) .
For the above 3000 thing thats simple, just a simple IF THEN statement
What programming language are you using and is this for PC or microcontroller?