Join our FREE personalized newsletter for news, trends, and insights that matter to everyone in America

Newsletter
New

I Built An Audiobook App For Myself. Three Days After Launch, It Has 33 Users

Card image cap

I recently decided to create my own solution to my own problem. I know thousands probably exist somewhere out there, but still, I’m a developer and wanted to do it myself and see how far I could push my ideas for executing something I knew wasn’t going to be cheap, without depending on third-party TTS for audio generation.

If you know audio generation, you currently have two options: rent compute, run your own TTS model, and pay for the compute, just like you would if you wanted to run an LLM, or pay somebody like ElevenLabs.

Well, we are also a lab, so I took this on as a personal project: creating a PDF/EPUB/DOC, etc. to audiobook SaaS. That’s how I started working on Soniva, initially intending it for personal use, as I was discussing with my girlfriend before we broke up.

I did it with the help of AI. I used Stitch for most designs, Claude for the mobile app and web frontend work, and Codex for backend logic, and made them collaborate. In about two weeks, I had something. It took time considering the use of AI, but yeah… there were more hurdles than I thought, and I also made sure it wasn’t just blindly vibe-coded.

I’ll take you through one seemingly simple part that was a bit of a challenge: parsing documents into well-formatted text while considering everything. Some are scanned images, some contain text with titles in different styles and positions, and some are Bible documents or other religious texts. I believe users will never care why your parser cannot handle that well, so yeah… I had to invest time. Also, imagine 1953 as a year. How would you like to hear it?

Then there’s TTS, the main part of the product. An API subscription wasn’t an option for me, so I decided to work with Kokoro. I worked with it from the start of the project until almost the end of the setup, about three days before the end of week two. Then I decided to change to Pocket TTS for various reasons, including voice cloning and many others that made sense in my brain.

Then I thought: we have this, but where am I going to run it?

I had previously tried creating a SaaS for a chess teaching platform I called InsightChess. That failed because I accumulated around $300 in AWS costs in one month, had no money, and killed it. So I had an idea: same plan, different execution for a start.

The plan was an AWS Spot Instance, which I had used before. But now I was always going to make sure I killed the instance when no work existed, unlike the other project, where I left it running hopping to optimize for always fast responses.

I also wanted to make generation fast and wasn’t willing to use Python, so I dove in for another few days to optimize audio.cpp for Pocket TTS. I wanted generation at around 20x real time. I ended up getting 30x, with lots of hacks and help from Fable and Codex collaborating. Now I had the business:

  • A custom-modified audio.cpp where I stripped out everything I didn’t need for quality generation and also some modifications for arm compute in aws.
  • Pocket TTS fine-tuned with some Swahili and East African dialects using a small sample.
  • A managed AWS Spot Instance with a pre-made image for fast starts.
  • A small on-demand server always running for the main hosting built in go-lang.
  • CloudFront + S3.

I had invited around 10 friends to test, so I was surprised that three days into the app being live, I’m now at 33 users. I’m so happy, and I hope at some point that translates into more consistent users. That will also help motivate me to improve the TTS, as I believe we still need work there to compete with other TTS offerings.

If you want to try it out and provide feedback, please check the comments for how to get the app. We offer three free books, so yeah… that should be enough for anyone who wants to test it and see how it works.

Also if you have ideas on maybe what i should have done different etc.. let me know as this was also to explain what we did just incase there is better execution path.. always welcome feedback

submitted by /u/HumbleDiscount2492
[link] [comments]