[asterisk-dev] Correct abstraction for "audio processing" module

Johnathan Corgan jcorgan at aeinet.com
Mon Mar 6 19:00:25 MST 2006


I'm interested in developing one or more modules that would modify audio
in a pass-through way, in real-time, and controllable via the dial plan.

In effect, said module would receive audio frames, do some sort of
arbitrary processing on them, and send a stream of frames out.

In the dialplan, the module (if implemented as an application, which
would be preferred) would be invoked sometime before the Dial() or
Answer() applications and insert itself into the packet stream as
appropriate to translate audio frames when receiving or dialing a call.

Some applications for this would be things like:

Audio Filtering (noise reduction, high/low pass)

Pop-Click suppression

Voice Scrambling/Encryption

Pitch Shifting

Transport protocol (but not codec) independent PLC

Speaker identification--only let frames through that correspond to a
recognized speaker identity

etc.  More science fictiony things would be things like automated
language translation.

Anyway, are there "hooks" that * provides to inject oneself into a frame
processing pipeline?  Or other way to accomplish the above (not the
voice processing steps, but the * frame passing "glue").

One thing that occurred to me would be to add this to chan_local, and
intercept reads/writes, but that makes usage more difficult in the dialplan.

-Johnathan



More information about the asterisk-dev mailing list