Turning Dense Math Notes into Commute Podcasts

Oct 1, 2026·
Aaron Scherf
Aaron Scherf
· 2 min read
A three-hour recording becomes nine episode files; one remains about 62 minutes, and a formula is rewritten for speech. Illustration: The historical nine-file trial still needed duration balancing.
blog

I built the Audio Generator to make course notes available away from a screen. Reading a mathematical document aloud requires more than sending its text to a speech engine: formula commands need to become spoken language first. As an illustrative example, E[X] should become “the expected value of X,” not a recital of brackets and formatting commands.

The first complete recording exposed a different problem: it was three hours and 22 minutes long. Generating a valid MP3 had solved file production, but left navigation through a long set of notes unresolved. I changed the output to separate episodes grouped around headings, with an index showing which sections went into each file.

This October 1, 2026 post describes the September development run. The dated update below separates later changes from that result.

Translate the notation before speaking

Simple replacements left too much raw formula syntax behind. A local model could rewrite the notation, but the recorded test on a roughly 122,000-character note took about six hours. The next version sent mathematical passages to cloud models while leaving plain prose alone. Cleanup and speech synthesis stayed local.

The amount of notation determined which model handled each passage. Shorter requests could run concurrently, and a later change let sections share one dispatch queue rather than waiting for each section in turn. That brought preparation of the narration text to 3.8 minutes in the September 9 run.

Separate preparation from production

Speech synthesis took another 19.4 minutes with three local Piper workers. The complete run therefore took 23.2 minutes and produced nine files. Those numbers describe one difficult input, not how long every course’s notes will take.

The episodes targeted 10-20 minutes, but one section with no internal headings became an episode of about 62 minutes. The result was not nine uniformly short recordings. It also did not establish whether listening would help me understand or retain the material; that needs listening and content review, beyond generating files.

Regeneration works at the source-file level: the saved state uses a fingerprint of the whole note. Editing any part regenerates all its episodes, while unchanged source files can be skipped.

Update, October 16, 2026: the current code can divide oversized sections at paragraph boundaries, following an October 10 fix. One indivisible paragraph can still exceed the target, and a new listening check is needed to assess the changed output. The saved narration text provides a way to inspect formula rewrites before relying on the audio. The current project page covers output locations, textbook behavior, and the remaining limits.

Aaron Scherf
Authors
Aaron Scherf (they/them)
PhD Student
I am a PhD student in Sustainable Development at Columbia University and a former USAID Foreign Service Officer. In Ukraine, I led the monitoring and evaluation team for over 50 development projects during the war. Previously, I worked on program design and social inclusion in Colombia, as well as budget analysis and knowledge management in Washington. Those experiences taught me how to ensure evidence is trustworthy and actionable, especially in conditions of rapidly changing and incomplete information. I now bring that perspective to research, data analysis, and practical software tools. I am available part-time for consulting and applied research collaborations.