You can dictate a rough draft in a fraction of the time it takes to type one, but the transcript comes out as a wall of text with no paragraphs and a few sentences that never end. Dictation for writers and students works when you treat it as two passes: speak the ideas first, then clean them up under strict rules so the AI fixes the surface and leaves your meaning alone.
This post gives you the spoken habits, seven copyable prompts, and a short Python script that tells you what a cleanup dropped or added. For voice-memo-to-article work, see the voice memos to blog posts workflow. For speaking prompts to a chatbot rather than prose, see how to speak a good AI prompt.
What do I need to dictate prose?
Any dictation that puts text at your cursor will do. Some built-in options, as the vendors' pages describe them on 2026-10-09:
- Google Docs voice typing (Tools, then Voice typing). The page lists spoken punctuation commands (period, comma, question mark, new line, new paragraph) but warns that punctuation might not be available in every language, so test it in the language you dictate in. Voice commands such as "select paragraph" are English only, and both the account language and the document language must be English. The language list on the page includes Hindi, Tamil (India), Bengali (India), Marathi, Gujarati, Kannada, Malayalam and English (India). The page also says your browser controls the speech-to-text service, so where your audio goes depends on the browser.
- Apple Dictation on Mac. In supported languages it inserts commas, periods and question marks automatically, and you can switch that off in Keyboard settings. On a Mac with Apple silicon you can type while you dictate.
- Windows voice typing. Microsoft's page says it uses online speech recognition powered by Azure Speech services and needs an internet connection.
Paid apps add formatting and custom vocabulary. The dictation tool comparison covers features and prices. Before you dictate anything unpublished or confidential, read what leaves your device in each tool.
What spoken habits make a transcript usable?
- Say the structure out loud. Begin with "Topic: library fines. Point one." The words survive transcription and become your outline.
- Pause, then say "new paragraph" at each change of idea. Without it, a long spoken thought tends to become one run-on sentence. Check yours: the script below counts sentences over a length you choose.
- Say "cite" or "source needed" where a reference belongs. Do not improvise author names and years aloud. A guessed citation looks real once it is typed.
- Say numbers slowly and then check them. Speech recognition can swap digits and units, and a wrong number reads as perfectly plausible. Read every figure against your source.
- Correct yourself in the open. "Sorry, I mean a cap of 5 dollars per family." The correction is easy for you to apply and easy for the cleanup prompt to follow if you tell it to.
- Mark doubt. Say "not sure about this" next to a claim you must verify, and tell the cleanup prompt to keep those markers.
Prompt 1: cleanup only (untested template)
This is the safe first pass for any dictated text. I did not run the prompts in this post on a live model, so test them on a paragraph you know well.
Clean up this dictated text. Allowed changes: punctuation, capitalisation,
paragraph breaks, removing fillers (um, you know, basically) and false
starts, and applying my spoken corrections ("sorry, I mean...").
Not allowed: adding facts, numbers, names or examples; removing a claim or a
hedge such as "I think" or "maybe"; changing the strength of any claim;
reordering ideas; making it sound more formal.
Keep any "cite" or "not sure" markers exactly as they are, in square brackets.
Return the cleaned text only.
TEXT:
[paste]
Prompt 2: reverse outline
When the draft rambles, do not ask for a rewrite. Ask what you said.
List the points I make in this dictated draft, in the order I make them, one
line each, using my words. Then list any point that appears twice and any
point that has no supporting reason or example. Do not rewrite or reorder
anything. Do not add points.
TEXT:
[paste]
Reorder the outline yourself. Re-dictate or move the paragraphs by hand.
Prompt 3: questions, not answers (for essays)
You are a sceptical reader of my draft argument. Ask me up to six questions
that expose gaps: unsupported claims, missing counterarguments, terms I use
without defining. Do not answer them. Do not suggest wording.
DRAFT:
[paste]
Answer the questions out loud into a new recording, then fold the best answers into the draft. The thinking stays with you, which matters if your course restricts AI help.
Prompt 4: spoken recall check (for students)
Talking an explanation from memory is a retrieval exercise. Do it before you open your notes, then compare.
Below are my notes (the only source of truth) and my spoken explanation from
memory, transcribed.
1. List key points from the notes that I covered correctly.
2. List key points from the notes that I missed.
3. List anything I said that contradicts the notes, quoting my words and the
relevant note.
Do not add information that is not in the notes. Do not grade me.
NOTES:
[paste]
MY EXPLANATION:
[paste]
Section 3 is the useful one, and it is only as reliable as your notes. If your notes are wrong the check is wrong. The study prompts post has more retrieval prompts and the cases where AI is the wrong tool.
Prompt 5: keep citations honest
In the text below, every [cite] marker needs a real source that I will add
myself. Do not fill any marker. Do not invent authors, years, titles or
statistics. After the text, list each marker with the claim it supports so I
know what to look up.
TEXT:
[paste]
Prompts 6 and 7: rehearse and tighten
For a viva or presentation, dictate your answer to a likely question, then use:
Mark where my answer would lose a listener: undefined terms, a missing step in
my reasoning, anything longer than two sentences without a point. Quote each
spot. Do not rewrite my answer.
For tightening a finished paragraph:
Shorten this paragraph by about a third. Keep every claim and number. Cut
repetition and filler. Show the result, then list any claim you removed
(there should be none).
How do I check what the cleanup changed?
Smooth text hides edits. The script below profiles a dictated draft (word count, average sentence length, very long sentences, fillers) and, if you give it the cleaned version, lists the content words and numbers that were dropped or added.
#!/usr/bin/env python3
"""Profile a dictated draft, and optionally compare it with an AI-cleaned version.
Usage: python dictation_check.py RAW.txt [CLEANED.txt] [--long 35]
"""
import argparse
import re
from pathlib import Path
FILLERS = ["um", "uh", "you know", "i mean", "sort of", "kind of", "basically", "actually", "like"]
STOP = set("a an the and or but so to of in on at for with is are was were be it this that i you we they "
"he she my your our their as by from not no yes then than just very really also have has had do "
"does did will would can could should if when what which who there here its it's i'm i'll".split())
def words(text):
return re.findall(r"[a-z0-9']+", text.lower())
def sentences(text):
return [s.strip() for s in re.split(r"(?<=[.!?])\s+|\n{2,}", text) if s.strip()]
def profile(text, long_limit):
w = words(text)
sents = sentences(text)
lens = [len(words(s)) for s in sents]
print(f"words: {len(w)} sentences: {len(sents)} average sentence: {len(w) / max(1, len(sents)):.1f} words")
long_ones = [(n, s) for n, s in zip(lens, sents) if n > long_limit]
print(f"sentences over {long_limit} words: {len(long_ones)}")
for n, s in long_ones:
print(f" {n} words: {s[:70]}...")
joined = " " + " ".join(w) + " "
counts = {f: joined.count(f" {f} ") for f in FILLERS}
shown = {f: c for f, c in counts.items() if c}
print("fillers:", shown or "none", f"({sum(counts.values()) * 100 / max(1, len(w)):.1f} per 100 words)")
def compare(raw, cleaned):
r = {x for x in words(raw) if x not in STOP and x not in FILLERS}
c = {x for x in words(cleaned) if x not in STOP and x not in FILLERS}
print("content words dropped by the cleanup:", sorted(r - c) or "none")
print("content words added by the cleanup:", sorted(c - r) or "none")
nums_r, nums_c = set(re.findall(r"\d[\d,.]*", raw)), set(re.findall(r"\d[\d,.]*", cleaned))
print("numbers changed:", sorted(nums_r ^ nums_c) or "none")
if __name__ == "__main__":
ap = argparse.ArgumentParser()
ap.add_argument("raw", type=Path)
ap.add_argument("cleaned", type=Path, nargs="?")
ap.add_argument("--long", type=int, default=35)
a = ap.parse_args()
raw_text = a.raw.read_text(encoding="utf-8")
print("RAW")
profile(raw_text, a.long)
if a.cleaned:
clean_text = a.cleaned.read_text(encoding="utf-8")
print("\nCLEANED")
profile(clean_text, a.long)
print()
compare(raw_text, clean_text)
I wrote a short dictated paragraph and two cleaned versions by hand to test it. Both the raw text and the cleaned versions are invented, not captured from a person or a model. The raw text:
So the main thing I wanted to say about the library fines policy is that um it basically hurts the students who can least afford it and the data from our own branch shows 14 overdue items last month and most of them were from the same three families and you know the fine was more than the cost of the book in two cases so I think the board should look at replacing fines with a reminder system and then also maybe a cap of 5 dollars per item. Sorry, I mean a cap of 5 dollars per family per month. Anyway the counterargument is that without fines people just never return books, which is fair, but the pilot at the other branch kept returns steady.
A faithful cleanup (I wrote it to follow Prompt 1):
RAW
words: 127 sentences: 3 average sentence: 42.3 words
sentences over 35 words: 1
90 words: So the main thing I wanted to say about the library fines policy is th...
fillers: {'um': 1, 'you know': 1, 'i mean': 1, 'basically': 1} (3.1 per 100 words)
CLEANED
words: 95 sentences: 6 average sentence: 15.8 words
sentences over 35 words: 0
fillers: none (0.0 per 100 words)
content words dropped by the cleanup: ['anyway', 'data', 'item', 'know', 'maybe', 'mean', 'say', 'shows', 'sorry', 'them', 'thing', 'wanted']
content words added by the cleanup: ['came', 'plus', 'point']
numbers changed: none
The profile shows the run-on: three sentences averaging 42.3 words, one of them 90 words long, and 3.1 fillers per 100 words. After cleanup there are six sentences averaging 15.8 words and no fillers. The dropped list is mostly spoken scaffolding (anyway, sorry, mean, know, thing, wanted). Two items deserve a look: data and shows vanished because I rewrote "the data from our own branch shows" as "our own branch had". That is a legitimate edit that the script cannot judge as good or bad. The numbers did not change. Two more entries are worth reading. item is the spoken correction (the dictation said "per item", the cleanup says "per family"). And maybe is a hedge that my "faithful" version dropped, which Prompt 1 forbids. I did not plan that slip, and the script caught it, which is the point of running it.
Now an unfaithful cleanup, written to resemble what a model does when told to "make it better" (it adds a sector-wide claim, changes 14 to 41, removes "I think", and ends with a conclusion the speaker never reached):
RAW
words: 127 sentences: 3 average sentence: 42.3 words
sentences over 35 words: 1
90 words: So the main thing I wanted to say about the library fines policy is th...
fillers: {'um': 1, 'you know': 1, 'i mean': 1, 'basically': 1} (3.1 per 100 words)
CLEANED
words: 82 sentences: 6 average sentence: 13.7 words
sentences over 35 words: 0
fillers: none (0.0 per 100 words)
content words dropped by the cleanup: ['14', 'about', 'afford', 'anyway', 'cases', 'counterargument', 'data', 'fair', 'hurts', 'item', 'kept', 'know', 'least', 'look', 'main', 'maybe', 'mean', 'more', 'never', 'replacing', 'return', 'returns', 'say', 'shows', 'sorry', 'steady', 'them', 'thing', 'think', 'two', 'wanted']
content words added by the cleanup: ['41', 'across', 'argue', 'came', 'critics', 'disproportionately', 'documented', 'exceeded', 'fears', 'harms', 'income', 'low', 'often', 'overstated', 'plus', 'problem', 'replace', 'returning', 'sector', 'showed', 'stop']
numbers changed: ['14', '41']
The script flags numbers changed: ['14', '41']. It also lists think, fair, two and cases as dropped, which is the hedge and two details disappearing, and lists documented, sector, overstated and fears as added, which is invented framing. It cannot say whether an addition is true. It only tells you where to look.
The limits are plain. It compares single words, so a rewording like "hurts" to "harms" shows up as one drop and one add. It misses a reversed meaning that reuses the same words ("did not rise" to "rose"). It reads numbers but not units. Use it as a fast filter before your own read-through, not instead of one.
What should writers do differently from students?
Writers usually have the ideas and want speed, so Prompts 1, 2 and 7 matter most. The risk is that a polished cleanup makes weak paragraphs feel finished. Read the cleaned text aloud once before accepting it, since the places you stumble are the places that need rewriting.
Students usually have the notes and need the thinking, so Prompts 3 and 4 matter most, and the AI should ask and compare rather than write. Two cautions. Check your institution's rules on AI assistance and on recording lectures before you record or upload anything, because I have not quoted any policy. And do not paste classmates' words, lecturers' unpublished material or personal data into a tool you have not checked.
When is dictation the wrong choice?
Skip it for text that is mostly symbols, tables or formulas, for a noisy room, and for work where the second pass would take longer than typing. It also fails quietly for names and technical terms: add them to the tool's vocabulary list if it has one, or fix them with find and replace. If your accent or language is not well supported, test a paragraph first. The accuracy test protocol shows how to score a tool on your own voice before you commit to it.



