Jump to content
IGNORED

Any way to dump LPC speech patterns via TEII or the Text-to-Speech disk?


pixelpedant

Recommended Posts

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?

Link to comment
Share on other sites

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.

  • Like 2
Link to comment
Share on other sites

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)
9400

using the sector editor I replaced this with a branch out...

06A0 (BL @>A000)
A000

from A000 I wrote a small routine to save the LPC data to a CPU buffer...

LI R9,B000
MOVB R4,*R9+
INC R2 (Byte count)

than reimmplement the calling program's replaced instruction...

MOVB R4,@>9400
RT

after 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.

  • Like 2
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 3 months later...

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 icon_share.png

 

I hope I will be seeing more from you...

 

Good Luck! :)

Edited by HOME AUTOMATION
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 by Tursi
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.

Guest
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.

Loading...
  • Recently Browsing   0 members

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