Speakalator Web is a utility that helps you create phrase data for the AtariVox speech synthesizer. Speakalator Web is based on the original Speakalator app, which itself was a port of Magnevation's Phrase-a-lator app. If you're familiar with any of those apps, you can likely jump into creating phrases without missing a beat.
Speakalator Web uses the AtariVox SpeakJet chip for all sound output. Without one connected to your computer (with headphones or speakers plugged into it) you will won't hear any sound.
To use this app, your browser must support the Web Serial API, which allows communication with serial devices (like microcontrollers) directly from the browser. This feature is currently supported in Chromium-based browsers: Google Chrome (version 89+), Microsoft Edge (version 89+), and Opera (version 75+).
At present time Firefox and Safari aren't supported.
Speakalator talks to the SpeakJet chip inside your AtariVox via a TTL serial port. TTL serial ports are commonly USB devices, and are an easy way for modern PCs to talk to devices like microcontrollers and sensors. Unlike old PC serial ports (which use weird voltages and have big connectors), TTL serial ports commonly use pin headers and operate with 3.3V or 5V signals.
If you need to buy a new TTL serial port to connect to your AtariVox, try to get one with a CTS pin. This will allow you to use hardware flow control, which means the AtariVox will pause the serial connection once its buffer becomes full.
A nice and easy way to connect wires to your AtariVox is to use a "Serial Port D-SUB DB9 9 Pin Male IDC Crimp Connectors for Flat Ribbon Cable". Basically you just squeeze a 9 wire ribbon cable in the port, and small blades remove the wire coating and make the connections.
From there you need to figure out how to make the following connections between TTL serial port and the DB9 port wires. (soldering, splicing Dupont connectors, ...)
TTL TX ---- DB9 pin 1
TTL CTS ---- DB9 pin 2 (optional, but needed for hardware flow control)
TTL +5V ---- DB9 pin 7
TTL GND ---- DB9 pin 8
Before hitting "Connect Serial" in the app, you should choose from one of the three different kinds of serial flow control:
Once you've selected the flow control, go ahead and click on the "Connect Serial" button. A pop-up window will allow you to pick a serial port on your system that corresponds to the TTL Serial device.
If things go well, the "Status" text area at the bottom-right part of the window should indicate the serial port was connected.
If you run into problems connecting and you're on a Linux system, you likely need to grant your user permissions to the serial port prior to hitting "Connect Serial". (try adding your user to the "dialout" group with sudo usermod -aG dialout $USER
and then log out of the desktop and back in again. If that fails, a temporary fix is to open the permmissions to the USB device with something like sudo chmod 777 /dev/ttyUSB?
)
There's also a "Test" button you can press, which will send "Hello World" speech codes to the serial port.
Speakalator assumes you have some minimal understanding of how SpeakJet phoneme codes and control codes work. If you don't, get a hold of the SpeakJet manual and do your homework.
You'll see that most of the window is comprised of buttons that are named the same as the SpeakJet codes. Single-clicking any one of these buttons will send the code to the SpeakJet in the AtariVox immediately. Double-clicking any of these buttons will add the SpeakJet code to the "Say Data" text area (at the current cursor position).
The Say Data text area is where you can build up long sequences of codes, to make the AtariVox say an entire phrase. To listen to the speech data in the Say Data area, just click on the "Speak" button.
Here are some additional pointers to make adding speech data more convenient:
\RESET
code, to ensure previously set pitch/speed/etc. isn't carried into your phrase. (Use the "Add Reset" button or type it).When you're done authoring the phrase and you wish to use it in your game, you can use either "View Data" button to display the speech codes as decimal or hexadecimal format. Don't forget to add the 255/$FF end-of-speech marker to the end of your ROM data. (Speakalator doesn't add this automatically, in case you're working on phrase fragments.)
Using Speakalator in a basic way will produce voice output on par with basic text to speech systems, like SAM or Speak'N'Spell. Here are a few reasons why basic phoneme codes sound flat, and what you can do about it:
\SLOW
and \FAST
modifiers before the phoneme code you want to change the length of, or use SPEED changes to affect more than one phoneme code.