Transcribe a Recording: What Room Echo Does to the Words
One clip, eight copies
We made eight copies of one clean sentence and changed one thing per copy: the echo. Every copy stayed 16 kHz, mono, PCM WAV. The control file came back in 1.93 seconds as 160 characters and 29 words. It's the baseline for everything below.
- The clip: 10.2 seconds, 326,478 bytes, one voice, no music.
- The endpoint: this page's /api/transcribe, one file per POST.
- We publish no accuracy percentage. We have no test set, so you get the exact strings instead.
- Your file does leave the browser. It goes to the endpoint over an encrypted connection, gets read once in memory, and is dropped as soon as the response is written. We don't save it, don't train on it, and don't ask for an account.
The delay ladder: 100, 250, 500 and 1,000 ms
A single echo is one delayed copy of the whole signal. We ran it at four delays. The first three are quiet. The fourth is where the text breaks.
- 100 ms - 160 characters, 29 words, 2.25 s. Every character matches the control.
- 250 ms - 163 characters, 29 words, 1.67 s. Three changes: 'a test' became 'the test', 'brown' became 'ground', and 'transcript' gained a capital T.
- 500 ms - 160 characters, 29 words, 1.76 s. One change: the first 'Hello everyone.' became 'Hello everyone,' and 'transcript' gained a capital T.
- 1,000 ms - 248 characters, 41 words, 2.86 s. Four phrases came back twice, and 'lazy dog' became 'lazy girl'.
What the 1,000 ms file actually said
It didn't just get noisier. It got longer. The model heard the delayed copy as the same words said again, so it wrote them a second time.
- 'Hello, everyone.' came back twice in a row.
- 'Instagram transcript' came back as 'Instagram transcript, Instagram transcripts'.
- 'the quick brown fox' picked up a stray 'the jump brown fox' next to it.
- 'Thank you for watching.' closed the file twice.

