dphirschler Posted August 6, 2014 Share Posted August 6, 2014 (edited) I don't know if it will help, but I have a TMS5220 Voice data manual from way back. Got it from somebody that worked at TI. EDIT: After poking around a little on the web, I see that this is a fairly common manual. Darryl Edited August 7, 2014 by dphirschler Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted June 16, 2016 Share Posted June 16, 2016 I'm investigating doing some speech myself! But I've run into a problem... I used QBox to convert some WAV files, and when I strung the data (657 bytes for one) together into multiple strings and tried to play them with CALL SAY, I just get a BAD VALUE error. Is this particular technique only going to work in Assembly language? If so that's a bummer... That being the case, if someone can provide the source code for a simple speech player using the QBox output I'd appreciate it. Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted June 16, 2016 Share Posted June 16, 2016 You might want to try adding the Text-to-Speech routines from TI into low memory and execute it that way. . . Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted June 16, 2016 Share Posted June 16, 2016 Yeah, I was hoping I could do it in XBasic. That's okay, I'll revisit it later. The qbox tutorial had some simple assembly program to play the speech data, anyone have the source? Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted June 26, 2016 Share Posted June 26, 2016 Okay, so I got the speech play code out of the Editor Assembler Manual, and was successful! I converted a sample of my own voice and played it in Classic99! Unfortunately, it didn't work on the actual hardware, at all. I just get silence. Has this been everyone's experience with the QBox software? Quote Link to comment Share on other sites More sharing options...
Asmusr Posted June 27, 2016 Share Posted June 27, 2016 Okay, so I got the speech play code out of the Editor Assembler Manual, and was successful! I converted a sample of my own voice and played it in Classic99! Unfortunately, it didn't work on the actual hardware, at all. I just get silence. Has this been everyone's experience with the QBox software? Did you place the delay code and whatnot in scratchpad ram? I would imagine most emulators are not emulating the blocking of the 8 bit bus while the status of the speech synth is being read. Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted June 27, 2016 Share Posted June 27, 2016 Well, the player code I used is from the E/A manual so it SHOULD work, it was designed specifically to play speech fed in byte by byte and compensate for the 8 bit bus. Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted June 27, 2016 Share Posted June 27, 2016 (edited) Ahh... I just tried it again. Unlike earlier I didn't have any outside noise distracting me. It DID play. Just very quietly... so much so I should figure out if I can boost volume. It's about half the strength of the normal ROM speech in attenuation. That may be because I recorded it via a camera microphone on my laptop. Not exactly the highest quality equipment. But, it sounded loud enough in Classic99... Edited June 27, 2016 by adamantyr Quote Link to comment Share on other sites More sharing options...
Willsy Posted July 2, 2016 Share Posted July 2, 2016 Have a look here for some cool speech in assembly language. May not work in classic 99 because it relies on the speech synth halting the 9900. Can't remember if that's implemented in classic 99 or not. Works in Mess. http://www.planet-99.net/wotw.htm Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 3, 2016 Share Posted July 3, 2016 Have a look here for some cool speech in assembly language. May not work in classic 99 because it relies on the speech synth halting the 9900. Can't remember if that's implemented in classic 99 or not. Works in Mess. http://www.planet-99.net/wotw.htm It's not, it probably will not work in Classic99. Quote Link to comment Share on other sites More sharing options...
Asmusr Posted July 3, 2016 Share Posted July 3, 2016 Here's Willsy's speech sample assembled on a disk. Run E/A#5 DSK1.WILLSY speech.dsk 4 Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted July 3, 2016 Share Posted July 3, 2016 Thanks guys, I got it working with the sample code from the E/A manual. I need to re-record and do better noise clean up through QBox. My first attempt sounded pretty good in Classic99 (my girlfriend was creeped out by the voice) but on the hardware it was extremery quiet. Part of that was me using a laptop camera microphone and lousy recording software that wouldn't do mono, forcing me to use an online conversion tool. I'm still pleased though. The LPC is such an infuriating black box of technology, it's great to utilize it! Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 3, 2016 Share Posted July 3, 2016 (edited) Ehm, guys, someone broke that program. I noticed that it does not terminate when run in MAME/MESS. In the source code shown at http://www.planet-99.net/wotw.htm, BLWP @VSBW is used. In the code on the DSK image, this was replaced by BL @someprg, without saving R11 before calling RT at the end. Also, the voice does not sound really well under MAME/MESS; are these LPC data really created for the TMS5200? Or for the TMS5220? There are significant differences between both. This somewhat sounds to me like 5220 data played back on a 5200. Edited July 3, 2016 by mizapf Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted July 3, 2016 Share Posted July 3, 2016 QBox only supports the 5220. I think most of the emulators have the 5220 because the 5200 core design is lost? Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 3, 2016 Share Posted July 3, 2016 MAME contains emulations for the complete 52xx family. The TI emulation explicitly uses the 5200. We even introduced a new variant CD2501ECD for the TI-99/8 which is used only there. The designs for the 5200 were retrieved from the patent texts and uncapped circuits (but not by me). So if Qbox only supports the 5220, you'll never get good speech in the MAME/MESS TI emulation. Quote Link to comment Share on other sites More sharing options...
+adamantyr Posted July 4, 2016 Share Posted July 4, 2016 (edited) The sample I tried worked, the only thing it lacked was attenuation. It was so quiet it almost sounds like it's coming from under the monitor. That's one reason I may not end up using speech; if that can't be corrected it's hardly worth the effort. Edited July 4, 2016 by adamantyr Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 4, 2016 Share Posted July 4, 2016 Yeah, long ago we only had 5220 emulation (even in MESS), and that's the core that is still in Classic99. But MESS has managed to get many more since then, including the correct TI Speech Synth cores. There was an attempt some time ago to get the correct coefficients into QBOX, but I don't know if it ever actually happened. Quote Link to comment Share on other sites More sharing options...
Asmusr Posted July 16, 2016 Share Posted July 16, 2016 Does anyone know approximately how often (in milliseconds) you have to send data to the speech synth? In other words, how long time does it take to consume the 16 byte buffer? Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 17, 2016 Share Posted July 17, 2016 It actually varies, the cost of a frame is anywhere from 4 bits to 50 bits. Each frame plays for 25ms, so in theory, anywhere from 64ms to 800ms. That's why you need to check the buffer status bits. Quote Link to comment Share on other sites More sharing options...
Asmusr Posted July 17, 2016 Share Posted July 17, 2016 It actually varies, the cost of a frame is anywhere from 4 bits to 50 bits. Each frame plays for 25ms, so in theory, anywhere from 64ms to 800ms. That's why you need to check the buffer status bits. Thanks, so those numbers suggest that it should be enough to update the speech at 60Hz (in the ISR, for instance), but when I tried that the synth was running out of data? Quote Link to comment Share on other sites More sharing options...
+Lee Stewart Posted July 17, 2016 Share Posted July 17, 2016 Thanks, so those numbers suggest that it should be enough to update the speech at 60Hz (in the ISR, for instance), but when I tried that the synth was running out of data? I don't know whether this would help, but STRSPK (ported from @Willsy's TurboForth code) in the attached ALC for fbForth 2.0:8 is invoked by the fbForth 2.0:8 ISR to service streamed speech at each interrupt. If the SS is busy, it exits; if not, it sends up to 16 bytes to the SS. fbForth205_Speech&Sound.a99 ...lee Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 17, 2016 Share Posted July 17, 2016 I noticed that the QBOX output produced some undefined output at the end when run in MESS, hence I asked whether this was created for a 5220. The difference between the 5220 and the 5200 (the latter one being used in the Speech Synthesizer) is that the 5220 has a rate control setting. I'm not sure (since I don't have a real 5220 to test), but this could mean that both chips consume the frames at different rates. Quote Link to comment Share on other sites More sharing options...
Asmusr Posted July 17, 2016 Share Posted July 17, 2016 I don't know whether this would help, but STRSPK (ported from @Willsy's TurboForth code) in the attached ALC for fbForth 2.0:8 is invoked by the fbForth 2.0:8 ISR to service streamed speech at each interrupt. If the SS is busy, it exits; if not, it sends up to 16 bytes to the SS. fbForth205_Speech&Sound.a99 ...lee Thanks, this supports Tursi's numbers, so my attempt was probably failing for another reason than running out of data. Quote Link to comment Share on other sites More sharing options...
Tursi Posted July 17, 2016 Share Posted July 17, 2016 Yeah, that's how Parsec and Alpiner work, too. Once upon a time I extracted the Parsec speech code and documented it, but it's lost. It wasn't any different than you've seen. Quote Link to comment Share on other sites More sharing options...
+Ksarul Posted July 17, 2016 Share Posted July 17, 2016 The Parsec source code might contain a lot of that information, Tursi. It is available in the resources thread. . . Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.