How to include dynamic TTS in IVR?

Is there any way in FreePBX v12 to use dynamic TTS IVR announcements? I am contemplating purchasing Cepstral tts. I don’t see any way to do anything dynamic such as saying the date and time short of manually creating the whole IVR with a dial plan maybe in extensions_custom.conf. Any tips are appreciated!

The only GUI option at this point is phwhite’s 3rd party module, Text to Speech:

It worked fine in FreePBX 11, and I believe it will still work in 12, but haven’t tested much. You won’t be able to use it directly in an IVR, you have to create a system announcement and then go to the IVR. Requires manual install from the repo and it will trigger unsigned module warning if you install.

edit
The above module is broken for FreePBX 12.

Thank you. Guess I look around. Anyone know if any of the other free pbx’s support tts in ivr’s?

;A simple dynamic IVR using GoogleTTS

[my_ivr]
exten => s,1,Answer()
exten => s,n,Set(TIMEOUT(digit)=5)
exten => s,n,agi(googletts.agi,"Welcome to my small interactive voice response menu.",en)
    ;;Wait for digit:
exten => s,n(start),agi(googletts.agi,"Please dial a digit.",en,any)
exten => s,n,WaitExten()

    ;;PLayback the name of the digit and wait for another one:
exten => _X,1,agi(googletts.agi,"You just pressed ${EXTEN}. Try another one please.",en,any)
exten => _X,n,WaitExten()

exten => i,1,agi(googletts.agi,"Invalid extension.",en)
exten => i,n,goto(s,start)

exten => t,1,agi(googletts.agi,"Request timed out.",en)
exten => t,n,goto(s,start)

exten => h,1,Hangup()

GoogleTTS is no longer a viable option. Google now requires a developer api key to access the server (no big deal) but also limits you to 50 tts request per day (big deal). Google does not offer an option for a higher rate limit.