Jump to content

Atari Vox dictionary question


Recommended Posts

I've been experimenting with AV speech on some of my new projects as well as thinking about adding speech to E.X.O. I've been very surprised at how flexible it can be, which brings me to a question about the dictionary function.


I know that I can form speech basically 3 ways using SPEECHDATA:


  • using RAW statements to use the control codes from the speakjet manual
  • using PHONETIC statements
  • using DICTIONARY statements


I've been experimenting with all three with success (and a lot of fun).


Is there a list of the words contained in the 7800Basic dictionary that the dictionary statement references as a lookup?, or is it the same as the PhraseALator dictionary? I downloaded a PhraseALator dictionary but I think I had an edited copy as a lot of the dictionary words didn't work properly.


I looked around the files in the 7800Basic installation (i2c7800, 7800Vox, speakjet) but I couldn't see anything that looked like it might be the dictionary or referencing the dictionary. It did occur to me that the dictionary might be on the ROM? (if that's the case, it would still be really helpful to have a reference list).


Would appreciate a nudge in the right direction :) 


Cheeky suppimentary question :) : is it possible to distinguish between a SaveKey and an AtariVox? I believe they both return "2" when hsdevice is queried.

Link to comment
Share on other sites

You have the dictionary location. (thanks Karl!) The dictionary isn't the speakjet one, since I don't have rights to redistribute that. I took a freely available phoneme dictionary (the CMU one, I think. It's been a while.) and I massaged the phonemes used to the subset of phonemes the AtariVox can produce. The resulting dictionary would have unreasonably ballooned 7800basic, so I culled it to the 2000 most common English words, and then manually added in some common gaming words.


When words aren't in the dictionary, a warning to that effect is printed on the console, and 7800basic then runs the word through a very rudimentary english->phoneme converter. The algorithm is my own, and more or less a C conversion of the one I put in my 2600 Spell & Speak. The idea behind this algorithm isn't super accuracy, but rather to allow the coder to spell and misspell words to get the desired speech output.


As far as detecting AtariVox vs SaveKey... The Vox functionality is write-only, though in theory I could try to abuse the "Vox ready" line. i..e  a detection routine could try to stuff the vox queue, and if the vox ready signal goes away, then it's a vox. Unfortunately there's a few problems with that. The first problem is this approach would take several frames worth of communication, likely causing a noticeable delay during the game's startup. The second problem being a full overflow would knock out the vox; that shouldn't actually happen due to the ready line, but I don't think the benefit is worth tempting fate.


  • Like 1
  • Thanks 2
Link to comment
Share on other sites

Thanks Mike,


Appreciate the explanation. The dictionary is super helpful, I can use that to establish if what I want is already there so I don't try to re-invent the wheel or duplicate. Thanks also for the note on AV/SK My thinking was if an AV was detected, to have an icon default to on, if SK was detected to have the icon default to off. It's not a huge problem and I agree, best not to temp fate with that for what is a working system already :)


Thanks again gents.


  • Like 2
Link to comment
Share on other sites

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.

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.

  • Recently Browsing   0 members

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