VecVoice/VecVox+



VecSpeeech panel


Accessable via the popup-menu on the tree is a menu entry called: "VecVoice/VecVox+". Using the above displayed panel you can add support for speech to your vectrex programs.

Since the VecVoice system is more or less depricated, the support mainly focuses on VecVox, although most of the below stated features also work for VecVoice.

Featured on these panels are following "helpers":

The panel is devided into 2 main regions, left (mainly input) and right (mainly information/dictionary - tables).

You can enter the text you want to convert to speech commands in the textarea titled "Text".

Phrasealator

(Only VecVox+) The phrasealator consists of a freely available dictionary file availble from the manifacturer of the SpeakJet (see: http://magnevation.com/). It consists of rules for building english words using the speakjet commands.

The file: "Phrasealator.Dic" can be found in the directory: "template", the file is a ascii key←>value table, which can be edited and extended.

Noteworthy:
The Manifacturer of the SpeakJet has a tool called "Phase a lator" for free download with which the dictionary can be easily extended, and if you have the right hardware, can be listened to on a real SpeakJet on the fly.
(The tool is written in visual basic and is only available under windows)

Naval: Text to Speech

What this is → google is your friend, search for "NRL Report 7948".

This feature can be activated additionally to the Phrasealator, and will be used to convert all text, that the above does not recognize.

Other

The control_play_blue.png - button can be used to play back (emulated) the current entered text.

Technical

The communication from vectrex to the VecVoX is done by a serial communication 9600 baud 8n1. The known vectrex speech devices communicate using that protocol via the joystick port.
The only usable "source" of knowledge came from an old source code of Alex Herbert.

The actual communication as said is done via the joystick port.
The joystick port on the other hand is not directly connected to an easily accessable vectrex device. The joystick port is connected to the sound chip. And is reachable via register 14 of the soundchip. The soundchip on the other hand also can not be addressed directly, here one has to communicate via VIA.

So the actual communication goes like this:

For the SP0256AL I got some pretty good samples, for the SpeakJet the current samples I am using have same crackling noises :-(.

I have not connected any of the speech devices to any of my hardware yet - I will do so as soon as I am able to.

The SP0256AL is pretty straight forward, and can be (in my opinion) emulated quite well using samples. Although in the meanwhile there DOES exist a correct software emulation of that chip, it was done by "Joseph Zbiciak" for his intellivision emulator and is now also used by the Mame/Mess team. But unless something serious happens, I will probably not port that code to java and use it. After all the SP0256AL is pretty old, and won't be used for any future development tasks (and that is what Vide is about...)

The SpeakJet on the other hand is quite up to date, still available and has many more advances features! The emulation of SpeakJet is rudimentary at best, especially as long as I am not able to listen to the real thing.

I started emulation of some of the more advances features (different pitches, time stretching, repeat etc), most of them are implemented, and the output DOES sound different than without ... - but that is about it - different...

I used a library called: TarsosDSP which provides methods to do pitch shifting, time stretching etc, it is pretty easy to use, comes with all sources and is licenced under GPL V3.

The thing is - while the library is great - it works much better with larger samples... The samples used for the phonemes are quite tiny, anything from 40ms to 700ms at most. These small durations are not handled well, since for the DSP processing frequency windows and overlaps must be found, and the search corridors within the library are also in about 20-50 ms. This makes the results somewhat "not quite so nice".