Text to Speech Audio: Why a Synthetic Voice Comes Back as Digits
A clean synthetic voice transcribes very well on words and very badly on numbers. We generated one 67-word script in four different text-to-speech voices, uploaded each, and compared. The prose came back nearly intact in all four - same sentence order, same meaning. The numbers did not. "Thursday at three forty five" became "Thursday at 3.45" in all four voices, and one voice wrote it as "$3.45". The spelled surname W H I T F I E L D was wrong in all four. One voice turned a phone number into "$5.555.123.4567".
Why synthetic audio is the cleanest test you can run
A text-to-speech file has no accent, no room noise, no microphone, and no uncertainty about what was said. You wrote the script, so you know the exact input. That makes it the only way to separate errors the model makes from errors you introduced by recording badly.

- Input: 67 words, one paragraph, read by four voices at 16 kHz mono.
- Voices: two female-sounding, two male-sounding, all from the same synthesis engine.
- Duration range: 22.2 s to 26.9 s for the same words.
- Every file uploaded once to the endpoint on this site on 2026-11-08.

What came back, voice by voice
All four returned HTTP 200 with success: true. None returned an error, and none returned an empty transcript. The word counts landed between 39 and 42 against a 67-word input, because digits and spelled letters collapse into single tokens.
- Voice 1, 22.2 s: 40 words, 249 characters.
- Voice 2, 24.7 s: 42 words, 247 characters.
- Voice 3, 24.2 s: 39 words, 248 characters.
- Voice 4, 26.9 s: 42 words, 248 characters.
A tighter spread than the durations suggest. The slowest voice took 21% longer to say the same sentence and still produced a 248-character transcript. Speed did not change the output length at all.
The one thing all four got wrong the same way
The script says "Thursday at three forty five". All four voices returned "Thursday at 3.45". Not one of them wrote "three forty five" back. The model converts spoken numbers to digits as a matter of course, and it does it whether the source is a human or a synthesizer.
- Script: "on Thursday at three forty five".
- Voice 1: "on Thursday at 3.45".
- Voice 2: "on Thursday at 3.45".
- Voice 3: "on Thursday at 3.45".
- Voice 4: "on Thursday at $3.45" - a currency symbol, on a time of day.
That last one is worth pausing on. Nothing in the audio says dollars. The word before it was Thursday. The model had just seen a number-like token and defaulted to currency formatting, which means the error is in the formatting stage, not in the listening stage.
The spelled surname broke in every voice
The script spells out a surname letter by letter: "Dana Whitfield, spelled W H I T F I E L D". Every voice mangled it, and each one mangled it differently.
- Voice 1: "Dana Woodfield, spelled W-H-I-D-F-I-L-E" - two letters dropped.
- Voice 2: "Dana Whitfield. Spelled WHO ITF IELD" - the spaces became words.
- Voice 3: "Dana Whitfield, spelled W-H-I-D-F-I-E-L-DV" - one letter swapped, then ran into the next sentence.
- Voice 4: "Dana Woodfield. Spelled WHID FILD" - two words invented.
Voices 1 and 4 also changed the name itself, from Whitfield to Woodfield. That is the same failure our spelling tests have shown before: isolated letters carry no context, so the decoder has to guess each one, and a guessed letter sequence can drift the surrounding proper noun too.
The phone number: right, then wrong, then worse
The script says the phone number as separate digits: "five five five, one two three, four five six seven". Three voices produced a correct, conventionally formatted number. The fourth did not.
- Voice 1: 555-123-4567 - correct.
- Voice 2: 555-123-4567 - correct.
- Voice 3: 555-123-4567 - correct.
- Voice 4: $5.555.123.4567 - correct digits, four wrong marks.
Voice 4 is the same voice that put a dollar sign on the time. It had a formatting bias toward currency and applied it to every numeric string in the file. The digits were never the problem. The wrapper around them was.
The large number: three of four got the words right, one got the value wrong
The script says "twelve thousand four hundred and six dollars". This is the one place where the voices genuinely disagreed on content rather than formatting.
- Voice 1: "12,406 dollars" - matches the script.
- Voice 2: "12,466 dollars" - one digit wrong, six for zero.
- Voice 3: "12.406 dollars" - right digits, a period instead of a comma.
- Voice 4: "$12,400 and $6" - split into two currency amounts.
Voice 2's error is a listening error: six and zero are acoustically close in a fast synthetic read. Voice 4's is a formatting error compounded onto a listening error. Voice 3's is pure formatting, and it matters because 12.406 and 12,406 read as different numbers in most of the world.
Speed it up and the numbers degrade fastest
We took the fastest-reading voice and compressed it to 1.6x with the pitch preserved. The prose survived. The numbers did not.
- At 1.0x: 40 words, 249 characters, phone number intact.
- At 1.6x: 40 words, 249 characters, phone number became "555-1-2-3, for 567".
- At 1.6x: "Call me back at" became "balmy back at".
- At 1.6x: the spelled surname lost its last letters again, W-H-I-D-F-I-L-E.
The word count did not move, so a length check would have missed this entirely. That is the practical lesson: if you are verifying a transcript, compare the numbers, not the word count.
What to do about it
If you are generating audio from a script and then transcribing it - a common route for testing a pipeline, or for producing captions without recording a human - the fix is not in the model. It is in how you write the script.
- Say phone numbers and IDs in groups, and check them digit by digit after transcribing.
- Never rely on a spelled-out name; put the correct spelling in a note beside the transcript.
- Expect every spoken number to come back as digits, and decide the format after the fact.
- If a currency symbol appears where it cannot belong, treat the whole line as suspect.
There is one upside. Because the prose comes back so cleanly, a synthetic voice is a good way to check whether a failure is yours. If your own recording of the same script produces worse text than the synthesized version, the problem is in the recording - noise, level, distance from the mic - and not in the words you chose.

Short version
A synthetic voice gives you near-perfect prose and unreliable numbers. All four voices turned "three forty five" into 3.45, all four broke a spelled-out surname, and one applied currency formatting to a time and a phone number. The words are the reliable part; treat every digit in the output as unverified until you check it.
Got a Reel you want as text? Turn the Reel into an Instagram transcript you can download →
Synthetic audio exposes the real problem - not the words but the digits, which every voice we tested reformatted and one turned into dollar amounts. Wondershare UniConverter lets you regenerate or convert that audio locally at a chosen level and format, so a bad take is one export away from a clean one. It does not transcribe - the words come back from this page.
FAQ
Does text-to-speech audio transcribe accurately?
For prose, yes. Four synthetic voices reading the same 67-word script all returned the sentences in order with the same meaning, at 39 to 42 words each. The numbers were reliably wrong in some way in every voice.
Why does a transcript put a dollar sign on a time of day?
Number formatting is a separate step from listening. One of our four voices returned "Thursday at $3.45" and also "$5.555.123.4567" for a phone number. The digits were right; the model applied a currency format to every numeric token.
Should I say numbers as words or digits in my script?
Either way, expect digits in the output. Our script said "three forty five" and all four voices returned "3.45". Decide the format after transcribing rather than trying to force it through the script.
Can I use a synthetic voice to test my transcription setup?
Yes, and it is the cleanest baseline available, because you know the exact input and there is no room noise or accent. If your own recording of the same script transcribes worse, the gap is your recording, not the model.