Jump to content
IGNORED

TI-99/4A voice synthesizer


Poopopyo

Recommended Posts

I'm sure there is a complete list on one of the TI-99 sites. The most popular one that uses it is probably Parsec.

It seems to me the front door allowed plug in ROMs with different voices. I'm not sure if any of those actually appeared.

Link to comment
Share on other sites

It's all nicely covered above. :)

 

The door was meant for plug-in ROM carts. The Speech Synthesizer is actually just an LPC-10 decoder (most of them were, this is normal), and has ROMs inside with a hundred or so words pre-recorded. They planned to release ROM carts containing other words. A few of the early synths did get released with the cart port, at the Yahoo TI-99/4a group in the archives somewhere should be a pinout. To my knowledge no carts were ever released.

 

In addition to the numerous games (almost all first party) which used speech, most (all?) of the MBX games also used speech, as well as Extended BASIC (which was limited to the built-in ROM vocabulary) and Terminal Emulator II (which added true text-to-speech to TI BASIC. A version of the TTS code was released in disk format for loading into Extended BASIC later).

 

The speech chip used is mostly compatible with the 5220 used in many arcade games (Gauntlet, Star Wars), and most TI emulators actually use that core. The tool for compressing the speech, a Windows 3.1 tool, is called QBox and was found and released, again, check the Yahoo group for links (I forget which archive has it up ;) ). It's non-trivial to use, but Mark Wills has a number of videos on YouTube demonstrating it (hey, a link this time: http://www.youtube.com/watch?v=wVDE-6TtmFQ)

  • Like 1
Link to comment
Share on other sites

The door did nothing. It was planned for plug-in roms, probably like the Speak & Spell. But I see no sockets inside the door.

 

The games:

Parsec(duh)

Star Trek

Moon Mine

 

Okay there has to be others.

 

 

Microsurgeon "paging Dr. Lavine"

MASH

Edited by oracle_jedi
Link to comment
Share on other sites

  • 2 months later...
In addition to the numerous games (almost all first party) which used speech, most (all?) of the MBX games also used speech, as well as Extended BASIC (which was limited to the built-in ROM vocabulary) and Terminal Emulator II (which added true text-to-speech to TI BASIC. A version of the TTS code was released in disk format for loading into Extended BASIC later).

 

Sorry, but you're wrong here. Extended Basic is NOT limited to the built-in ROM vocabulary. As far as I know, the "CALL SAY" command which makes the TI talk accepts numerous arguments, out of which the 1st, 3rd and so on are strings that are broken up into their respective words and said out of the built-in vocabulary. However, the 2nd, 4th... argument is expected in another format, the strings put in here are treated as raw speech data with a header that gives the number of bytes to put out. The manual of Extended Basic gives an example of how to use this to truncate certain words and then add suffixes.

 

The only bad thing about this is that the format in which the data has to be given isn't documented (at least it wasn't back then), so although you theoretically would be able to feed custom data, you aren't able to generate it - which of course has changed in the meantime thanks to QBox. I remember doing some experimenting back then, but I couldn't figure out which bytes generate which sounds. And in fact, it's not as simple as that, since the "frames" of speech data actually are a variable number of bits long which is not dividable by 8 (there are different frame lengths) and thus can end at any bit position inside of a byte.

 

By the way, you can also read out the speech information of words with the CALL SPGET command, which gives you the raw speech data. This is useful if you want the speech to be more fluent, since when feeding your data as a string, the speech noticeably pauses after each word for a split second, probably in order to decode and find the next word to say. If you retrieve the speech data for the words you want to say beforehand and chain them together in your program, in contrast, the words get said immediately after each other. That's at least what I did in an attempt to convert "Track & Field" to the TI.

Link to comment
Share on other sites

Sorry, but you're wrong here. Extended Basic is NOT limited to the built-in ROM vocabulary.

 

No need to be rude here. I am perfectly aware of the internals of the system, but it is fair to simplify for the sake of a summary. All things are always possible depending on the lengths you go to.

 

