I wanted to take a moment to document, and reflect upon the journey of building the My Voice app, and think back to its humble beginnings. 

The Early Days

Something a lot of new developers are told when starting out is that you should start to build something that is useful to you, or has an impact on your life in some way. This helps to keep you engaged, motivated and ultimately reduces the risk that your fantastic app will become yet another unfinished side project.

When my mother was diagnosed with a terminal illness in 2018, she very quickly lost her voice. The fantastic NHS here in the UK provided us with amazing support, including a list of recommended apps to help people communicate again. We tried a bunch of these, but sadly for Android the list was rather lacking. I’d been learning some Java (android programming language) in my spare time, as I thought it would help me at work – I’m a Product Manager at a Digital Agency in my day job. 

So an idea was born, and My Voice was created. Back then, I knew little about android development, even less about mobile app design, but fortunately I was surrounded by creative and kind people at work who would ultimately keep me on the right path later down the line.

The first prototype version of My Voice was never released to the public, for good reason – it was frankly awful! Take a look at the image below.

The first ever prototype of My Voice… Wow!

But hopefully you can see that the core concept of My Voice remains the same today:

  • Give users a large open space to do the most important thing to them – communicate.
  • Make it easy for users to save and replay common phrases, so they don’t have to type them out each time.
  • Offer voice customisation, so that users can find a voice that they like, or that they think sounds like themselves. 

First Release!

My first released version had a slightly better (but ultimately still bad) design, and introduced the concept of categories – why not group phrases with common themes together? It also gave the user some more settings with the ability to change the voice language to something other than English, and I experimented with a French-language version of the app. This wasn’t a data-driven decision (I had next to no users and none of the ones I did have were in France), but it was a great learning opportunity. When the developers at work go weak at the knees at the mention of localisation, I now know why!

My Voice, the TTS app was born and released into the wild on December 23rd 2018, with the design you see below.

Amazingly, I actually gathered around 200 users with this first version relatively quickly. I posted on Reddit to promote the app, and shared with colleagues, friends and family.

I quickly realised that my intended user base was likely to have a range of disabilities and physical impairments that would impact how they interacted with their device, so I started to think about accessibility. I tried to ensure all touchpoints were of adequate size, and that all objects had good content descriptions from this point onwards. 

It was also at this point that I realised that the architecture of My Voice, both from a UX and technical point of view was frankly crap. Technically, I was using purely Activities (what’s a fragment?!) and Intents, I was passing data around everywhere instead of storing things in SharedPreferences or locally; it was a mess. 

I expect some designers already vomited a little further up this read, but visually there were some massive flaws. The navigation of the app felt clunky and you couldn’t get to where you wanted to be quickly. The visual cues of the app were all over the place, and I needed a better flow. The core concept of providing an open space for communication had been lost, taken over by too many buttons in key areas of the screen.

Getting Somewhere

I released an updated version in late January 2019. This included bottom navigation and loads more settings (ideas shamelessly stolen from competing apps), such as the ability to clear text after speaking, speak words aloud as you type them and more. 

This version was a major jump and included a whole host of new features for users. One was allowing people to change their colour scheme using a library I found – my first time working with someone else’s library. I later reversed this change for two reasons: 1) very few users were actually using the feature and choosing their own theme and 2) a lot of the themes didnt meet the accessibility requirements of the app. There was an opportunity later to remove an unused feature, improve accessibility and create a more definitive brand – so i took it!

You could now adjust text size and opacity, a feature that has since proved to often go unused, but which a small minority find critical. I also had a new store icon and dare I say it, a small amount of brand identity was starting to develop in the visuals and the way I communicated with users via the store listing, review feedback, etc.

The new (now replaced) app icon for My Voice

This is probably the first version that resembles what the app looks like today. The most technically challenging part of this was figuring out a way to get ‘speak as you type’ working. I still have nightmares about this. In addition to the obvious features and visuals, the app had a whole host of new things going on behind the scenes.

In direct response to user feedback, I implemented a broader range of voices and locales into the app including male/female variations wherever they were available. This was always something I knew I needed to do, but I had been putting it off. Initially, My Voice had launched with a hard-coded list of 10 languages and it was pot luck whether you got a male or a female voice. I assumed users would adjust their pitch and speed to make the voice as suitable as possible. 

This update opened up all available voice languages from the device’s TTS engine (providing it was Google’s TTS engine… more on this below), and for each language, the list of available dialects often with obscure names, some regional dialects, some just male or female, or variations on existing sounding voices. 

The power of analytics… when you remember to check them regularly

I mentioned above that My Voice uses Google’s TTS engine. But I’d forgotten to think about other Android devices, where Google TTS might not be the default engine – a big blunder!

Eighteen months ago I hit a mental wall with development. I lost motivation, I had a lot of changes going on with my mother, at work and in my personal life, all which meant I just didn’t have the spare brain capacity to devote to developing My Voice. When this came back to me, I hopped onto MixPanel (my analytics provider) to take a look at my user data. 

What followed was a major ‘OH S**T!’ moment; there were over 4000 errors in the last 30 days, almost all of which were reports from Samsung device users. It turns out Samsung has their own TTS engine that is enabled by default on their devices. As it happens, so does Huawei and a number of other phone manufacturers. My Play Store reviews were tanking, and I cobbled an update together to handle the case. This was released following some rigorous testing, and from then on My Voice then supported all speech engines, as well as personal banked voices such as those by Model Talker.

Modern Day My Voice

You can see the origins of the modern day version of My Voice in some of the story and screenshots above. Much of the app has changed – it feels completely different, it looks completely different, but the core concept is thankfully the same. There is open space to communicate, it’s even easier than ever to save common phrases, and there are a bunch of customisation options available now. 

Behind the scenes, much of the My Voice app has been completely re-written, and converted to Kotlin, a much more modern programming language for Android applications than Java. Where it couldn’t be re-written, the code has been optimised for performance, although this is an ongoing task to this day. A core metric of mine includes keeping the crashes per 1000 users to a value less than 0.5%, which means ongoing testing for errors and performance related issues.

In terms of stats, My Voice at the time of writing has over 50,000 downloads, and amazingly over 300,000 phrases are spoken using the app each month. That’s 300,000 times every month the app has made a difference to people’s everyday lives – and I can’t begin to tell you how humbling and fantastic that feels to know. 

The app has been recognised and recommended by the MNDA (Motor Neurone Disease Foundation) here in the UK – something which means the world to myself and my mother. You can read more about this here.

Recently, I made the BIMA100 2020 list – a list of 100 individuals in the UK tech industry who are up and coming, rising stars, or doing great things. Again, I’m so thankful for this and for the app to be recognised in the ‘Tech For Good (sponsored by Microsoft)’ category. What a way to celebrate a fantastic last 6 months! You can read more about this here.

My BIMA100 page – shucks!

What comes next?

At this point, I’ll be taking a breather for a few days! We’re in the middle of a global pandemic, and I think it’s so important that everyone takes time out from their jobs to relax and rebuild some positive head space. There’s been a big push in the last 2-3 weeks to get the latest version of My Voice out in the wild before the BIMA announcement came out, so time to celebrate now!

In terms of future development of the app – the good news is this is largely driven by the users. I won’t make any promises here, but sign up to our mailing list below to hear of upcoming features before they are released, and keep an eye on the website for updates. The journey is far from over, and I can’t wait to see where it takes us next!

Tom – My Voice

2 thoughts on “My Voice – The Journey (The Good, Bad and Ugly!)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s