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 | |
|---|---|
| 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 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.
This diagram shows the
relationship between the modules needed for recording. Those shaded are
optional. One of the rec... modules is always needed.
| 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.
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.
| 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 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 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 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 | |
|---|---|
| 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 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 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. |