Audiobook
Turn a book into speech on this Mac. Resume when the lid closes. Listen before the whole file exists.
This is a Cursor and Claude skill I run locally. It does not send the book to a paid model. Cleanup and speech go through LM Studio on the same machine. The only cost is electricity.
What you get
- A local progress page you can play as soon as the first clip exists
- Speech that continues after sleep, quit, or a crash. Finished clips stay. The clip in progress is thrown away and redone
- An
.m4baudiobook with chapter markers and cover art when every clip is done, plus an.m4acopy of the same audio
How a run works
- The source is saved into the work folder as
source/original.txt. It is not left only in chat. - If the file is already readable prose, speech starts. A scan dump can be OCR-cleaned first with a local text model. That blocks speech, because Orpheus and the text model cannot both be loaded.
- Orpheus in LM Studio reads short clips (about 110 words). Default voice is Leo.
- Each finished clip is appended onto a growing wav. The progress page keeps playing while stats refresh.
Pronunciation
Orpheus has no SSML. Do not put <break>, IPA, or {goh} in the book. Names go in source/lexicon.tsv as English respelling, applied when speaking:
# written say
Gogh Go
van Gogh van Go
Theo Tee-oh
Longest phrase first. Chapter titles in the m4b stay in print form. Sidecar text is what was actually spoken, so a lexicon change only regenerates matching clips.
Chapters and pauses
A line that is only Book I, Chapter 12, or Letter 3 is spoken and becomes an m4b chapter. Extra structure uses lone lines that are never spoken:
:::chapter Book I
:::title June 1873–December 1881
:::mark Preface
:::pause 1.5
***
:::pause and a lone *** insert silence. Concat is gapless, so a rest has to be a silent wav. Extra blank lines are only paragraphs. OCR must not invent these markers or respell names.
Cover
If you put a square JPEG in source/cover.jpg, that is used. Otherwise the skill draws a Cool Grey title plate from the book title and author (folder name, or source/meta.json). It shows on the progress page and is embedded in the finished .m4b.
How I start it
In Cursor or Claude Code, with the work folder open, ask to make or resume an audiobook. The skill discovers whatever is already on disk, opens the progress page, and starts speech if it had stopped.
Canonical files live in ~/.claude/skills/audiobook/. The Cursor copy is a symlink.