mod_speex
About
Speex provides fairly good audio qualities at reasonable CPU and bandwidth requirements.
Obsolete
The speex codec has been obsoleted by opus-codec RFC 6716.
Codec negotiation
mod_speex offers some support for RFC 5574 fmtp codec negotiation. If the fmtp for Speex is defined in an offer or response, FreeSWITCH will configure the codec to use the preferred bit rate, vad, quality, etc. If the fmtp line is not present, FreeSWITCH will configure the codec using the default settings.
FreeSWITCH does not currently offer fmtp when originating calls except in the case where an A-leg has already offered an fmtp and the call is being bridged.
Configuration
Speex offers many configuration options to control the default quality, complexity, VAD, etc. The conf/autoload_configs/speex.conf.xml file defines these options. See the Speex manual for a description of what these options control.
Example default configuration
<!-- Speex configuration. See the Speex Codec Manual for a detailed description
of these options. www.speex.org/docs/manual/speex-manual.pdf -->
<configuration name="speex.conf" description="Speex codec configuration">
<!-- default settings -->
<settings name="default">
<!-- Integer between 0-10 Higher quality == higher CPU utilization -->
<param name="quality" value="5"/>
<!-- Integer between 1-10 Higher compression complexity == higher CPU utilization -->
<param name="complexity" value="5"/>
<!-- enable perception enhancement -->
<param name="enhancement" value="true"/>
<!-- enable voice activity detection -->
<param name="vad" value="false"/>
<!-- enable variable bit rate -->
<param name="vbr" value="false"/>
<!-- Float between 0-10 Higher quality == higher CPU utilization -->
<param name="vbr-quality" value="4.0"/>
<!-- Average bit rate. Integer in bps -->
<param name="abr" value="0"/>
<!-- enable discontinuous transmission -->
<param name="dtx" value="false"/>
<!-- enable preprocessor -->
<param name="preproc" value="false"/>
<!-- enable preprocessor vad -->
<param name="pp-vad" value="false"/>
<!-- enable preprocessor automatic gain control -->
<param name="pp-agc" value="false"/>
<!-- AGC level -->
<param name="pp-agc-level" value="8000.0"/>
<!-- enable preprocessor denoiser -->
<param name="pp-denoise" value="false"/>
<!-- enable preprocessor reverberation removal -->
<param name="pp-dereverb" value="false"/>
</settings>
</configuration>