On Aug 5, 2024, at 11:20 AM, John Galt <furba...@gmail.com> wrote:
I've been writing a Text to speech program for the SP0256 for the Altair I/O Bus card.I basically finished most of it and it works. it does not use a dictionary look up.I used the:Naval Research Laboratory text-to-phoneme algorithm, described by Elovitz et al. (1976).for the rules set.I wrote it all in MBASIC 5.21I find it odd that there is only one modern PERL version of the Naval rules.there are tons of Phoneme to Text programs that take the already converted text to phoneme and then just output to the synth but no direct text to speech.the program is a absolute monster and i had to basically make overlays for each letter because the rules are so extensive.i have some more work to do in reading and converting a text file to speech.right now you can enter a word or sentence up to the basic input limit more like 250 characters and it will convert it then automatically play it back. the most recent text to speech is stored in a temp file to make it easy to copy and paste into a program you want to add speech too. it makes no sense to try to make an application with speech conversion on the fly as the memory requirements far exceed 64kb.
basically i made a CTS256-al2 emulator which is designed to work with the SP0256
there is an online convertor by greg kennedy and that uses a perl script he made.
https://greg-kennedy.com/sp0256-tts/
my version will work on the Altair under Cp/M with full 64kb memory and compiled basic. you will also want a harddrive. It will work off a 330kb floppy, takes up about 150KB but if your converting big files you may run out of disk space, also it is much slower as it has to load all the overlays from floppy.
more work to be done. its very alpha and I'm sure has bugs in it.the readsay application will read phoneme text file and output to the synth.for now i can run sentences off the parser and put them in a larger file forreadsay to output.--
You received this message because you are subscribed to the Google Groups "Altair-Duino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/bf4917ab-e57e-43ec-892e-0b32c4bfbf75n%40googlegroups.com.
Le 6 août 2024 à 04:27, John Galt <furba...@gmail.com> a écrit :
I updated modules I, E, L.There are a lot of transcription mistakes in the Naval manual. i found some new information and made some changes.words like Fiddle and Georgia now sound better.
--
You received this message because you are subscribed to the Google Groups "Altair-Duino" group.
To unsubscribe from this group and stop receiving emails from it, send an email to altair-duino...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/67d833e1-3e77-4b4d-a67d-9774c8cdb44fn%40googlegroups.com.
Hi,
Speech and Singing on an Altair computer:
The Saga of WATT & HU ... Altair 8800c v. Altair-Duino Pro https://youtu.be/0qPOyqm0jUQ
Talking 'n Singing 'n Musical Stepper Motors from an Altair 8800 Computer 20211225
https://www.youtube.com/watch?v=BDaBaBL1mws&ab_channel=WaltPerko
On Aug 24, 2024, at 1:38 PM, John Galt <furba...@gmail.com> wrote:
Walt a little heads up..I'm playing around with the speakjet your demo code had issues with phonics dropping out.in researching it i found the issue.the smaller Speakjet board going around a few years ago with the Serial connection do not support CTS. CTS is the hardware handshake.thecode you have to check the Status bit when talking to the speakjet therefore does nothing.this is why long phonic strings start to skip and break down.the speakjet as an internal 64 character buffer, this quickly overruns when your converting even small words.since there is no hardware handshake you have to program in your own delay routines.thankfully Speakjet includes the Milliseconds each speech piece requires example the robot noises are 80ms as noted int the manualwhat you do for the output routine is make a For Next loop where you count from 0 to the MS delay requiredfor i=0 to 80: next 80 would cover the 80ms needed.this method will slow the Speakjet down preventing sound overlap and keeping the buffer from overflowing.this would be the job of the status bit (CTS) but pin 15 on the speakjet is CTS and it is not used in many of the speakjet simple pcbs that came out a few years ago.there are more elaborate Speakjet pcbs with the TTS processor and full serial support these support CTS and your IF THEN routine would work.you can see this in action for yourself. run short lines of phonics and listen to how the speakjet handles themthen send a monster long string of phonics and listen as soon as you hit 64 characters with the buffer not fast enough to clear out then all the speech starts to skip and breakdown until the buffer cleans and it can catch upuntil it overflows again.. CTS would handle this but its not existant in the format being used.i'm working on a Text to speech on the fly for the Speakjet now that the Sp0256 is basically done. hope to post a large update soon to my github.
To view this discussion on the web visit https://groups.google.com/d/msgid/altair-duino/760392fb-7747-4b71-93a3-e93efe20e0c5n%40googlegroups.com.
Hi,
I don’t have any problem with using my little SpeechBoxes on my Altair 8800c or my IMSAI-JAIR computers … and in my robots or on the Altair-Duino Pro computers.
https://www.youtube.com/watch?v=BDaBaBL1mws&ab_channel=WaltPerko
I set the speech data into data statements at the end of the main BASIC program. The program reads one DATA line at a time and sends it to the SpeakJet … I have good long speeches and singing etc.
I tried all sorts of hand-shaking with the chip, but found that timing gets screwed up using hardware control so eventually, I learned to just make DATA 20,64,… then a -1 at the end of each data statement that lets the program know to go back into the sending data loop.
Walt a little heads up..I'm playing around with the speakjet your demo code had issues with phonics dropping out.in researching it i found the issue.the smaller Speakjet board going around a few years ago with the Serial connection do not support CTS. CTS is the hardware handshake.thecode you have to check the Status bit when talking to the speakjet therefore does nothing.this is why long phonic strings start to skip and break down.the speakjet as an internal 64 character buffer, this quickly overruns when your converting even small words.since there is no hardware handshake you have to program in your own delay routines.thankfully Speakjet includes the Milliseconds each speech piece requires example the robot noises are 80ms as noted int the manualwhat you do for the output routine is make a For Next loop where you count from 0 to the MS delay requiredfor i=0 to 80: next 80 would cover the 80ms needed.this method will slow the Speakjet down preventing sound overlap and keeping the buffer from overflowing.this would be the job of the status bit (CTS) but pin 15 on the speakjet is CTS and it is not used in many of the speakjet simple pcbs that came out a few years ago.there are more elaborate Speakjet pcbs with the TTS processor and full serial support these support CTS and your IF THEN routine would work.you can see this in action for yourself. run short lines of phonics and listen to how the speakjet handles themthen send a monster long string of phonics and listen as soon as you hit 64 characters with the buffer not fast enough to clear out then all the speech starts to skip and breakdown until the buffer cleans and it can catch upuntil it overflows again.. CTS would handle this but its not existant in the format being used.i'm working on a Text to speech on the fly for the Speakjet now that the Sp0256 is basically done. hope to post a large update soon to my github.
On Wednesday, August 14, 2024 at 10:33:30 AM UTC-4 r4r...@gmail.com wrote:
When you run your basic programs, when it starts trying to sing the second line the buffer fills and it starts skipping phonics and sometimes half the line drops out then comes back in as buffer clears.this is due to there being no possible hardware flow control with the device. for short sentences you will not notice it occurring which is why it is easy not to notice it.as you usually build a sentence you listening to one word at a time then stringing them as you go. in that case it works find the buffer is large enough.but when you bomb multiple sentences that is really when you start to notice words jumble up or half a word seems to disappear etc.data 20 and 64 just set the volume 020 Volume, X to 64 from default of 96 what happens is these are instant command and might give time for the buffer to clear a few characters.you don't want to do a reset 31 or 255 or end of phrase as that can reset the speakjet and it will announce ready in the middle of a sentence.you need a delay between each phonic to compensate, but it can't be linear because the timing is different between all sounds page 16 in the manual.what you do is assign the MS delay to each sound effect and then when you play that sound have it count a loop up to that ms you can also put in a multipler to tweak the length as interpreted basic and compiled basic will have different timing.just a tip to make the speech sound better.this is also a reason people keep using too many Pauses because the words jumble without the hardware flow control on the serial port.i noticed all this as i have been running the SP0256-AL2 and the speakjet together at the same time.at first i just thought the speakjet ran faster then the SP0256 but then i understood it was the lack of CTS causing the speed and drop out issue.food for thought.i'm half way through my Speakjet text to speech converter.
The video it is muddling up in the middle.What are the complete words being said? Just the words no singing added.
What were the words you wanted it to say?Write out the lyrics I want to run them through my sp0256 and speakjet programs.
update posted for the SP0256-AL2 Text to speech program.included a 330KB disk image so you can write the disk to a floppy if you want.otherwise all files included in Library archive for easy Xmodem transfer.SpeakJet version is coming along will be posted soon.On Sunday, August 25, 2024 at 11:46:37 PM UTC-4 John Galt wrote:
Good stress test.