As far as I know, the "CALL SAY" command which makes the TI talk accepts numerous arguments, out of which the 1st, 3rd and so on are strings that are broken up into their respective words and said out of the built-in vocabulary. However, the 2nd, 4th... argument is expected in another format, the strings put in here are treated as raw speech data with a header that gives the number of bytes to put out. The manual of Extended Basic gives an example of how to use this to truncate certain words and then add suffixes.

 

You are correct here. Using CALL SPGET(), which returns the speech data for a string in the built-in vocabulary, you can get the raw LPC data, and CALL SAY can speak it. By manipulating these strings, you can cause additional effects, such as truncating words and adding suffixes. It is an inexact art but it can be done. This string can also be generated externally, although the only known example for XB is the "Bert and Ernie" demo.

 

I went so far once as to try and extract all the alophones and string them back together for completely new words. It worked, but not overly well. It's not really "text-to-speech", more of a magic shuffle. (Though some might argue all text to speech is just a magic shuffle, and I wouldn't disagree ;) ).

 

By the way, you can also read out the speech information of words with the CALL SPGET command, which gives you the raw speech data. This is useful if you want the speech to be more fluent, since when feeding your data as a string, the speech noticeably pauses after each word for a split second, probably in order to decode and find the next word to say. If you retrieve the speech data for the words you want to say beforehand and chain them together in your program, in contrast, the words get said immediately after each other. That's at least what I did in an attempt to convert "Track & Field" to the TI.

 

Nice! How far did you get on that? :)

Link to comment
Share on other sites

Do any emulators support this voice synthesizer?

I think one or two did, but the speech sounded rather different than the original. Maybe MESS?

 

MESS does pretty well. Win994A does as well.

 

Classic99 has it but needs some timing fixes. It works for the games for the most part.

 

MESS and Classic99 use the 5220 tables, so it's not a perfect reproduction. Win994A's author claims to have reversed the chip himself but won't release details or source so nobody knows for sure what he did.

Link to comment
Share on other sites

This question has probably been answered elsewhere, but I've always wondered: is it possible to permanently install the speech synthesizer components internally? I have a 99/4A devoted entirely to gaming (which I think I bought from you years ago, Tursi; it's one of the later beige systems). The speech synthesizer is the only "sidecar" peripheral I use with it, and I'd like to mount it internally to reduce clutter.

 

EDIT: Never mind, I found this article, which describes the process in detail.

Edited by jaybird3rd
Link to comment
Share on other sites

This question has probably been answered elsewhere, but I've always wondered: is it possible to permanently install the speech synthesizer components internally? I have a 99/4A devoted entirely to gaming (which I think I bought from you years ago, Tursi; it's one of the later beige systems). The speech synthesizer is the only "sidecar" peripheral I use with it, and I'd like to mount it internally to reduce clutter.

I know you could mount it on a card for the PEB, but I've never heard of an internal one.

 

Tempest

Link to comment
Share on other sites

No need to be rude here.

 

Sorry, I didn't know this was considered to be rude, although I have to admit it wasn't particularly friendly.

 

Nice! How far did you get on that? :)

 

Well, it was one of the many things I did in XBasic as a child... and which I didn't finish. I think you see the track at the bottom, but nothing else. Then, out of timing reason, you don't see the athlete run. I started with the "Long Jump". In contrast to the arcade version, the perspective is fixed, so you don't see the athlete while he's gaining speed, but only the track at the bottom. After wiggling the joystick for a few seconds for speed, the athlete comes running in from the left, and then you have to hit the fire button for the correct duration like in the arcade, and then you see the athlete doing his jump. After he lands, the width gets announced. I can't remember how many other events I did for that...

 

This was one of many simple projects which never got quite done. I also tried to do "Summer Games" and got a bit farther with that one... there I did the opening ceremonies, the main menu and the Pole Vault.

Link to comment
Share on other sites

  • 4 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...