Prosody software modules

Prosody uses modular firmware, with each module performing a function. This allows the exact mix of desired functionality to be provided. See Prosody Guide - how to download firmware for how to download firmware.

Basic functionality

Basic functionality
Module Purpose
datafeed Allows data to be passed between the downloadable modules. This module is only needed for Prosody X.
hbuf2d Allows data to be passed to the Prosody DSP from an application running on the controlling host. This module is needed for nearly all types of play and data communications reception. On Prosody X it may not be needed because data can be passed from a UDP collector instead of the host.
hbuf2h Allows data to be passed to an application running on the controlling host. This module is needed for nearly all types of record and data communications transmission. On Prosody X it may not be needed because data can be passed to a UDP dispatcher instead of the host.

Data communications

Data Communications modules
Module Purpose
asyrx Async receive. This is used to implement the async encoding in a receive protocol. It decodes a stream of digital data into a sequence of characters.
asytx Async transmit. This is used to implement the async encoding in a transmit protocol. It encodes a sequence of characters as a stream of digital data.
cwrx CW modem receiver. This decodes an incoming signal from a CW modem. However it does not convert it to digital data, so either fskpll or fskasyrx must be used, depending on how the data is encoded, to complete the decoding.
cwtx CW modem transmitter.
datarx Raw data receiver. This is used to run a protocols directly on a digital bearer channel (in contrast to speech and modems which encode the data as sounds).
datatx Raw data transmitter. This is used to run a protocols directly on a digital bearer channel (in contrast to speech and modems which encode the data as sounds).
fskasyrx Async receiver for FSK modems. This decodes a sequence of characters from the data received by an FSK modem receiver. This is different from running async on other received data streams because there is no clock.
fskpll Reconstruct a clock from a received FSK data stream. If the output of an FSK modem receiver is to be interpreted as a synchronous encoding, then the data must be divided into bits using a clock recovered from the signal. This module does this, converting the received signal into a digital data signal suitable for decoding by HDLC or sync.
fskrx FSK modem receiver. This decodes an incoming signal from an FSK modem. However it does not convert it to digital data, so either fskpll or fskasyrx must be used, depending on how the data is encoded, to complete the decoding.
fsktx FSK modem transmitter.
hdlcrx HDLC receiver.
hdlctx HDLC transmitter.
prefsuf Prefix/suffix provider. Adds a prefix and a suffix to each transmission. The prefix and suffix can by any number if bits in length.
six2five A helper module used by the modem transmitters V.27ter, V.29, and V.17.
syncrx Synchronous data receiver.
synctx Synchronous data transmitter.
v110 The protocol as defined in V.110.
v110rlpr The V.110 RLP receiver.
v110rlpt The V.110 RLP transmitter.
v17tx The modem transmitter defined in V.17. Also requires six2five
v27rx The modem receiver defined in V.27ter.
v27tx The modem transmitter defined in V.27ter. Also requires six2five
v29rx The modem receiver defined in V.29ter.
v29tx The modem transmitter defined in V.29. Also requires six2five

Data communications modules must be used in the combinations described in Prosody data communcations Protocols and Encodings.

Speech recording

This diagram shows the relationship between the modules needed for recording. Those shaded are optional. One of the rec... modules is always needed.

diagram of record modules

Speech input modules
Module Purpose
inchan Generic companded input. This is required for any form of processing on incoming data which is a speech or analogue signal. The only input which does not need it is digital data communications. If this module has not been downloaded, no recording, conferencing or detection will work.

Speech recording modules
Module Purpose
8_to_11 Converter to allow recording at 11kHz sampling rate instead of 8kHz. This is used in conjunction with a recording format to record at a speed useful for playing directly though typical PC soundcards.
gainbg Volume control, automatic gain control, and addition of a background signal. These can all be used with sm_replay_start(), sm_replay_adjust() or sm_record_start().
rec16b Record 16-bit linear data.
rec8b Record 8-bit linear data.
recA Record A-law companded data.
recablk Record data encoded in ACUBLK format.
recima Record data encoded in IMA format.
recms8b Record 8-bit linear data with offset of 128 (Microsoft .WAV 8-bit).
recmu Record mu-law companded data.
recoki Record data encoded in OKI format.
sixkin Converter to allow recording at 6kHz instead of 8kHz. This is used in conjunction with a recording format to reduce the size of the recorded data by 25%.
timerx Timer to provide a limit on recording duration.

Note: all speech recording modules require inchan as well.

Speech playing

