Reputation: 73
I'm using the Android's Text To Speech default engine in my app, however the female's voice sounds like a woman over 40 and her voice is somewhat robotic.
I saw other apps that seems to use Google's built in TTS, but it sounds a lot better i.e young woman with a more natural voice.
That "natural" voice is also being used in the Android main Google Search e.g. when you press on the mic and ask a question (Siri style) like "who is the president of the US", the woman's voice will tell you the answer.
How can this voice be achieved in the code?
Basically this is what I do in my code:
TextToSpeech tts = new TextToSpeech(this, this);
.
.
.
tts.setLanguage(Locale.US);
tts.speak(text, TextToSpeech.QUEUE_FLUSH, null);
Upvotes: 5
Views: 14509
Reputation: 1961
Here is my code to use KEY_FEATURE_NETWORK_SYNTHESIS
param:
HashMap<String, String> onlineSpeech = new HashMap<>();
onlineSpeech.put(TextToSpeech.Engine.KEY_FEATURE_NETWORK_SYNTHESIS, "true");
tts.speak(speech, TextToSpeech.QUEUE_FLUSH, onlineSpeech);
Upvotes: 4
Reputation: 73
I've eventually managed to find a solution. I just needed to use the KEY_FEATURE_NETWORK_SYNTHESIS param which is available on jellybean. The default offline mode has the awful robotic sound
Upvotes: 1
Reputation: 2657
You cannot change this within the TextToSpeech
. You can download other applications that replace it however, with the current system you can only set the language and set the pitch. If you are just wanting something different you can get a British accent by setting it to English UK. Ivona is one of the biggest alternatives to googles text to speech voice.
Upvotes: 1