That's the opposite of what most people expect. A bad recording usually loses words. This one gained 12 words, and every one of them reads like normal English. You won't spot the error by scanning for typos. Word counts won't catch it either - three of the four ladder files kept exactly 29 words while changing what those words were.
So use character counts, not word counts, if you want a quick health check. Even that misses a swapped 'a' for 'the'. The only check that works is reading the string against what you heard.
What the control string contains
The control is 160 characters and 29 words across four sentences. It has no digits, no proper names beyond 'Instagram', and one well-known pangram: 'The quick brown fox jumps over the lazy dog'. That's deliberate. A clip with no numbers and no names removes two things that are fragile on their own, so any change you see comes from the echo.
We kept the same voice, the same take and the same gain across all eight copies. One speaker, no music, no room tone. The only variable is the delay. If you try this at home, record ten clean seconds first and keep that first string somewhere you can paste beside the later ones. Every number in this article is a diff against that one string.
Where the eight copies came from
All eight files came from the same WAV. We didn't re-record anything, and we didn't change the gain. The aecho filter adds a delayed, quieter copy of the signal on top of the original. At 100 ms that copy lands inside the same syllable. At 1,000 ms it lands a full second later, after the phrase is already over.
The files grow as the delay grows: 329,678 bytes at 100 ms, 358,478 bytes at 1,000 ms. The filter has to hold a longer tail. That byte growth is a clue. A bigger file after an effect isn't more speech - it's the same speech held longer. We kept one channel and 16 kHz in every copy, so sample count is the only reason the bytes moved.
If you're comparing two exports of the same recording, check the duration before you trust the larger one. And don't judge a file by how clean it sounds to you. The 1,000 ms copy sounded like a normal room to our ears, and it was the one that gained 12 invented words.
More reflections didn't mean more damage
We expected a stack of echoes to be the worst case. It wasn't. Three short reflections at 100, 200 and 300 ms came back at 160 characters, 29 words, 1.71 s - identical to the control. Five reflections spread from 60 to 960 ms changed one word: 'transcript' became 'transfer' (158 characters, 1.52 s). A hard single echo at 400 ms rewrote 'Instagram transcript tool' as 'Instagram Transfer Tool'. It also split 'the quick brown fox' into 'the quick, brown, fox, and the lazy dog'. That file came back at 155 characters, 28 words, 2.23 s.
The delay matters more than the count. One late repeat is worse than five early ones. A slap-back off a bare wall lands in the 250-1,000 ms range. A small live room with early reflections usually reads back word for word.
A long recording held up better than a short one
We stitched the control clip to itself (20.4 seconds, 668,878 bytes) and added the same 500 ms echo. It came back as 321 characters and 58 words in 2.89 s. Both halves are word for word the control text. No repeats, no invented phrase. So the 1,000 ms blow-up isn't about file length. A late echo landing on the tail of a short utterance leaves the model with little context to lean on.
Digits are the first thing to go
We made a second clip with a name, a phone number and a dollar amount in it. Clean, it returned 'Call Maria Gonzales at 555-123-4567 on Tuesday about the $1,250 invoice.' - 72 characters, 11 words, 1.19 s. With a 500 ms echo, it returned 'Call Maria Gonzales at $555-1-2-3-4-5-6-7 on Tuesday, about the $1,250 invoice.' - 79 characters, 11 words, 1.52 s. The name and the amount survived. The phone number didn't. The model put a dollar sign in front of it and split every digit with a hyphen.
That normalization shows up without any echo too, but the echo pushed it over the edge. If your clip has numbers a reader will check - a phone number, a price, a date - re-record it. Don't try to repair the digits in the text afterward.
Why a late repeat reads as a second voice
This page runs @cf/openai/whisper on Cloudflare Workers AI. It reads 16 kHz mono audio and writes words and punctuation in one pass. A delayed copy of your own voice looks, to the model, like someone else talking over you. It doesn't know the two signals are the same speaker, so it writes both. Early reflections land inside the same word and get smoothed over. A late one lands after the word is finished and gets its own slot in the output.
That also explains the digits. The model normalizes numbers as it writes them, and a phone number is already a shaky string of digits. A late repeat gives it two chances to hear a separator, so you get '$555-1-2-3-4-5-6-7' instead of '555-123-4567'.
How to reproduce this
You don't need our files. Take any clean WAV and run ffmpeg with the aecho filter. Keep the sample rate at 16 kHz and one channel, so the only thing that moves is the echo.
- ffmpeg -i clean.wav -af "aecho=0.8:0.8:1000:0.6" -ar 16000 -ac 1 echo.wav
- The four numbers are input gain, output gain, delay in ms, and decay.
- Swap 1000 for 100, 250 or 500 to walk the ladder we used.
- Upload one file per POST, then read the returned string character by character.
What you can do before you upload
Work on the file, not the text. Record closer to the mic, hang a blanket on the bare wall, or cut the tail off a clip that ends with a slap. If the echo is already baked in, a de-reverb filter on your own machine can pull the late repeat down. We don't promise any converter will fix accuracy - it just hands this page a cleaner file. Keep your own copy too. We read the bytes once and drop them when the response is written, so we can't replay your clip next week.
Got a Reel you want as text? Upload the file and download the transcript as TXT, SRT, or VTT →
Room echo isn't something you fix in the text - the words themselves come back wrong. Wondershare UniConverter works on the file instead: it opens your recording, lets you cut the tail that carries the slap, and re-exports a clean mono WAV or MP3 before you upload. It does not transcribe; the text above is what this page returns.
FAQ
Does a little room echo ruin a transcript?
No. A 100 ms echo returned all 160 characters unchanged, and three stacked short echoes did the same. A single echo near 1,000 ms is the one that grew the text from 160 to 248 characters.
Why did the transcript get longer instead of shorter?
The model heard the delayed copy as the same words said again, so it wrote the phrase twice. 'Hello, everyone.' and 'Thank you for watching.' both came back doubled. Length isn't a health check here.
What should I fix first, the echo or the words?
The file. Once a phone number comes back as '$555-1-2-3-4-5-6-7', the digits are gone from the text, and no amount of punctuation editing brings them back.
Will a long recording be worse?
In our test it was better. A 20.4-second clip with a 500 ms echo returned both halves word for word, with no repeats. The 10.2-second clip was the one that broke.
Do you keep my recording?
No. It's read once in memory, then dropped when the response is written. We don't save it, don't train on it, and don't ask you to log in.