This diagram shows the relationship between the modules needed for playing. Those shaded are optional (and you would never have both fast and slow in use at the same time). One of the play... modules is always needed.

diagram of play modules

Speech output modules
Module Purpose
outchan Generic companded output. This is required to produce nearly any form of speech or analogue output signal. The only outputs which do not need it are tone generation and digital data communications. If this module has not been downloaded, no replay or conferencing will work.
tonegen Tone generation. This is used by sm_play_tone(), sm_play_cptone(), and sm_play_digits().

Speech playing modules
Module Purpose
11_to_8 Converter to allow playing of signals which have a sampling rate of 11kHz (at the 8kHz rate used by telephony timeslots). This is used in conjunction with a replay to play data that was recorded at a sampling rate often used when recording from a PC soundcard.
fast Replay at speeds over 100%. The speed is selected by sm_replay_start() or sm_replay_adjust(). If this module has not been downloaded, the replay will play at normal speed.
gainbg Volume control, automatic gain control, and addition of a background signal. These can all be used with sm_replay_start(), sm_replay_adjust() or sm_record_start().
play16b Play 16-bit linear data.
play8b Play 8-bit linear data.
playA Play A-law companded data.
playablk Play data encoded in ACUBLK format.
playima Play data encoded in IMA format.
playms8b Play 8-bit linear data with offset of 128 (Microsoft .WAV 8-bit).
playmu Play mu-law companded data.
playoki Play data encoded in OKI format.
sixkout Converter to allow playing of 6kHz signals at 8kHz. This is used in conjunction with a replay to play data which was recorded as a 6kHz variant of a format normally used at 8kHz. Such a variant is used to reduce the size of the recorded data by 25%.
slow Replay at speeds below 100%. The speed is selected by sm_replay_start() or sm_replay_adjust(). If this module has not been downloaded, the replay will play at normal speed.

Note: all speech playing modules require outchan as well.

Detection

Detection modules
Module Purpose
ansdet Answering machine detection. Used by sm_catsig_listen_for() to distinguish between a live speaker and an answering machine.
grunt Grunt detection and silence elimination. Used by sm_record_start() for silence elimination in recordings and by sm_listen_for(). If this module has not been downloaded, no grunt will be detected and recordings will not have silences removed.
iwr Isolated Word Recognition. Used by sm_add_input_vocab() to prepare a vocabulary and by sm_asr_listen_for() to perform the actual speech recognition.
td Tone detection. Used by sm_listen_for() for tone detection and by sm_record_start() for tone suppression in recordings. If this module has not been downloaded, no tones will be detected and tones will remain in recordings.

Conferencing

Conferencing modules
Module Purpose
civ Conferencing. This is required if you want to start a conference (which is done using sm_conf_prim_start()) that can adjust the volume of each individual input independently for each conference output in which it is a participant If this module has not been downloaded, any attempt to start such a conference will produce an error.
conf Conferencing. This is required if you want to start a standard conference (which is done using sm_conf_prim_start()). If this module has not been downloaded, any attempt to start such a conference will produce an error.

Echo cancellation

Echo cancellation modules
Module Purpose
echocan Echo cancellation. If this module has not been downloaded, an attempt to use echo cancellation will use an unmodified signal.
passthru A module which permits an incoming signal to be directed to an output. This is used by echo cancellation to save the processed signal.

IP codecs

IP codecs
Module Purpose
amr-nb AMR (Adaptive Multi Rate) narrowband codec.
evrc EVRC (Enhanced Variable Rate CODEC) codec.
g7231a G.723.1 codec.
g726 G.726 codec.
g728 G.728 codec.
g729ab G.729A codec.
gsm-efr GSM-EFR (Enhanced Full Rate) codec.
gsm-fr GSM-FR (Full Rate) codec.
ilbc iLBC (Internet Low Bit Rate Codec) codec.
smv SMV (Selectable Mode Vocoder) codec.

IP general functionality

IP general functionslity
Module Purpose
fromudp UDP collector. Allows data to be collected from a UDP port instead of being supplied by the host application.
rtcp RTCP.
securertp Secure RTP.
toudp UDP dispatcher. Allows data to be sent to a UDP port instead of being given to the host application.
vmprx RTP receiver.
vmptx RTP transmitter.
vtdet Replacement of in-band tones with RFC 2833 tones.

Test and debug

Test and debug modules
Module Purpose
cpumon Cpu usage monitor.
sync Synchroniser. Allows the start of certain operations to be synchronised. This is used for testing where it is useful to record several signals with a known relationship. The implementation of this facility relies on some features which are liable to change between versions.