NewsLab
Jun 28 23:12 UTC

Show HN: eBook to audiobook narration with realistic AI voices (ebookaloud.com)

8 points|by flatline||7 comments|Read full story on ebookaloud.com
For a while I've wanted to try out the new AI voices for long-form narration, but everything I found required a subscription that didn't justify my limited usage. I came across the open Kokoro model [0] and the voices are very good -- good enough to listen to for hours without the fatigue I got from legacy, robotic TTS voices. The model is 82m parameters and designed to run fast, but I still struggled to get reasonable times from CPU inference on my 12-core laptop. I thought a cloud-based GPU service would let me generate audiobooks fast enough to feed my own self-hosted library, and that same pipeline could become a product other people could use.

I had two goals in building this: get some exposure to AI multi-agent coding workflows, and build a TTS product targeting ebook to audiobook conversion specifically. 99% of ebookaloud was written by DeepSeek v4 in OpenCode. I've used about 750 million tokens costing $12 in credits over the course of a month, and I'm very pleased with the results. Every change/feature went through a plan -> implement -> test -> review -> correct -> commit cycle with a mix of Pro and Flash agents. This was generally limited to one or two concurrent workers. I had a separate eval agent for quality control on various parts of the extraction and synthesis pipeline, which I could run 8-10 at a time. I may be approaching Yegge's Stage 6 [1] in terms of AI workflow automation.

I later set up Claude Code and ran Opus 4.8 side by side with DeepSeek. There are definitely quality differences, but I'm an experienced developer with a hands-on approach. I didn't write any of the code, but I have read critical sections of what it generated and had extensive conversations with DS Pro about each step of the approach. Opus didn't have much critical to say about DeepSeek's choices, and I'm not convinced a frontier model would have made an appreciable difference for my workflow. I suspect on a large codebase the differences would become more apparent, but the few changes I implemented with Opus had similar issues to all the models I've used: random changes without my direction, over-complicating simple solutions, taking unanticipated/destructive actions when it gets stuck, etc. I do see Opus being capable of handling more of the complex planning and orchestration that I was involved in. That's something I may want sometimes but not others.

As to the product itself, there are a lot more sophisticated solutions out there. I'm not trying to compete with ElevenLabs. I'm targeting m4b generation for a seamless audiobook experience with a pay-as-you-go pricing model and good-enough output quality. This is the first product I've ever tried to commercialize, and AI code generation put something polished within reach. Without AI, this would have taken me 6-8 months of manual research and development, and I would have gotten burned out long before completing it.

I have a free sample on the front page of the site if you just want to see what it generates in terms of voice/format. I made a few opinionated decisions regarding output quality. I aimed for 140 wpm for most of the voices to match industry standards, but some are much slower or faster and lose prosody at that rate. Rather than give users a wall of options, I'm deferring to the playback device for things like speed control. If the site sees real usage I'd like to expand to support Kokoro's other languages, and extraction and synthesis from PDF would round out the product quite a bit.

[0] https://github.com/hexgrad/kokoro

[1] https://steve-yegge.medium.com/welcome-to-gas-town-4f25ee16d...

Comments (7)

7 shown
  1. 1. TomeVox||context
    Nice, Kokoro really is the jump that made long-form listenable without the legacy-TTS fatigue. I went down almost the same path: hated the e-reader TTS, found the newer models, and ended up building a hosted audiobook service (tomevox) on a similar GPU pipeline.

    Two things that ate most of the time once the TTS itself was good enough, in case they save you some. First, pronunciation of names and invented words: a per-book lexicon helped more than swapping models. Second, chapter-boundary handling for clean M4B chapter markers. Raw generation ended up being maybe 30% of the work; manuscript prep and a human QA pass before delivery were the rest. How are you handling pronunciation overrides?

  2. 2. flatline||context
    I checked out your product - nice! I think we have a similar approach for a different audience. EbookAloud is basically just a two-click conversion system more geared towards consumers than content creators. Upload an epub, get an audiobook. Users will have to live with mispronounced names, etc.

    Content parsing and chapter alignment were also the better part of the work here. Laying out an epub on screen is straightforward. Extracting text by chapter without duplication or elision took a lot of iterations. I could not ultimately follow the epub spec recommendation to traverse the spine, but had to rely on the TOC to drive extraction or fallback to some simple heuristics if none was present. It’s still the biggest risk area in the code and why I added a detailed chapter breakdown before asking for payment. I’ve pushed a lot of content from a wide range of sources through the code for manual and semi-automated inspection and decided it’s good enough to go live.

  3. 3. sandreas||context
    There are other open source models that produce very good quality:

      F5-TTS
      FishTTS (they changed their license to make money)
    
    I also did some experiments with CoquiTTS, but FishTTS was the most promising in german language samples.

    Along with X-Whisper it is possible to use epubs along with narrated audio files to train your favorite narrator's voice instead of only using inference or generated voices. The output quality is really good, however, these cannot be released to the public :-) I'm especially targeting book series with many parts where the publisher has switched narrators or fully stopped releasing later parts.

    Audible has also started releasing some of their more underdog books with an ElevenLabs narration in different languages. The AI is still noticable but the quality is pretty impressive.

  4. 4. CRSilkworth||context
    Looks very cool, would love to give it a go. A lot of the time an audible book can be ruined by the narration rather than the writing. would be good to try out a few different voices.

    Might just be being dense but I tried to drag and drop alice in wonderland and it's complaining that the file is too large. How should one try it out?

  5. 5. flatline||context
    Thanks for checking it out! The Alice link is a generated m4b, so it’s sample output that you could likely play back directly in your browser, although that may not have the cover display or chapter listing. I recommend Apple Books or Plappa on iOS, or Audiobookshelf on Android. For desktop, VLC still rules the day for general media playback, but Audibly is a Windows app that has good reviews.

    There are many public domain epub files online which you could use as input. One excellent source is https://www.gutenberg.org/

  6. 6. james-mxtech||context
    the eval agent you're running 8-10 wide is the part i'd want more detail on. silent chapter drops and dupes were the only extraction failures that ever bit me, and grading those automatically needs a ground-truth toc to diff against, which the epubs that lie about their spine never give you.
  7. 7. flatline||context
    I currently parse the TOC for chapter markers, then walk the spine between markers to ensure everything is captured regardless of what the TOC says. I think it is in the spirit of what epub readers do and in line with the spec.

    The eval agents perform the extraction and run a comparison of chapter/word count against the epub original. They also parse the extracted text to look for inconsistencies. The quality criteria have been built up iteratively and issues backed out into unit tests. The eval runs aren't part of my standard unit tests but a one-off, heavy lift process that I run periodically against the epub collection I already had and a bunch I built up for this project. I've also just done a ton of manual validation. There may still be edge cases.