DEV Community

Cover image for RecipeTape: My Friend's Voice Memos, Now a Family Recipe Book
Win Aung
Win Aung

Posted on

RecipeTape: My Friend's Voice Memos, Now a Family Recipe Book

Hacktoberfest: Maintainer Spotlight


This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend

What I Built

RecipeTape — a tool that turns a loved one's voice memos into a printable family recipe book.

My friend Win Ko Aung's mother has never written down a single recipe. She cooks the way her mother taught her: by voice, by feel, by "a spoon of this, until it smells right." The family has years of her voice memos — half-remembered curries narrated over a sizzling pan — and every one of them was one lost phone away from disappearing forever. I built this for Win Ko Aung, so his mother's recipes outlive her phone.

RecipeTape takes one of those voice memos and gives back a recipe book page: a title, the ingredients with their quantities, the steps in the order she spoke them, her own tips, and a dedication line in her words. Open the page in a browser, hit print, and it becomes a page in a book the family keeps.

Here's what came out of a 90-second demo memo (a mother narrating her chicken curry):

"Okay sweetheart, I am going to tell you my chicken curry recipe, the way my own mother taught me, so you never lose it. First, take two pounds of chicken, cut into small pieces, wash it well, and set it aside..."

And the page RecipeTape made from it — Chicken Curry, Serves 4, 5 ingredients, 13 steps, "Serve hot with rice":

Demo

The whole thing runs as a Kaggle notebook on a free GPU — press run, get a recipe page:

https://www.kaggle.com/code/winkoaung/notebookbe7ed42789

The notebook accepts any voice memo (mp3/m4a/wav): attach a Kaggle dataset or upload your own with the widget. Out come three files: transcript.txt, recipe.json, and recipe.html — the printable book page.

Code

Kaggle notebook (full code + demo): https://www.kaggle.com/code/winkoaung/notebookbe7ed42789

The pipeline is four small Python modules:

voice memo
  │  faster-whisper (open source, runs locally)
  ▼
transcript
  │  Gemma 3 1B (open weights) → strict JSON, validated, never invents
  ▼
recipe.json
  │  renderer
  ▼
recipe.html → print to PDF
Enter fullscreen mode Exit fullscreen mode

How I Built It

The open-source pieces are the product, not a garnish.

Speech is faster-whisper (the small model), running entirely on the machine — on Kaggle's free T4 it transcribes with float16, on a CPU-only laptop it drops to int8. A voice-activity filter skips the silences, and if GPU initialisation ever fails it falls back to CPU instead of dying. The 90-second demo transcribed near-perfectly, including "a squeeze of half a lemon."

Understanding is Gemma 3 1B Instruct, Google's open-weight model, pulled from Kaggle Models (no tokens, no API keys). It gets the transcript plus a strict JSON schema and five rules — the most important being never invent an ingredient, quantity, or step that isn't in the transcript. The reply is parsed with a JSONDecoder.raw_decode() scan (so stray prose can't corrupt it) and validated hard: ingredients must be well-formed entries, steps must be real sentences. Deterministic decoding (do_sample=False) — a recipe should not improvise.

One honest wart: Gemma nailed the structure (13 steps in spoken order) but echoed my schema's placeholder text for the dedication line instead of writing one. The prompt needs one more iteration there — the page above uses the transcript's own closing line instead.

The page is plain HTML/CSS with a print stylesheet: warm paper tones, a dedication line, ingredients in two columns, numbered method, the cook's tips, and a pull-quote of the original voice memo ("In Their Own Words"). No framework, no build step — Ctrl+P gives you the book.

I built the pipeline with Muse (code, notebook, demo) and had ChatGPT do a full adversarial code review — it caught 15 issues, including a real one: my first version requested bfloat16 on a T4, which has no native BF16 support. The review earned its keep before a single GPU minute was spent.

Why Does Open Innovation Matter?

A voice memo of your mother describing her curry is about as personal as data gets. The closed alternative — upload it to a transcription API, then to a chat API — means an account, a per-minute bill, and a copy of her voice on someone else's server, plus an app that dies the moment the network does.

RecipeTape runs fully offline after the one-time model download. The audio never leaves the laptop. It costs exactly $0 — the demo ran on Kaggle's free GPUs. And every open piece can be inspected and changed: the transcriber, the weights, the prompt, the JSON schema, the validation rules. When Gemma misheard "a spoon of" as a precise gram weight in an early test, I could read the prompt, see the rule that allowed it, and tighten it. A closed API would have handed me a confident paragraph and no way to demand it quote the audio I already had.

That's the whole bet: the people whose recipes these are should never need anyone's permission — or anyone's server — to keep them.

Prize Categories

- Best Use of Gemma. Gemma 3 1B Instruct (open weights, via Kaggle Models) is the recipe editor: it turns a rambling spoken transcript into validated, structured recipe JSON without inventing a single ingredient. Deterministic decoding, chat-template prompting, FP16 on the T4.

Top comments (0)