Dictation is not long-form transcription — I tried five tools before writing my own

작성자

카테고리:

← 피드로
DEV Community · Uri · 2026-09-05 개발(SW)

Uri

Uri

Posted on Sep 5 AI-assisted

Dictation is writing with your mouth: you say a sentence, look at the screen, fix it. Transcribing long-form audio is a different problem — you talk for fifteen minutes without looking at anything, and you want the whole text afterwards. Almost every tool I had at hand solved the first case and broke on the second, each in its own way.

⚠️ All of this is as of when I tested it. These products change fast; recheck before deciding anything on this basis.

Dictation inside ChatGPT. The audio got cut off when it ran long. That hurt most, because long was exactly what I wanted: describing the whole context of a new project, or narrating a dream in detail. Losing that is losing minutes of speech that do not come back.

Audio in Claude. When I tested it, it captured English better than Portuguese.

Google Docs dictation. No punctuation. You get one running block — and in fifteen minutes of audio, a running block is unreadable.

The native iOS recorder. It records as long as you like and transcribes, but getting the transcript out of it and into somewhere else — a coding session, a chat — is enough friction to make you quit halfway.

I also tried Google Meet. Speaker identification worked well in my test, but getting the text meant starting a meeting, making sure transcription was configured and enabled, ending the meeting, waiting for the transcript email, and downloading it if I wanted a file. That is a lot of steps when all I want is to capture a thought.

What I was still missing after trying all five: a short path from a long spoken thought to text I could use somewhere else. Each tool added a different interruption, limitation, or set of steps to that workflow.

The two problems the script had to solve

It became a terminal script calling OpenAI’s transcription API. The list was short — accept speech of any length, return punctuated text, leave the text where I was already working — and the first two items were harder than they looked.

First: the limit is not file size, it is duration. The model truncates its output somewhere around 8 to 11 minutes of audio, regardless of how many megabytes the file has. Slice by size and you find out the worst way: the upload succeeds, the transcript comes back, and the ending is missing. So the split is by time, in 6-minute pieces, with margin.

Second: where to cut. Cutting at exactly 6:00 lands in the middle of a word. The model gets half a word at each end and completes the fragment — you get an invented word, a lost word, or a duplicated sentence, once per seam. The fix is to push the cut to the nearest silence, inside a 45-second window.

Then came the part I did not expect. The silence threshold cannot be fixed, and it cannot be derived from average volume either. Measuring twelve real recordings, the noise floor ranged from −50 to −35 dB without tracking the mean: the loudest recording, averaging −25 dB, had the lowest floor of all. A hardcoded value either finds no pauses at all or marks the entire file as silence.

The way out was to search for the threshold instead of picking one: start strict and loosen in 5 dB steps until pauses appear. Each pass is analysis only — about 1 second on a 15-minute file — so the search is cheap. On a real 19-minute recording, all three cuts landed on a pause and the seams do not show in the text.

The cost, which was the doubt holding me back

US$ 0.003 per minute with gpt-4o-mini-transcribe, checked against the actual invoice. In the month I measured it came to 726 minutes of speech — a little over twelve hours — for about two dollars. Not all of it was one project: that is what I talk in a full month of work.

Where this does not work

What comes back is transcribed speech, not finished text: repetition, “I mean”, the sentence abandoned halfway. It works as a prompt or a draft; it does not work for structured reading. And the script runs in a terminal, which means: only in front of the computer. The idea that arrives on the street kept getting lost — and that became the next problem.

This article was prepared with AI assistance.

원문에서 계속 ↗