Show HN: An open-source, self-hostable synced narration platform for ebooks (smoores.gitlab.io)
Hi, I made a thing! This is by far the most work I've ever sunk into a side project; I've been working on this thing for over two years, and I'm super proud of it, even though there's still a lot more to do!
Storyteller is a self-hosted platform for ebooks with synced narration. This is basically self-hosted WhisperSync, for anyone familiar with that Amazon product.
It's currently made up of two self-hostable backend systems and a mobile app for reading and listening to the books it produces. Technically it uses an open spec, EPUB 3's "Media Overlay", for syncing the narration, but very few ebook apps actually support Media Overlays, and even fewer work well and have nice interfaces.
The mobile app is available on the Apple App Store as "Storyteller Reader", and I plan to release it for Android as well early next year.
Anyway, I hope someone finds this interesting or useful!
69 comments
[ 5.5 ms ] story [ 167 ms ] threadIt would be great if you could add a link to the app on the App Store.
Ebook elsewhere.
Looks super nice, the next step is to build a fully synced ecosystem for book management.
[0] https://www.audiobookshelf.org/
I love to jump between listening (in my car or while walking) and reading. Right now, only Amazon Kindle + Audible provides a good experience, but it's impossible to import your own audiobooks into Audible.
I did not go through minimum requirements but I have a LAMP stack running radius for a small shop and so far, runs happily on an RPi 2 featuring 1 GB of RAM. I have daily backups and everything required to spin up a clown if the SD card becomes faulty.
Is it a ebook/a book library like audiobookshelf with sync or just sync? ( https://www.audiobookshelf.org/ )
https://apps.apple.com/us/app/storyteller-reader/id647446772...
It's a full ebook/audiobook library, with sync, though I've focused much more on the reader experience so far than the library management experience. Improving the library management experience is on the horizon, though!
https://smoores.gitlab.io/storyteller/docs/how-it-works/the-...
I do highly suggest that a quick intro demo video and/or screen shots of a tool like this would be beneficial to the project.
I once wrote a similar thing for building a custom LJSPEECH dataset out of ebook/audiobook combinations to synthesize my favorite narrator voices using coqui-tts and the VITS model and make them "publish" books that never came out as audiobook.
It was able to synchronize the book contents to timestamps, split the spoken word in to sentences and create a LJSPEECH datasets out of the combinations. I used aeneas[1], it was a bit finicky to set up, but after a while it even was able to map non-english languages (in my case german) with more than 80% accuracy. Worked out pretty well, the LJSPEECH datasets were good (I still have them here), but the TTS tech was not there yet :-) Maybe it's time to revive this project using newer modelling approaches like XTTS or something...
[1]: https://www.readbeyond.it/aeneas/
please revisit it if you can.
Check out https://github.com/aedocw/epub2tts for creating an audiobook from epub. Take a look in the utils directory for notes about fine-tuning a voice clone. I can tell you I've done some voices that are close enough to the original to be pretty shocking.
Feel free to get in touch if you have any questions, it's pretty fun making your own audiobooks with the reader of your choice!
[0]: https://www.audiobookshelf.org/
[1]: https://github.com/advplyr/audiobookshelf/issues/189#issueco...
This is basically exactly why I started down this road over two years ago. I really wanted to be able to switch back and forth between my audiobooks and their text representations!
Thanks for mentioning Storyteller in that discussion, I'll have to hop in there!
Also, my experience was that audio and text versions are often very different (e.g. the audio having an intro missing from the text). It'd be very interesting to know how well Storyteller handles such cases. Does it require manual audio/text editing or handle the differences automatically?
The docs also have a detailed section about the algorithm that goes into how it auto-handles differences between the audio and the text.
And I haven't realized that you can actually see sentences highlighted as they are being read. I'd love that for Chinese (I'm learning it, so it'd help me a lot). I'll try and see if it "just works", and contribute a patch if it doesn't.
Simplified Mandarin: https://youtube.com/playlist?list=PLVlVz7EDz7fprPeVpqQCvlkMI...
Traditional Mandarin: https://youtube.com/playlist?list=PLVlVz7EDz7fpQZr29P5hqVveL...
... also 33 other languages https://youtube.com/@literature_for_eyes_and_ears/playlists
I left it to languish once I discovered the demand wasn't that great and I was spending more time making the videos than people ultimately spent watching them.
Others have linked to the docs, where I go into detail about the syncing algorithm, but at a high level:
Storyteller uses Whisper to transcribe the audio to text (this is the most computationally expensive part of the process)
Then we use a Levenshtein-distance-based fuzzy search algorithm to find each chapter in the text (this is attempting to account for the difference between audio and text versions, as you said!)
Then for each chapter, we find the start and end timestamp of each sentence, again using a fuzzy search across the transcription.
In general, Storyteller does a pretty good job; it treats the ebook as the source of truth, which means that at the moment it sometimes misses introductory and ending pieces of the audiobook, though it's on the roadmap to have some support for explicitly triggering those when that happens.
Look forward to see how this project matures. We need more options in the book reading scene that are self-hosted and not Calibre.
It looks like the feature is only available if you “add on” the audible version when you’re making your ebook purchase? And, for limited titles.
If I just bought a book in audible, there should be a “buy ebook” button in that app! And if I have the book in kindle, it should give me the option to add on the audio book after purchase. Seems like a missed opportunity— there must be a reason for it being so clunky.
Edit: I have not been able to find a single whispersync title. Looks like it’s not enabled at all in Canada? And the US books that have the feature don’t even follow the setup (eg icon) as described on the website (https://www.audible.com/ep/wfs)
The icon appears when looking at the audiobook’s product page (both on Amazon and Audible). Unfortunately the ebook page doesn’t appear to have something similar.
> even though there's still a lot more to do
A few have asked on this thread already, but since you're already using AI to transcibe, it would be super cool if we can use AI to generate audio using TTS
I quit audible (signed up a few times) because there are very few high quality audio book, even those spoke by the authors are bad (most of them are not pro narrator)
A good AI would be amazing, as they never get tired speaking for hours, yet maintaining the same energetic voice, intonation and pace.