Full duplex in asterisk

in normal (2 humans) phone call people can talk and listen at the same time,
what about when one side is not human - I mean two applications like ASR and TTS.

I have ASR + TTS used in asterisk.
when ASR get audio stream to recognize
I cannot play synthesis with TTS that time
and vice versa.

how can I achieve full-duplex in asterisk:
the case when one app in dialplan do not block another one
or just two apps use the same source (socket or sth), but sth need
control them both (like an async app in asterisk)

I guess that I need write own layer to operate with audio stream:
read for recognition and write synthesis.

or maybe it’s possible to run somehow two applications parallel in dialplan?
is there any asynchronous application (keep access to channel, but do not block dialplan processing)

I need some hints how to start this research.