Have you ever wanted to make a game for people with visual impairment or who have difficulties reading? Do you have lazy players who don’t like to read too much? Or do you even want to test your game’s voice dialogues without having to pay a voice actor yet? With RT-Voice this is very easily done – it’s a major time saver!
RT-Voice uses the computer’s (already implemented) TTS (text-to-speech) voices to turn the written lines into speech and dialogue at run-time! Therefore, all text in your game/app can be spoken out loud to the player.
And all of this without any intermediate steps: The transformation is instantaneous and simultaneous (if needed)!
Features: Convert text to voice
Instant conversion from text to speech - generated during runtime!
Side effect: the continuous audio generation saves a lot of memory
No need for voice actors during the testing phase of your game
Several voices at once are possible (e.g. for scenes in a public place, where many people are talking at the same time)
Fine tuning for your voices with speed, pitch and volume
Looks good! I noticed in your screen shot above that you have additional voices to choose from. Is that because the user installed additional voices on their PC? If so, where would I find those? I’m, looking for something more natural.
Any plans to also integrate this with Windows 10 and Cortana?
Also on your website your “Features” and “More Features” links doesn’t load the modal popup.
RT-Voice can currently only use the installed voices on a system.
Unfortunately, there are only a few voices available under Microsoft Windows 8.1: 2-3 female and 1 male voice (English). There are (female) voices for all major languages available, but it depends on the regional settings in Windows:
I can’t do much about it, sorry.
On a Mac, there are like 50 voices for various languages installed. They are much better imho and some are really fun
About Windows10/Cortana: probably No, serious, atm we still use Windows 8.1 and we will wait some time until the biggest bugs are fixed… But I will take a look in my VM and think about it (without promising anything!).
About the website: thank you for the info, but I already knew it. We had a bit too much work so this wasn’t fixed until now.
Is there a way to have it “speak” without using an input field? I just want to use a Text UI element. Do I need to change something in the SpeakWrapper.cs script?
Here is the solution for you and other users:
After adding the “RTVoice”-prefab to your scene, create an empty gameobject and add follwing script to this new object.
using UnityEngine;
using System.Collections;
using Crosstales.RTVoice;
public class RTVGame : MonoBehaviour {
void Start() {
Invoke("SayHello", 2f);
Invoke("Talk", 6f);
Invoke("Silence", 9f);
}
public void SayHello() {
Speaker.Speak("Hello dear user! How are you?");
}
public void Talk() {
Speaker.Speak("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.");
}
public void Silence() {
Speaker.Silence();
}
}
Then hit “run”
The script does this:
After 2 seconds, it speaks “Hello dear user! How are you?” with the OS-default voice (if your OS isn’t “English” it would probably sound a bit strange).
After 6 seconds, a Lorem ipsum-sentence is played
After 9 seconds, RT-Voice should be quiet
Hopefully, this explains the basic usage - you can use your own way of letting “RT-Voice” speak (e.g. by commenting the “Start”-method and then calling “SayHello()” from a button click or use the text of an input field).
If you want a list of all available voices, use “Speaker.Voices()” → for more API-calls and examples, please see the documentation (starts at page 6).
Thanks for this. Although on Windows I get an error:
The given ‘voice’ or ‘voice.Name’ is null! Using the OS ‘default’ voice.
UnityEngine.Debug:LogWarning(Object)
Crosstales.RTVoice.c__IteratorC:MoveNext() (at Assets/crosstales/RTVoice/Scripts/Provider/VoiceProviderWindows.cs:86)
UnityEngine.MonoBehaviour:StartCoroutine(IEnumerator)
Crosstales.RTVoice.Speaker:Speak(String, Voice) (at Assets/crosstales/RTVoice/Scripts/Speaker.cs:144)
RTVGame:SayHello() (at Assets/MyFiles/RTVGame.cs:16)
The reason for this:
The method “Speaker.Speak()” has two parameters - the first is the text and the second is the OS “voice”, which is optional but results in your described warning.
Here is an updated example:
using UnityEngine;
using System.Collections;
using Crosstales.RTVoice;
public class RTVGame : MonoBehaviour {
void Start () {
Invoke("SayHello", 2f);
Invoke("Talk", 6f);
Invoke("Silence", 9f);
foreach (Voice voice in Speaker.Voices()) {
Debug.Log(voice);
}
}
public void SayHello() {
Speaker.Speak("Hello dear user! How are you?", Speaker.VoicesForCulture("en")[0]);
}
public void Talk() {
Speaker.Speak("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.");
}
public void Silence() {
Speaker.Silence();
}
}
Now, it uses (if available) the first English voice to speak the text in the “SayHello()”-method. It also prints all available voices to your console and you can choose a voice and use it like that:
Thanks Stefan, this is an awesome update of RT-Voice! And will pair nicely with SALSA!
As a small caveat for customers using this with the current release of SALSA v1.3.2, it is necessary to collapse the SALSA custom inspector for proper operation with RT-Voice. This requirement is removed in v1.3.3 which is currently pending review by the UAS team and we expect it to be approved in the next couple of days.
We’ve just finished version 1.2.0 and will submit it tomorrow.
There are many new features added, but the most useful should be the support for Unity’s “SendMessage”.
The Dialogue System for Unity version 1.5.5 is now available on the Asset Store with support for Stefan’s excellent RT-Voice. It’s very easy to use: Just drop an RT Voice Actor component on your speakers, and they’ll automatically speak Dialogue System conversation lines and barks. You can tweak the component to specify gender and age range, and it will use the best match available on the player’s system. It also includes an additional example that ties in SALSA with RT-Voice and the Dialogue System for fully lipsynced interactive text-to-speech.