Welcome to Speakalator Web! This utility helps you create and test speech data for devices using the SpeakJet chip, such as the AtariVox. If you're familiar with the original Speakalator or Magnevation's Phrase-a-lator, you should feel right at home.
Important: Speakalator Web generates sound by sending data to an external SpeakJet chip (like in an AtariVox). You need to have such a device connected to your computer and an audio output (headphones/speakers) connected to that device to hear any sound.
To use this app, your browser must support the Web Serial API. This allows the web page to communicate directly with your serial device. Currently, this feature is best supported in desktop versions of:
Firefox and Safari do not support the Web Serial API at this time.
Speakalator Web communicates with the SpeakJet chip via a TTL (Transistor-Transistor Logic) serial port. These are commonly USB-to-TTL adapters and are different from older RS-232 PC serial ports. TTL serial operates at lower voltages (typically 3.3V or 5V).
When acquiring a USB-to-TTL serial adapter for your AtariVox or SpeakJet project:
A convenient way to create a connection cable for an AtariVox (which often uses a DB9 connector) is to use an "IDC DB9 Male Crimp Connector" with a 9-wire flat ribbon cable. This type of connector pierces the insulation to make contact with the wires.
You will need to make the following minimum connections between your TTL serial adapter and the DB9 connector pins (or directly to your SpeakJet circuit):
TTL Adapter TX (Transmit) ---- DB9 Pin 1 (AtariVox RX) (Required)
TTL Adapter +5V ---- DB9 Pin 7 (AtariVox +5V) (Required)
TTL Adapter GND (Ground) ---- DB9 Pin 8 (AtariVox GND) (Required)
TTL Adapter CTS (Receive) ---- DB9 Pin 2 (AtariVox TX/CTS) (Optional, for Hardware Flow)
Note: The AtariVox connects the SpeakJet "Ready" pin to the DB9 Pin 2 for flow control purposes. This SpeakJet pin uses logic that's inverted compared to standard TTL CTS logic. Speakalator Web has a special hardware flow control mode to accomodate the inverted CTS logic.
Before clicking "Connect Serial":
Choose Flow Control: The application offers different flow control modes. Select the one most appropriate for your setup:
Click the "Connect Serial" button. A browser pop-up will appear, allowing you to select the serial port corresponding to your TTL adapter.
If the connection is successful, the "Status" area at the bottom right will confirm it. You can then use the "Test" button (next to the "Connect Serial" button) to send a pre-defined "Hello World" phrase.
Linux Users: If you have trouble connecting, you might need to grant your user account permissions to access the serial port. Common solutions include adding your user to the dialout
group (e.g., sudo usermod -aG dialout $USER
and then log out+in) or, for a temporary fix, changing the device permissions (e.g., sudo chmod 777 /dev/ttyUSB0
, replacing ttyUSB0
with your device name).
A basic understanding of SpeakJet phoneme codes and control codes is helpful. If you're new to this, refer to the SpeakJet User Manual.
Most of the interface consists of buttons labeled with SpeakJet codes:
\PITCH\100
) to the "Say Data" textarea at the current cursor position.The "Say Data" textarea is where you compose longer phrases. Click the "Speak" button to send the current content of this area to the SpeakJet. Click "Speak from Cursor" to send only the content from the current cursor position to the end.
Tips for working with "Say Data":
#
character to add comments. Text after #
on a line is ignored.\RESET
(using the "Add Reset" button or by typing) to clear previous SpeakJet settings (pitch, speed, etc.).\STOP
(using the "Add Stop" button or by typing) to halt playback at that point within the "Say Data" buffer – useful for testing segments.When your phrase is ready for use in a game or application, use the "View Data (Dec)" or "View Data (Hex)" buttons to see the byte codes. Remember to add the end-of-speech marker (255 or $FF) to your data when storing it in ROM. Speakalator Web does not add this automatically.
Use the "Share Data" button to generate a URL containing your current "Say Data". This link can be shared, and when opened in a compatible browser, it will automatically populate the "Say Data" area.
Basic phoneme sequences can sound robotic. Here’s how to make them more natural:
\UX\TT\AWRR\IY
) than "Ah-tari" (\AW\TT\AWRR\IY
). Experiment by single-clicking different phonemes in the UI.\FAST
or \SLOW
modifiers before a phoneme to shorten or lengthen it (by a factor of 0.5 or 2.0 for software flow control delay calculations, or generally affecting perceived speed).\SPEED
control (e.g., \SPEED\100
) to change the overall rate of multiple subsequent phonemes.\IY\IY\IY
) often works well.\PITCH
control (e.g., \PITCH\100
) to change pitch for emphasis or to make questions rise and statements fall naturally. The "Musical Scale" buttons can help find appropriate pitch values and will also play a sample "solfege" sound after the pitch change.Experimentation is key to crafting expressive speech!