I wanted to know what are the best solutions for TTS with unity. I’m mainly interested in android plugins, basically I found 2 on the asset store, Etcetera which is a bit too expensive for my pockets, and Native TTS engine plugin, which has a single negative review saying it doesn’t work. I Etcetera the only choice or there is something cheaper and still valid?
Thanks.
using UnityEngine;
using System.Collections;
using System.Text.RegularExpressions;
/// <summary>
/// <author>Jefferson Reis</author>
/// <explanation>Works only on Android, or platform that supports mp3 files. To test, change the platform to Android.</explanation>
/// </summary>
public class GoogleTextToSpeech : MonoBehaviour
{
public string words = "Hello";
IEnumerator Start ()
{
// Remove the "spaces" in excess
Regex rgx = new Regex ("\\s+");
// Replace the "spaces" with "% 20" for the link Can be interpreted
string result = rgx.Replace (words, "%20");
string url = "http://translate.google.com/translate_tts?tl=en&q=" + result;
WWW www = new WWW (url);
yield return www;
audio.clip = www.GetAudioClip (false, false, AudioType.MPEG);
audio.Play ();
}
void OnGUI ()
{
words = GUI.TextField (new Rect (Screen.width / 2 - 200 / 2, 10, 200, 30), words);
if (GUI.Button (new Rect (Screen.width / 2 - 150 / 2, 40, 150, 50), "Speak")) {
StartCoroutine (Start ());
}
}
}//closes the class
I tried using Jefferson’s Google approach in Unity 5.0.1. and noticed two things that might be helpful to know:
-
Google has put in a redirect to a CAPTCHA in order to prevent requests by ‘robots’. Thus, it seems, the request from script yields no results. Unless I’ve missed something else.
-
audio
is now deprecated and Unity suggests to useGetComponent<AudioSource>()
instead.
That is interesting especially considering the realtively low price and the additional tools included, however at the moment I’m more interested in Android development, and I’m still looking for a plugin for that. I have a project that is almost completed, and I’m testing it with this:
http://forum.unity3d.com/threads/56038-Text-to-Speech-Dll-for-Win32
but of course this is only for windows, so I’m still looking.
Check this asset: http://forum.unity3d.com/threads/released-android-tts-plugin.270789/
It’s only 2$ and there is an APK you can download and test on your device first to check if it really works and what it can do. The scene is included in the asset.
If a robotic-type of voice is enough, then you could use this new asset:
It works probably on all platforms targeted by Unity and sounds the same on all platforms (native OS specific speech is not being used). It’s really small as well.