pixelpedant Posted July 20, 2018 Share Posted July 20, 2018 CALL SPGET serves as a simple, handy way to fetch LPC patterns in XB and the Speech Editor (which can then be saved, stored, modified, etc.). But while TEII and the Text-to-Speech disk offer much richer speech composition options, it doesn't seem like there's a trivial way to dump patterns for subsequent use, or generate patterns ahead of time for performance reasons. Or at least I can't see one. Is there a method I'm missing here? Quote Link to comment Share on other sites More sharing options...
RXB Posted July 20, 2018 Share Posted July 20, 2018 Curious want you are attempting to do? Quote Link to comment Share on other sites More sharing options...
pixelpedant Posted July 20, 2018 Author Share Posted July 20, 2018 I've been playing around with speech a lot lately. Not attempting to do anything in particular, necessarily. I wrote a Python app for editing speech patterns (analogous to Speecoder, but with more user-friendly/modern editing). Then I got to mapping musical note frequencies to LPC pitch values for the sake of messing around with sung speech. TEII and the Text-to-Speech disk are powerful tools for generating pattern data (and even messing around with pitch and energy a bit). And heck, the Text-to-Speech disk subroutines can even be used in an XB program! But what would make these tools really useful to me is if their generated LPC patterns could be dumped for subsequent editing and reuse. Especially because the phonemic/syllabic inventory of the default vocabulary is incomplete. 2 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted July 20, 2018 Share Posted July 20, 2018 Hi again,I solved this exact issue around 1998, as i wished to have immediate and continuous speech prompts and dialogs as users key in their responses in my TI-99/4a driven PABX with Voice Attendant Subsystem, as well as system wide.Unfortunatly My LPC extraction solution has been off-line for some time, due to old and failing disks, lost instructions, lack of workspace, only one fully working console that can't be relocated right now. The list goes on...The Solution went something like this...I bought TEXT-TO-SPEECH, disassembler and sector editor disks from TEX-COMP. I dissassembled the speech output program from TI's XB TEXT-TO-SPEECH disk(I don't remember the filename). searched for "9400"(there's only one). The disassembler I used could not edit. I believe I observed the instruction to have a two address format, such as MOV R4,@>9400. I entered this into the LINE-BY-LINE ASSEMBLER in order to determine the OP-CODE...D804 (MOVB R4,@>9400)9400using the sector editor I replaced this with a branch out...06A0 (BL @>A000)A000from A000 I wrote a small routine to save the LPC data to a CPU buffer...LI R9,B000MOVB R4,*R9+INC R2 (Byte count)than reimmplement the calling program's replaced instruction...MOVB R4,@>9400RTafter phrase is spoken, LPC data starts at B000 with length in R2.Since R9 is in the calling program's WS, using it might crash the calling program. R9 is just an example. As I recall, there is an available unused register in the calling prog's WS, or at least one that wont crash it until one phrase completes.When I engineered this solution my 32K was off-line, so I had to use MINIMEMORY with a widget, thus XB crashed after each phrase. I had to hit enter and throw the switch in the right order to succeed. Using 32K, a successful return to XB should be possible.I suppose you could preserve the calling prog's WS by moving R4 to a symbolic memory address that coincides with a register in your own WS and then restore the old WS before RT. I'm not sure if the calling program minds R11 being used by the BL. 2 Quote Link to comment Share on other sites More sharing options...
pixelpedant Posted July 20, 2018 Author Share Posted July 20, 2018 Wow. Hats off to you for finding a solution to this sticky problem on the TI end of things. I thought it might come down to disassembly. But I was kind of hoping otherwise. Thanks for the detailed explanation! 1 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted July 20, 2018 Share Posted July 20, 2018 Follow up,I meant to use a symbolic memory address in place of R2.Since you're working on pitch, I thought I might pitch this at you.The TI text2speech is seldom understood by new users, perhaps moreso over a telephone. Totally unacceptable for emergency announcements. In an effort to address this I used the speech modifiers, set to about the lowest frequencies, slowest speech and steady inflection, using double periods between words and multiple periods between sentences to lengthen pauses. This results in the sound of a slowed down tape. Than by locating the speech processors timing resistor and replacing it with a potentiometer, the oscillator can be adjusted to about 20 to 50 times speedup of speech speed and freq. Resulting in higher speed Clear Sounding female speech! The voice sounds similar to the older AT&T calling card auto-attendant. After hearing this I understood that the original samples are actually female.I,m sorry to say, but... the sound of TI singing, to me sounds like a woman trying to sing like a man while falling out of a window.Your video offerings however, are a great educational tool! P.S. I wanted to provide you with a simple utility but I'm locked into a very different project right now. Quote Link to comment Share on other sites More sharing options...
pixelpedant Posted July 21, 2018 Author Share Posted July 21, 2018 I,m sorry to say, but... the sound of TI singing, to me sounds like a woman trying to sing like a man while falling out of a window. Laughing out loud. Honestly. Well said. 1 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted July 21, 2018 Share Posted July 21, 2018 I'm back again,Recall is better this morning, the reason I used MINIMEMORY instead of 32K was not because the 32K was off-line but rather because I was completely unfamiliar with 32K usage by XB. Not knowing where it was safe to place my 5 lines of code in 32K. I instead resorted to what I knew best... MEDIUM MEMORY. THANX. Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted November 3, 2018 Share Posted November 3, 2018 (edited) CALL SPGET serves as a simple, handy way to fetch LPC patterns in XB and the Speech Editor (which can then be saved, stored, modified, etc.). But while TEII and the Text-to-Speech disk offer much richer speech composition options, it doesn't seem like there's a trivial way to dump patterns for subsequent use, or generate patterns ahead of time for performance reasons. Or at least I can't see one. Is there a method I'm missing here? Hi pixelpedant, Your efforts have been missed... I have uploaded my revamped solution to this older post... #25 I hope I will be seeing more from you... Good Luck! Edited November 3, 2018 by HOME AUTOMATION Quote Link to comment Share on other sites More sharing options...
Willsy Posted November 3, 2018 Share Posted November 3, 2018 It would be nice if the current flock of emulators could simply stream all writes to the speech synth to a file (speech_out.bin) or something. I've asked for this option a couple of times over the years but to my knowledge it hasn't materialised, being quite low down on the priority list, which is understandable. Mark Quote Link to comment Share on other sites More sharing options...
+mizapf Posted November 3, 2018 Share Posted November 3, 2018 Speaking for MAME, the problem is that adding everything into the code for later activation not only bloats the code, but it increases the complexity for the user as well. The first person likes to get some copies of the speech data, the next one wishes to get floppy output, the third one asks for RS232 and so on. I'd have to add even more command line arguments, and I already see people complaining about yet another thing to consider when trying to get MAME running. On the other side, the way to go would be to add some few lines to the source code and to recompile, but I see that while many of you do have experience with building programs on the TI, only very few actually dare to build MAME from sources (which is, by the way, the easiest way to keep it updated), and even fewer have tried to apply such changes. Quote Link to comment Share on other sites More sharing options...
Tursi Posted November 4, 2018 Share Posted November 4, 2018 (edited) It would be nice if the current flock of emulators could simply stream all writes to the speech synth to a file (speech_out.bin) or something. I've asked for this option a couple of times over the years but to my knowledge it hasn't materialised, being quite low down on the priority list, which is understandable. Mark Classic99 can do it. It's one of the breakpoint types. (Edit) Speech is at >9400, so setting "L9400=1" will log all speech writes to "dump1.bin". You have to close the emulator to get it to close the file. Just tested that this still works, but it's been in there since December 2015. Edited November 4, 2018 by Tursi 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.