ttt is small python file which collects json and wav file output from trunk-recorder and uses Whisper.ai to convert speech to text. Essentially it is a "police scanner" which lets you read the conversation instead of just listening (but you can listen too if you like).
Since the text is A.I. generated all of the usual disclaimers apply. It's not perfect but it does a reasonable job if the audio coming from the system you are monitoring is understandable.
Presently, www.pwcscanner.org is running on ttt, serving notifications with opus AAC (to support Safari sadly) attachments to a self-hosted ntfy. Reception needs to be improved as the audio quality periodically drops and transcription quality suffers but I'm happy with the start.
The easiest way is probably to use the docker-compose.yml in this repository and bring up the image. It's a HUGE image - nearly 8GB - since it has the cuda (nvidia GPU) dependencies. If you don't use CUDA, you can certainly build your own image with mamba or conda and remove the cuda dependencies from the environment.yml
Configuration is all done by environmental variables and the destinations.csv(which tells ttt where to send notifications per talkgroup). Take a look at the code in ttt.py and you can see your options. A present there are 3 different speech to text options. The default if nothing is set is to use transformers whisper with openai/large-v3. That's the most accurate version I've found but you can use distil or other models.
If you set the Whisper.cpp variables, ttt will happily forward requests off to a whisper.cpp install. That's a really quick / easy way to get up if you don't have a cuda card as whisper can be built with CLBLAST for Radeon etc.
Finally, for testing and "just work now" you can sign up and use a Deepgram API key and processing can be done by "the cloud". I'd say that's probably not cost-effective over the long term but if you want to see what the system would spit out for you this takes minimal setup.
This is a pretty basic, 3 column csv with your system shortname, the talkgroup id in Decimal, and the apprise url to report to. It doesn't have to be ntfy. Any service apprise supports should work (discord, slack, matrix, mastodon, whatever).
short_name,talkgroup,url
pwcpw25,1003,ntfy://notarealtopic