AI Engineering

We put AI voice in 30 languages into a school bus app.
Here's what broke.

By Manoj SainiΒ· 30 July 2026Β· 6 min readΒ· Pilani, India

A push notification saying "Bus 14 is arriving" gets swiped away with forty others. A voice saying the same thing, in the language spoken at home, does not.

That was the theory. Turning it into something that runs every school day, for real parents, took considerably longer than building the first working version β€” and taught us five things that no tutorial mentions.

The actual problem we were solving

School transport safety. Parents want to know where the bus is and when it will arrive. We had GPS, we had an app, we had push notifications. Engagement was still poor.

The reason was uncomfortable once we saw it: a meaningful share of parents weren't reading the notifications. Some because the app was in English and they read Hindi. Some because they were cooking, driving or working. Some because a banner among two hundred unread banners is invisible.

Voice solved all three at once. But only if it spoke the right language, and only if it worked every single time.

1Language is a property of the person, not the app

Our first version had a language setting. The app was in Hindi or English, and the voice matched the app.

This was wrong within a day of real use. Two parents on the same route, receiving the same alert about the same bus, need two different languages. The app setting is per-device. The alert is per-recipient. Those are not the same thing.

We rebuilt it so language resolves per recipient at send time: the language the user explicitly chose, then their device locale, then a region default, then a configured system default. Now the same trigger fans out to whatever language each parent needs, and nobody has to configure anything for it to be right.

The general lesson: in any multilingual product, language belongs to the message, not to the application.

2Translation is not the same as speech

We had our interface strings translated already. We assumed we could feed those into text-to-speech. We could not β€” written and spoken language diverge more than you'd expect.

Abbreviations. "Bus no. 14" reads fine and is spoken as "bus no fourteen" β€” the abbreviation gets read literally.
Numbers. Time formats, distances and currency each need to be spoken differently per language.
Word order. A sentence assembled by string concatenation is grammatical in English and nonsense in Hindi.

We ended up with a separate set of speech templates per language, distinct from the interface strings, with live values inserted into slots designed for that language's grammar. That doubled the translation work and there was no way around it.

3Cost, quietly

Neural text-to-speech is priced per character. Our first month's bill was not catastrophic, but the trajectory was.

The fix was obvious in hindsight. Most of what we generate is repeated thousands of times β€” "Your child's bus is arriving in" is identical for every parent, every day. Only the number changes.

So we split each message into fixed and variable parts, cached the fixed audio permanently, and generated only the variable fragment. Cost dropped to a small fraction of what it had been, and latency improved as a side effect because most of the audio was already sitting there.

If you're planning voice at any volume, design the cache before you design the voice.

4Silent failures

The worst bug in a notification system is the one where nothing happens and nobody notices.

We had a stretch where a subset of voice alerts simply weren't reaching people. No error, no alarm, no complaint for several days β€” because a parent who doesn't get an alert has no idea there was an alert to get.

Now every send is logged with its outcome: generated, delivered, played, failed. A failure rate above threshold raises an alert to us, not to the parent. Silent failures became visible failures.

5The store review

We submitted, and Google Play rejected the app.

Not for the voice. For everything missing around it β€” AI disclosure, content moderation, user reporting, permission justification. Reviewers are considerably more careful about AI features than they were two years ago, and a feature that generates output for users now attracts scrutiny the same feature wouldn't have attracted in 2023.

Building that infrastructure took about two weeks. We resubmitted and were approved. We've since written up the full rejection-to-approval story, because it's the part of AI development nobody blogs about and everyone eventually hits.

Where it ended up

The platform is live on Google Play and the App Store, patent-filed in India, and running every school day. Parents get alerts they actually hear, in the language they actually speak.

If you want the full technical picture, the BOBOK case study covers the GPS, SOS and QR boarding layers alongside the voice.

Would we recommend adding voice to your product?

Honestly β€” only sometimes.

βœ… Voice earns its place when

  • Your users don't all read the same language
  • The message is time-sensitive and being missed
  • Your users are often hands-busy
  • Accessibility genuinely matters to your audience

❌ And it doesn't when

  • A better-written notification would fix it
  • The message isn't urgent
  • Your users are at desks reading screens anyway
  • You're adding it because it sounds impressive

We'd tell you that on a call before quoting. A cheaper answer that works beats an expensive one that impresses.

Frequently asked questions

How many languages can neural TTS realistically handle?+
More than thirty with quality good enough for production, and the list keeps growing. The engineering constraint isn't the number of languages β€” it's writing correct speech templates for each one, which is human work, not API work.
Does the voice sound robotic?+
Not any more. Neural voices from the current generation are close enough to human that most users don't remark on it. The flat, mechanical text-to-speech people remember is several generations behind.
How much does multilingual AI voice cost to run?+
With caching, far less than people expect β€” usually a small fraction of the build cost. Without caching, it scales linearly with your user base, which is exactly the problem we described above.
Can voice be added to an app that's already live?+
Yes. We added it to ours after launch rather than designing around it. We keep the voice layer separate so it can be switched off per user or per event without touching the rest of the app.

Keep reading

Who needs to hear from your app,
and in which language?

Free 30-minute call. We'll tell you honestly whether voice is worth it for your use case β€” sometimes a better-written notification is the cheaper answer.

support@thetechnosquare.com  Β·  Pilani, India  Β·  Working worldwide 🌍