cd /news/ai-tools/talk-to-the-book-dictating-the-book-… · home › topics › ai-tools › article
[ARTICLE · art-157726] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

Talk to the Book: dictating the book I owe 57 people

A developer built Talk to the Book, an open-source dictation tool that transcribes voice memos with ElevenLabs Scribe, drafts them in the author's voice using a local Gemma 4 12B model run through Ollama, and files each draft into the correct part of a book outline. The tool defaults to the developer's own pre-sold memoir, My Story, but ships with an outline editor so anyone can swap in their own book structure, and it reads approved drafts back via ElevenLabs text-to-speech. The hosted demo falls back to Google's cloud-hosted Gemma, while the intended workflow keeps drafting local so unpublished text never leaves the machine.

by read6 min views1 publishedOct 26, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady I have a book I owe people. Fifty-seven buyers paid for it in January 2021, and the manuscript still is not finished. The pages exist: handwritten draft pages in a disorganized pile, a four-part outline in a Google Doc. The bottleneck is not ideas. It is me, facing the blank page, which I will avoid for weeks.

Talk to the Book is the tool I built for that exact avoidance. I record a voice memo about a memory. ElevenLabs Scribe transcribes it. A local Gemma model, running on my own machine through Ollama, cleans it into a draft in my voice and files it into the right part of my book, with a suggested section. I edit it. Then ElevenLabs reads the approved draft back to me, so I can hear whether it sounds like me on a walk. Saved dictations keep their title, part, and word count, and a copy button puts any draft straight into my manuscript with the suggested title as the heading.

It defaults to my book, My Story. It also has an outline editor, so anyone can swap in their own book title and parts in about a minute and dictate against that instead. I built this for my book. The outline is just data, so it works for yours too.

Who gets to be a little lazier because of it: me. The three things I dread, transcription, cleanup, and filing, are what the tool takes. The review stays mine.

Video: [https://youtu.be/SUf2oJdjbjY](https://youtu.be/SUf2oJdjbjY) 

Live demo: [talktothebook.tech](https://talktothebook.tech)

One honest note on the demo: the hosted version runs in cloud mode, so dictations there are drafted by Google's hosted Gemma. The page says so, right under the draft button. Local mode is the private path, and that is how I actually use it.

The hosted demo drafts with the cloud Gemma fallback, because a server has no local model. The real workflow is local-first: run it on your own machine (setup below) and your dictation never leaves it for the drafting step. Transcription and read-back use ElevenLabs either way.

Dictate a memory. A local Gemma cleans it into a first draft and files it into your book. ElevenLabs reads it back so you can hear whether it sounds like you.

Built for the Hacktoberfest Open-Source AI Challenge, Week 3 (2026): theme "Slow and Steady", building something with open-source AI that rewards laziness. Talking is lazier than typing, and a memoir that has waited since 2021 deserves the laziest possible on-ramp.

My Story is a pre-sold book: 57 people paid for it in January 2021. The manuscript lives as a Google Doc outline…

The repo is public. Everything below is in there: the Scribe and read-back routes, the draft route with the Gemma local-first helper, the outline editor, the drafting animation, and the accessibility work.

Next.js and TypeScript. Three external pieces, each doing the job it is good at:

Gemma 4, open-weight, local-first. The real workflow runs gemma4:12b-it-qat on my M1 Mac mini through Ollama, with the context window set to 16K. Local is not a preference here, it is the requirement: an unpublished memoir should not have to go to a closed cloud to become a draft. Google AI Studio's hosted Gemma is the fallback for the demo, and only the demo.

ElevenLabs, for ears and voice. Scribe for speech to text, text to speech for the read-back. The ElevenLabs API key I use is restricted to just those two endpoints, with a credit limit set. Nothing generates audio until I approve the text, which is my approval gate and also what keeps the credits bill small.

My own outline as data. My Story's four parts are the default. The editor stores a custom outline in localStorage and sends it with every draft, so Gemma files against whatever book is in the editor. No accounts, no database.

The honest build story: the first real end-to-end run failed. Local Gemma 4 is a thinking model, and even with JSON mode on it wrapped its answers in thought blocks or markdown fences, or thought long enough to truncate mid-JSON. My route did a strict JSON.parse and failed with "Gemma returned non-JSON." The fix was to turn thinking off for the local call, raise the output room and the wait limit, and add a tolerant parser that extracts the JSON object from whatever envelope it arrives in. I verified it by replaying the exact failure against the running app with a fake local Gemma. That is the kind of bug you only find in a real run, and it is the reason the app has a drafting animation now: while Gemma drafts, a full-page scene shows your transcript with filler words struck through in persimmon and the parts lighting up in turn while it decides. The local wait is about one to two minutes for a three-minute dictation on my M1, and the animation turns that wait into the most on-theme moment in the app. Slow, visibly.

Three things a closed API would not give me:

My memoir stays on my machine. That is the whole thing. I will not paste an unpublished memoir into a closed cloud to get drafts back. The open-weight model runs in my house, on hardware I own, and the transcript never leaves it in local mode.

It works without asking permission. No API key roulette, no per-token meter running on every dictation, no rate-limit roulette on a deadline. I pulled the model once. It is just there now, and it will still be there after the challenge ends.

I can read the prompt. The draft prompt is mine, with my rules baked in: keep every specific detail, invent nothing. When the output is wrong, I can see why, because I can see the whole pipeline. A closed API is a black box with a price tag. This is a box I own.

I will not pretend this saves hours on a stopwatch. A three-minute dictation takes about two minutes to draft locally, plus the time I spend editing, which is the part that is supposed to be mine anyway.

What it actually saves is the thing that has kept my book unfinished for five years: the blank page. Talking through one memory into the app is the lightest possible ask on a week when typing feels like too much. And the copy button means a finished dictation goes straight into the manuscript. The distance between "I should write" and "it is in the manuscript" is now one voice memo and one paste.

── more in #ai-tools 4 stories · sorted by recency
── more on @elevenlabs 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/talk-to-the-book-dic…] indexed:0 read:6min 2026-10-26 · —