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)
using the sector editor I replaced this with a branch out...
06A0 (BL @>A000)
from A000 I wrote a small routine to save the LPC data to a CPU buffer...
INC R2 (Byte count)
than reimmplement the calling program's replaced instruction...
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.