There's nothing wrong with the Microsoft text-to-speech. If I give it a number
(123) 456-7890, it will recognize that this is a phone number and say, "Area code one, two, three.... four, five, six.... seven, eight, nine, zero."
If I give it 123-456-7890, it reads, "One, two three.... four, five, six.... seven, eight, nine, zero."
If I give it 1234567890 (the format of Caller ID in the U.S.), it reads, "one billion, two hundred thirty four million,...."
IVM simply needs to a quick check (and change, if necessary) of the number format before handing it off to the text-to-speech.