Discussion forum for the BasicX family of microcontroller chips.
|
BasicX group On one of my robots I have an old ASCII text to speech converter board using the GI Sp0256a-al2 Voice Synthesizer chip and a GI cts256a-al2 cpu (old PIC cpu). These to chips together accept any ASCII text string and convert them speech. The SP0256 generates the 64 allophones required to say any word. I would like to do this with the BX24. I could play each allophone from the SP0256 and record it into the EEPROM on the BX24. Then using the PlaySound command you could play the allophone sounds in sequence required for the words you wish the BX24 to speak. Has anyone done anything like this ? Thank you Ron A. Nucci -----Original Message----- From: Ron A. Nucci <> To: <> Date: Wednesday, April 26, 2000 7:22 AM Subject: [BasicX] BasicX] PlaySound command Basicx people I would like anyone’s thoughts on using the BX24 sound record and play capabilities. Specifically how do you get it to record a sound to its EEPROM then play it back out a pin (I assume using the PlaySound command). Chris Harriman from NetMedia said "This is what our ADCTOSERIAL and SERIALTODAC functions are all about. " The closest command I could find listed in the "System Library" manual is ADCtoCom1 and Com1toDAC I assume these are the commands he is referring to ? These commands appear to send data in and out of the serial port, perhaps this would be used for recording and playing sounds from your PC’s harddrive ? The PlaySound command itself looks very straight forward to use and I assume I just take the assigned output pin and run it to an audio amp like a LM386 to a speaker? But how do you get the data into the EEPROM in the first place in the correct format? I would think you would connect a microphone and op-amp to an input pin then use some code like GetADC to sample the incoming sound and write it to the EEPROM ? Thank you Ron A. Nucci [Non-text portions of this message have been removed] ------------------------------------------------------------------------ IT Professionals: Match your unique skills with the best IT projects at http://click.egroups.com/1/3381/4/_/565855/_/956758955/ ------------------------------------------------------------------------ |
|
|
|
The SPO256 does not generate speech simply by stringing phonemes together. There are mix and pitch algorithms built into the chip. You would need to replicate these. I think you'll find that merely splicing sounds together will yield speech that is hard to understand. -- Gordon At 07:46 AM 4/26/2000 -0700, you wrote: >BasicX group > >On one of my robots I have an old ASCII text to speech converter board using >the GI Sp0256a-al2 Voice Synthesizer chip and a GI cts256a-al2 cpu (old PIC >cpu). These to chips together accept any ASCII text string and convert them >speech. The SP0256 generates the 64 allophones required to say any word. > >I would like to do this with the BX24. I could play each allophone from the >SP0256 and record it into the EEPROM on the BX24. Then using the PlaySound >command you could play the allophone sounds in sequence required for the >words you wish the BX24 to speak. > >Has anyone done anything like this ? |
|
Gordon Its an honor to exchange email with you I'm a big fan of your robotic writings. I could be wrong but I believe the CPU that is the companion to the SP0256 handles the allophone transitions. It is an old PIC7041 (GI CTS256AL2) and it is programmed with the Naval Research Labs text to speech algorithm. I also have a robot that just uses the SP0256-AL2 alone without the companion PIC text to speech processor and I have to write the allophone sequences myself and if I'm not careful with the sequence I choose it sounds very bad. This leads me to believe that the SP0256 by itself just speaks the allophones in a canned fashion with no regard for transitions (but please correct me if I'm wrong). Thank you Ron A. Nucci -----Original Message----- From: Gordon McComb <> To: <> Date: Wednesday, April 26, 2000 9:33 AM Subject: Re: [BasicX] ascci speech from BX24 >The SPO256 does not generate speech simply by stringing phonemes together. >There are mix and pitch algorithms built into the chip. You would need to >replicate these. I think you'll find that merely splicing sounds together >will yield speech that is hard to understand. > >-- Gordon >At 07:46 AM 4/26/2000 -0700, you wrote: >>BasicX group >> >>On one of my robots I have an old ASCII text to speech converter board using >>the GI Sp0256a-al2 Voice Synthesizer chip and a GI cts256a-al2 cpu (old PIC >>cpu). These to chips together accept any ASCII text string and convert them >>speech. The SP0256 generates the 64 allophones required to say any word. >> >>I would like to do this with the BX24. I could play each allophone from the >>SP0256 and record it into the EEPROM on the BX24. Then using the PlaySound >>command you could play the allophone sounds in sequence required for the >>words you wish the BX24 to speak. >> >>Has anyone done anything like this ? > >------------------------------------------------------------------------ >IT Professionals: Match your unique skills with the best IT projects at >http://click.egroups.com/1/3381/4/_/565855/_/956766805/ >------------------------------------------------------------------------ |
|
|
|
First, thanks for the nice comments, though I hope you didn't mean my writing was robotic! <g> It's been a while since I used the SPO256, but I recall that it includes provisions for setting pitch if you're not using the text-to-speech chip. The pitch of the specific sound was independent of the sound, or any sound transitions. The text-to-speech chip did a lot of the work for programmers, but as you noted didn't do anything the SPO256 could not do on its own (recall the SPO256 just has an eight-bit port, which can be controlled either via some external bus, like a parallel port, or the text-to-speech chip). The blending of phonemes would be done in the SPO256, quite possibly (though who knows) through some predictive algorithm. Without the blending it becomes just a staccato of sounds. I tried this very thing some time ago using WAV files I collected and simply strung together, and it the speech was extremely poor. That said, if anyone can make this work in a reasonable fashion it would be welcome. There really isn't an inexpensive speech synthesizer on the market. -- Gordon At 09:43 AM 4/26/2000 -0700, you wrote: >Its an honor to exchange email with you I'm a big fan of your robotic >writings. > >I could be wrong but I believe the CPU that is the companion to the SP0256 >handles the allophone transitions. It is an old PIC7041 (GI CTS256AL2) and >it is programmed with the Naval Research Labs text to speech algorithm. I >also have a robot that just uses the SP0256-AL2 alone without the companion >PIC text to speech processor and I have to write the allophone sequences >myself and if I'm not careful with the sequence I choose it sounds very bad. >This leads me to believe that the SP0256 by itself just speaks the >allophones in a canned fashion with no regard for transitions (but please >correct me if I'm wrong). |
|
----- Original Message ----- From: Gordon McComb <> To: <> Sent: Thursday, 27 April 2000 00:33 Subject: Re: [BasicX] ascci speech from BX24 > The SPO256 does not generate speech simply by stringing phonemes together. > There are mix and pitch algorithms built into the chip. You would need to > replicate these. I think you'll find that merely splicing sounds together > will yield speech that is hard to understand. Actually it's not too bad. At least on par with, if not better than, the Votrax phoneme stringing sounded. The mix and pitch codes were pre-computed AFAIK, and stored in the word dictionary in the internal ROM. Finding out which words were in the ROM was easy, you could tell when the cts was guessing as it went along and ended up almost spelling words out that it couldn't make fit the internal rules. The trick is to play with it on a PC for a while, where you can make quick changes and test them. (There was a PC-parallel port to SPO256 schematic around somewhere, anyone capable of connecting one to a BX24 ought to be able to figure it out for a PC themselves though). > >On one of my robots I have an old ASCII text to speech converter board using > >the GI Sp0256a-al2 Voice Synthesizer chip and a GI cts256a-al2 cpu (old PIC PIC? I don't think so. The cts256 was around ages before Microchip PIC's and the architecture isn't anything like them. > >cpu). These to chips together accept any ASCII text string and convert them > >speech. To the best of their limited vocabulary, yes. > > The SP0256 generates the 64 allophones required to say any word. In English, or English-like languages. You should try getting them to speak another language, Spanish or French or Italian sound funny, but still moderately understandable with some work. Slavic languages are pretty bad... > >I would like to do this with the BX24. I could play each allophone from the > >SP0256 and record it into the EEPROM on the BX24. Then using the PlaySoun d > >command you could play the allophone sounds in sequence required for the > >words you wish the BX24 to speak. > > > >Has anyone done anything like this ? Not with a BX-24, but I did have a spo256 connected to a PC parallel port. The only thing I can recommend is that you play each of the 64 allophones about a second apart, displaying the byte-code as the spo "says" them. Then play with the pitch controls and repeat. Build up an idea in your mind about how the pitch controls affect th eway that individual allophones can be strung together. Then write your "dictionary" of words along with the pitch controls and off you go. While the results might not be as good as you expect, it can still be a lot of fun! David. |