Hi Thomas,

I just wanted to respond with a few spontaneous thoughts based on my own experiences with sapi versus prerecorded audio.

Mostly I agree with your points. But for my own part I find that using synthetic speech, whether it be prerecorded or generated on the fly by a sapi controlled engine, greatly detracts from the atmosphere. Imagine if you will, that you are in a shadowy temple with a faint sound of wind, distant screams from the depths of a dungeon far below, haunting music with reverberating strings, and an equally dramatic narrative performed by Microsoft Mike. A bit of a contrast.

To take a less extreme example, in my upcoming title the atmosphere is generally quite dramatic and with a dark undertone most of the time. Therefore, when I recorded my speech files I spoke in a very low voice even for such trivial things as numbers and status messages. I knew in what context my voice was going to be played, and was able to adapt it to really blend in with the rest of the scene that I was trying to create. A speech engine could never achieve that. So I think that in terms of atmosphere and dramatic effect, prerecorded speech is far superior than a tts engine. There are, of course, numerous cases where the advantages of tts output greatly outweigh the pros of prerecorded material, such as when there is absolutely no way for you to know what content that may need to be spoken. But if, as in the case of Mota, you are using prerecorded speech files that just contain tts generated content anyway then these have absolutely no advantage so I would not disagree with your decision to use sapi if you aren't interested in getting a voice talent to record your files. In short, I feel that prerecorded voice files are only advantageous if you actually have a real voice for the game.

As for ease of coding - that has never really bothered me. It is trivial to design wrapper classes that can take a number, or a filename etc using overloaded methods, and rendering that with the available speech files asynchronously in the same thread so that one doesn't have to care about synchronization. So with a careful design you can get it down to a one liner just like you would with sapi. What I find annoying with sapi is that I can never be sure what the final output will actually sound like. Many of the commercial voices have quite a bit of delay during their initial buffering for each new phrase. When you speak the same phrase for the second time they are usually faster, but the fact that there is so much variation between voices makes it difficult to judge in advance how the game will actually perform if that makes sense. I tend to use sapi extensively for prototyping a game, but once I reach a stage where I start to consider a potential release date my first priority is to rip out sapi and replace it with real human speech.

In summary, I think that if you want to get something out quickly and without spending any money then sapi is definitely the right way to go. If on the other hand you are interested in maintaining a great atmosphere and you want to make sure the game sounds and performs the same everywhere, I'd recommend a voice actor. Best of luck, and sorry about the extremely lengthy ramble!

Kind regards,

Philip Bennefall
----- Original Message ----- From: "Thomas Ward" <[email protected]>
To: "Gamers Discussion list" <[email protected]>
Sent: Saturday, May 04, 2013 5:07 PM
Subject: [Audyssey] Why SAPI Output is Superior


Hi everyone,

This morning I had some time on my hands so I began really working on
Mysteries of the Ancients, the new version, and decided to add SAPI 5
support to help expedite the development process.  What I discovered
when I compiled and ran this very early prototype is that the SAPI
support works far better than any release before, and I realized to my
amazement it really is the best solution for speaking menus, status
messages, etc for a number of reasons.

1. It takes less development time to call a single function to pass a
string of text to a SAPI speak function than it does to record, edit,
load, and play a speech clip. Basically, if you got a game idea in
mind you can really speed up the process just by using the SAPI voices
installed on the machine.

2. It saves drive space, takes up less CPU power, and less memory.  In
the last beta of Mysteries of the Ancients,beta 22, the Speech
directory was 36 MB. Now, of course, using SAPI it will take up less
drive space as well as be a smaller download.  I also noticed looking
at the over all system performance that it uses less memory so that's
another reason to use SAPI.

3. Its customizable. This probably goes without saying, but using SAPI
voices you can change the voice, pitch, rate, and volume of the
default voice in the Control Panel meaning if you don't like the
default voice you can always switch to a different one or buy a better
one.

This was always a bit of a problem in prior test releases. The voice
was too fast, too slow, it had an accent, or whatever and I was going
crazy trying to find a voice that everyone liked. So using SAPI you,
the end user, can set it up anyway you like in the Windows Control
Panel.

4. Its very inexpensive. If you hire voice actors to read the menus,
status messages, items, etc that can cost lots of money not to mention
require time to edit and use. Even if a developer uses Acapela Heather
or Nuance Tom legally the developer is suppose to pay royalties for
the use of that voice in a commercial product. This way the developer
isn't using the voices directly and the customer fits the bill for any
high quality voices like Ivona, Nuance TTS, Cepstral, etc.

5. Its very dynamic and flexible. With prerecorded speech there is
always the problem of speaking dynamic content like a player's name or
speaking a message with a number of variables involved. Here you just
create a message string using the dynamic content, give it to sAPI,
and forget about it.

For example, in my wrestling game there are a number of messages of
play by play action like this. "John Cena quickly moves forward, picks
up the Rock, and slams him to the mat." In a case like this the speech
output has to be flexible enough to use the same message from match to
match only substituting the name of the performers in the match. You
can't really do that easily with prerecorded speech clips, but you can
easily do it with SAPI just by using a couple of string variables in
place of the performers name. Therefore it doesn't matter who is in
the match it will always speak the information no matter what, and the
developer doesn't have to spend a month writing a bunch of if
statements to load this or that speech clip on demand. :D

So I think after seeing the results in person I think I am going to be
using SAPI output from now on in my Windows games. I only regret I
didn't do this earlier. I could have saved myself a lot of wasted time
and energy trying to make prerecorded speech clips.

Cheers!

---
Gamers mailing list __ [email protected]
If you want to leave the list, send E-mail to [email protected].
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/[email protected].
If you have any questions or concerns regarding the management of the list,
please send E-mail to [email protected].


---
Gamers mailing list __ [email protected]
If you want to leave the list, send E-mail to [email protected].
You can make changes or update your subscription via the web, at
http://audyssey.org/mailman/listinfo/gamers_audyssey.org.
All messages are archived and can be searched and read at
http://www.mail-archive.com/[email protected].
If you have any questions or concerns regarding the management of the list,
please send E-mail to [email protected].

Reply via email to