I have a feeling you won't like not knowing who is speaking and which channel the text comes from. But it looks like you'd need to 'theme' the on-text and on-action events. Normally the theme involves halting the display of the normal message in order to echo your own colors/style, but now you need to do that in order to speak without the $nick AND you need to echo the text that would otherwise not be shown
on ^*:TEXT:*:#:{ speak -u $1- | echo -tlbfmc normal # $+(<,$nick($chan,$nick).pnick,>) $parms | halt }
on ^*:ACTION:*:#:{ speak -u $1- | echo -tlbfmc action # * $nick($chan,$nick).pnick $parms | halt }
The normal method of speaking looks like it would be
speak -u $nick on $chan says $1-
... so you may need to alter if you still want to have it say which channel. It gets more complicated if you only want the channel mentioned if it's different than the last message. For that, you'd need to keep track of the last speaker, so you'd do something like:
var %last
if ($hget(tts,last.speaker) != $nick) var %last $nick
if ($hget(tts,last.chan ) != $chan) var %last %last on $chan
if (%last != $null) var %last %last says
Note that 1 side-effect of this is that you'll no longer be able to see consecutive spaces in incoming messages, unless you use spaces.dll, so ASCII art won't always look right.