Inspiration
We build on-device speech models at Argmax. We built the WhisperKit and SpeakerKit packages, which analyze speech and turn it into text on device, powering multiple apps that have been featured in WWDC and Apple product launches. Narraloud is the first consumer app we've built ourselves, and it works the other way, turning text into speech with natural-sounding voices.
Cloud text-to-speech apps often meter listening because every sentence costs GPU time on a server. Running the voice on your phone removes that server cost because you already own the hardware. It also means your reading doesn't need to be uploaded for narration, keeping it private. We believed high-quality narration should be unlimited and work offline, so we built Narraloud.
What it does
Narraloud reads aloud on iPhone and iPad: saved articles, PDFs, EPUB books, pasted text, and even pages scanned with the camera. The audio is generated on your device, so nothing you read is uploaded for narration. There is no account, and narration works offline. The standard voices read whole books for free, with no credits or word limits. Words highlight as they are spoken, with timing that comes directly from the speech model.
Narraloud Plus adds background generation (while the phone is locked), full audio export, a custom pronunciation dictionary, and Apple Intelligence enhancements to the text. It also registers the full voice catalog as OS system voices. They appear in Settings alongside Apple's voices, and VoiceOver can speak with them across the whole system.
How we built it
Narration runs entirely on-device. Our custom pipeline runs an 82-million-parameter speech model on the Neural Engine and streams audio right away, so long documents don't wait for processing.
Getting from a document to natural speech took a lot of work outside of the model. We wrote our own PDF parser to recover readable text from a notoriously difficult format. We also built a text-to-speech mapping layer that decides what the words on the page should actually sound like, from abbreviations and numbers down to individual phonemes.
The system-voice feature was really fun to build. We've always known about the system voice API but have rarely seen it in the wild. Our pipeline ended up being fast enough to generate audio within the short window the OS allows, so we could make the voices available outside Narraloud too.
RevenueCat handles subscriptions and lifetime purchases. Both unlock Narraloud Plus, and subscriptions include a 7-day trial.
Challenges we ran into
The voice model turned out relatively simple compared to everything surrounding it. Real documents are messy, and each format is messy in its own way. PDFs scatter headers, footnotes, and page numbers through the reading order. Web articles arrive wrapped in navigation and cookie banners. Scanned pages can come in tilted and uncropped.
From there, the text itself has to be interpreted. Dates, prices, abbreviations, symbols, and emojis can all be read differently from how they are written. Text that is easy to skim past on a page becomes obvious when the app says it out loud.
Accomplishments that we're proud of
The free tier is unlimited, and always will be. You can read a twenty-hour book with the standard voices, offline, without a meter.
We're also proud that the voices work with VoiceOver across the system. Accessibility was a core focus throughout the app: Dynamic Type, dyslexia-friendly and hyperlegible reading fonts, and high-contrast color themes. We wanted blind and low-vision users to be able to use the whole app, from importing a document to listening to it.
What we learned
We'd been shipping developer tools for years, but this is our first consumer app as a team, and we learned a lot. A lot of building Narraloud had nothing to do with the model: importing, reading, onboarding, a library, accessibility, a paywall, lots of things that need a great UX to let the model shine.
We also learned how much individual disfluencies matter when someone is listening to audio compared to reading it. One word read wrong can interrupt an otherwise good experience. And generating audio quickly doesn't help much if the listener isn't hearing what they expect. We ended up spending a lot of time on text cleanup and pronunciation for that reason.
What's next for Narraloud
A second generation of voices is already running in internal builds. These use larger models that push the limits of these amazing chips, with the goal of rivaling the very best cloud models while still running entirely on-device.
The codebase already builds for Mac, and we'll ship that version when it clears our bar. We'll continue to be focused on bringing everything a cloud voice service can do onto the device in your pocket.
Built With
- accessibility
- avfoundation
- cloud-functions
- coreml
- epub
- firebase
- ios
- kokoro
- machine-learning
- neural-engine
- on-device-ai
- python
- revenuecat
- storekit
- swift
- swiftdata
- swiftui
- text-to-speech
- textkit
- voiceover

Log in or sign up for Devpost to join the conversation.