A voice-first note taking workflow needs three steps that are easy to say and hard to skip: capture by speaking, sort by a simple rule, and review before you trust it. Most failed attempts skip the second step, so they end up with a folder of rambling transcripts nobody opens. This post gives you a spoken-marker habit, a small script that files markers into headings (I ran it, output below), and notes on what Obsidian, Notion and Wispr Flow documented as of 2026-10-09.
I did not use any of these apps for this article. App facts come from the vendors' help pages, read on the date above. The script and its output are real. If you want the written-notes side of a second brain, AI prompts for notes in Obsidian or Notion covers processing and weekly review; this post is about getting the words in by voice.
What can you capture by voice in Obsidian and Notion?
There are two different things people call a voice note, and mixing them up causes confusion.
- Audio kept as audio. Obsidian's core Audio recorder plugin records into a note. Its help page says you click the microphone icon labelled "Start/stop recording" in the ribbon, and the recording is saved to your vault and embedded at the end of the active note. It does not transcribe. The page does not state the file format or mobile support, so test both before building a habit on it.
- Speech turned into text. A dictation tool types into whatever app has focus, which includes an Obsidian note or a Notion page. Wispr Flow's pricing page lists dictation on Mac, Windows, iOS and Android, a personal dictionary and snippets on its free plan, and a Notetaker for meetings on Mac and Windows only. Superwhisper and Talon are other options; compare them in the dictation tool comparison.
Notion has a third route. Its AI Meeting Notes help page says it is available on Business and Enterprise plans and on eligible mobile subscriptions that include Notion AI. On desktop you type the slash command /meet on a page, then choose Start transcribing. It needs at least about one minute of speech to produce a summary, has a daily limit of 10 hours per user, is not supported offline, and can transcribe uploaded AAC, M4A, MP3 or WAV files. The desktop app captures microphone and system audio, while the browser captures only the microphone. Those are the page's statements as I read them on 2026-10-09; plans and limits change.
Pick by what you are capturing:
| Situation | Practical route |
|---|---|
| Thought while walking | Phone dictation into a capture note or inbox page |
| In-person conversation (with consent) | Audio recorder or Notion meeting notes, then transcript |
| Your own meeting with others on a call | A meeting-notes tool, with consent from everyone |
| Long dictation at your desk | Desktop dictation into a daily note |
The spoken-marker habit
Sorting a transcript is where voice notes die. The cheapest fix is to sort while you speak. Start a sentence with a marker word and a script can file it.
The four markers in the example:
- Todo for an action you owe
- Decision for something settled
- Idea for something to explore
- Question for something to find out
You say: "Todo email Priya to confirm the new date." Everything else is context that stays in the note as raw text. Keep markers at the start of a sentence and keep one item per sentence. You do not need to say "colon"; the script allows a comma, a colon or nothing after the marker.
This is deliberately dumb. A rule-based filer is predictable, free, offline and easy to debug. An AI step can come after, and you will see it only has to tidy, not sort.
A script that files markers into a note (real output)
This Python script, standard library only, reads a transcript and writes a markdown note with frontmatter. Marked sentences go under headings; everything else goes under Raw.
import re
import sys
MARKERS = {"todo": "Tasks", "decision": "Decisions", "idea": "Ideas", "question": "Open questions"}
def build(text: str, date: str) -> str:
sentences = re.split(r"(?<=[.!?])\s+", text.strip())
buckets = {h: [] for h in MARKERS.values()}
raw = []
for s in sentences:
m = re.match(r"(todo|decision|idea|question)[:,]?\s+(.*)", s, re.I)
if m:
body = m.group(2).strip()
key = MARKERS[m.group(1).lower()]
buckets[key].append(("- [ ] " if key == "Tasks" else "- ") + body)
else:
raw.append(s)
out = ["---", f"date: {date}", "source: voice", "status: unreviewed", "---", ""]
for h, items in buckets.items():
if items:
out += [f"## {h}", *items, ""]
out += ["## Raw", " ".join(raw)]
return "\n".join(out)
if __name__ == "__main__":
print(build(open(sys.argv[1]).read(), sys.argv[2]))
I ran it on this hand-written transcript, which imitates what a dictation tool would give you after a supplier call:
Walking back from the supplier call. They can ship the first batch two weeks late. Todo email Priya to confirm the new date. Decision: we keep the launch date and ship the first batch to pre-orders only. Idea, add a banner on the product page that says early orders ship first. Question, do we still have enough packaging for the pre-orders? The call was friendly and the supplier sounded sure about the date.
Command: python3 voice2note.py transcript.txt 2026-10-09. Output as printed:
---
date: 2026-10-09
source: voice
status: unreviewed
---
## Tasks
- [ ] email Priya to confirm the new date.
## Decisions
- we keep the launch date and ship the first batch to pre-orders only.
## Ideas
- add a banner on the product page that says early orders ship first.
## Open questions
- do we still have enough packaging for the pre-orders?
## Raw
Walking back from the supplier call. They can ship the first batch two weeks late. The call was friendly and the supplier sounded sure about the date.
It works on this sample because I wrote the sample with markers in the right places. Real dictation will produce failures: a tool may capitalise or punctuate a marker oddly ("To do"), merge two sentences, or hear "idea" as "I deer". The script ignores any sentence that does not match, so a miss lands in Raw and nothing is lost. That is the point of keeping Raw. Add "to do" handling if your tool splits it.
To get the note into Obsidian, save the output into your vault folder. Obsidian's Daily notes core plugin opens or creates a note named by date (default format YYYY-MM-DD), with a configurable folder, date format and template, per its help page. A pattern that fits: dictate into today's daily note, and run the script into a separate Inbox/ file for anything longer than a few lines.
Where does AI help after capture?
Use the model after sorting, for jobs the script cannot do: link the note to existing ones, tighten the wording, and turn a decision into a short paragraph. Keep the rules strict. An untested template:
Below is a note from a dictated voice memo. The Raw section is the original.
1. Under each heading, fix obvious speech-to-text errors only. Do not change meaning.
2. Keep every negation (not, don't, never) exactly as written.
3. Do not add dates, names, numbers or decisions that are not in the note.
4. If something looks like a transcription error but you are not sure, add it to a "Check" list at the end instead of changing it.
5. Leave the Raw section untouched.
[PASTE NOTE]
The Check list is the part to keep. It turns the model from a smooth rewriter into a second reader.
For meeting-shaped captures, where you need owners and deadlines pulled out, use the process in AI meeting notes that turn a transcript into action items instead of inventing a new prompt.
Mistakes that wreck voice notes
- No review step. Leave
status: unreviewedin the frontmatter until you have read the note once. Change it toreviewedby hand. - Recording others without telling them. Notion's own help page tells users to disclose and get consent from all participants before transcribing, and offers options like a consent message or asking aloud. Laws differ by country and I am not giving legal advice; check your local rules.
- Dictating things you would not email. Cloud transcription is a third party. Wispr Flow's privacy page says transcription always happens in the cloud. Superwhisper's homepage says it works offline but also lists cloud models for some modes, so check its privacy policy for what stays on your device. For sensitive subjects, use a local model or type. See what not to paste into ChatGPT for a short list of data that should not leave your machine.
- Trusting names and numbers. Dictation loves to change "Priya" into a common word and "fifteen" into "fifty". Scan every number and name once.
- Saving everything. Delete the audio after you have verified the text if you do not need it. Obsidian's help page notes removing an embed does not delete the file; you delete it from the file explorer.
A one-week setup
- Day 1: pick one capture point (phone or desktop) and one inbox note. Add your four markers to a sticky note.
- Day 2 to 5: speak at least three notes a day using markers. Do not sort anything by hand.
- Day 6: run the script on each transcript and count how many marked sentences it filed versus missed. A high miss count means your tool is changing the marker words; adjust the regex or your phrasing.
- Day 7: run the AI cleanup on one note, compare it with Raw, and decide whether the Check list caught anything real.
Keep the habit only if the weekly review finds things you would have lost. If it does not, keep typing; nothing here is obligatory.



