Put these files in an empty directory. command 'sj' on a Raspberry Pi takes a series of phonemes in SpeakJet mnemonics and converts them to binary SpeakJet codes which it sends to an AtariVox+ on /dev/ttyUSB0 It uses a unix system call to sleep for the duration of each phoneme to reduce the risk of buffer overrun on systems where there is no hardware flow control. There's also the "-q" option to only output a C string containing the binary codes for the phonemes, to be added to your own C programs. This is a rough and ready utility for programmers. To convert text to SpeakJet mnemonics, the "festival" command can be used with some tweaks. I've included a "fest2speakjet" script to invoke festival and extract the results. It's a bit hacky but it works. Examples: $ ./fest2speakjet hello vectrex \HO \AX \LO \OW \VV \EH \KO \TT \RR \EH \KO \SO $ ./sj \HO \AX \LO \OW \VV \EH \KO \TT \RR \EH \KO \SO HO (184:70) AX (133:70) LO (146:70) OW (137:70) VV (166:70) EH (131:70) KO (195:55) TT (191:50) RR (148:70) EH (131:70) KO (195:55) SO (188:40) 13 bytes sent to AtariVox+ $ ./sj -q \HO \AX \LO \OW \VV \EH \KO \TT \RR \EH \KO \SO // Embed this in your program to use with the speak() routine. const char *utterance = "\xb8\x85\x92\x89\xa6\x83\xc3\xbf\x94\x83\xc3\xbc"; $ ./sj `./fest2speakjet hello vectrex` $ ./sj -q `./fest2speakjet hello vectrex` // Embed this in your program to use with the speak() routine. const char *utterance = "\xb8\x85\x92\x89\xa6\x83\xc3\xbf\x94\x83\xc3\xbc";