<?xml version="1.0" encoding="UTF-8"?>
<!-- UniMRCP server document -->
<unimrcpserver xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="unimrcpserver.xsd" version="1.0">
  <properties>
    <!-- By default, network interface (IP address) to bind to will be implicitly identified. 
         Alternatively, it can be explicitly set.
    -->
    <ip type="auto"/>
    <!-- <ip>10.10.0.1</ip> -->
    <!-- <ext-ip>a.b.c.d</ext-ip> -->
  </properties>

  <components>
    <!-- Factory of MRCP resources -->
    <resource-factory>
      <resource id="speechsynth" enable="true"/>
      <resource id="speechrecog" enable="true"/>
      <resource id="recorder" enable="true"/>
      <resource id="speakverify" enable="true"/>
    </resource-factory>

    <!-- SofiaSIP MRCPv2 signaling agent -->
    <sip-uas id="SIP-Agent-1" type="SofiaSIP">
      <!-- By default, "ip" and "ext-ip" addresses set in the properties will be used. 
           They still can be explicitly specified (overriden) here.
      -->
      <!-- <sip-ip>10.10.0.1</sip-ip> -->
      <!-- <sip-ext-ip>a.b.c.d</sip-ext-ip> -->
      <sip-port>8060</sip-port>
      <sip-transport>udp,tcp</sip-transport>
      <!-- <force-destination>true</force-destination> -->
      <ua-name>UniMRCP SofiaSIP</ua-name>
      <sdp-origin>UniMRCPServer</sdp-origin>
      <!-- <sip-t1>500</sip-t1> -->
      <!-- <sip-t2>4000</sip-t2> -->
      <!-- <sip-t4>4000</sip-t4> -->
      <!-- <sip-t1x64>32000</sip-t1x64> -->
    </sip-uas>

    <!-- UniRTSP MRCPv1 signaling agent -->
    <rtsp-uas id="RTSP-Agent-1" type="UniRTSP">
      <!-- By default, "ip" and "ext-ip" addresses set in the properties will be used. 
           They still can be explicitly specified (overriden) here.
      -->
      <!-- <rtsp-ip>10.10.0.1</rtsp-ip> -->
      <!-- <rtsp-ext-ip>a.b.c.d</rtsp-ext-ip> -->
      <rtsp-port>1554</rtsp-port>
      <!-- <force-destination>true</force-destination> -->
      <resource-map>
        <param name="speechsynth" value="speechsynthesizer"/>
        <param name="speechrecog" value="speechrecognizer"/>
      </resource-map>
      <max-connection-count>100</max-connection-count>
      <sdp-origin>UniMRCPServer</sdp-origin>
    </rtsp-uas>

    <!-- MRCPv2 connection agent -->
    <mrcpv2-uas id="MRCPv2-Agent-1">
      <!-- By default, "ip" set in the properties will be used. 
           It still can be explicitly specified (overriden) here.
      -->
      <!-- <mrcp-ip>10.10.0.1</mrcp-ip> -->
      <mrcp-port>1544</mrcp-port>
      <max-connection-count>100</max-connection-count>
      <force-new-connection>false</force-new-connection>
      <rx-buffer-size>1024</rx-buffer-size>
      <tx-buffer-size>1024</tx-buffer-size>
    </mrcpv2-uas>

    <!-- Media processing engine -->
    <media-engine id="Media-Engine-1">
      <realtime-rate>1</realtime-rate>
    </media-engine>

    <!-- Factory of RTP terminations -->
    <rtp-factory id="RTP-Factory-1">
      <!-- By default, "ip" and "ext-ip" addresses set in the properties will be used. 
           They still can be explicitly specified (overriden) here.
      -->
      <!-- <rtp-ip>10.10.0.1</rtp-ip> -->
      <!-- <rtp-ext-ip>a.b.c.d</rtp-ext-ip> -->
      <rtp-port-min>5000</rtp-port-min>
      <rtp-port-max>6000</rtp-port-max>
    </rtp-factory>

    <!-- Factory of plugins (MRCP engines) -->
    <plugin-factory>
      <engine id="PocketSphinx-1" name="mrcppocketsphinx" enable="false"/>
      <engine id="Flite-1" name="mrcpflite" enable="false"/>
      <engine id="Demo-Synth-1" name="demosynth" enable="true"/>
      <engine id="Demo-Recog-1" name="demorecog" enable="true"/>
      <engine id="Demo-Verifier-1" name="demoverifier" enable="true"/>
      <engine id="Recorder-1" name="mrcprecorder" enable="true"/>

      <!-- Engines may have additional named and generic params
      <engine id="Your-Engine-1" name="yourengine" enable="false">
        <max-channel-count>100</max-channel-count>
        <param name="..." value="..."/>
      </engine>
      -->
    </plugin-factory>
  </components>

  <settings>
    <!-- RTP/RTCP settings -->
    <rtp-settings id="RTP-Settings-1">
      <jitter-buffer>
        <playout-delay>50</playout-delay>
        <max-playout-delay>200</max-playout-delay>
      </jitter-buffer>
      <ptime>20</ptime>
      <codecs own-preference="false">PCMU PCMA L16/96/8000 telephone-event/101/8000</codecs>
      <!-- <codecs own-preference="false">PCMU PCMA L16/96/8000 PCMU/97/16000 PCMA/98/16000 L16/99/16000</codecs> -->
      <!-- enable/disable RTCP support -->
      <rtcp enable="false">
        <!-- RTCP BYE policies (RTCP must be enabled first)
              0 - disable RTCP BYE
              1 - send RTCP BYE at the end of session
              2 - send RTCP BYE also at the end of each talkspurt (input)
        -->
        <rtcp-bye>1</rtcp-bye>
        <!-- rtcp transmission interval in msec (set 0 to disable) -->
        <tx-interval>5000</tx-interval>
        <!-- period (timeout) to check for new rtcp messages in msec (set 0 to disable) -->
        <rx-resolution>1000</rx-resolution>
      </rtcp>
    </rtp-settings>
  </settings>


  <profiles>
    <!-- MRCPv2 default profile -->
    <mrcpv2-profile id="uni2">
      <sip-uas>SIP-Agent-1</sip-uas>
      <mrcpv2-uas>MRCPv2-Agent-1</mrcpv2-uas>
      <media-engine>Media-Engine-1</media-engine>
      <rtp-factory>RTP-Factory-1</rtp-factory>
      <rtp-settings>RTP-Settings-1</rtp-settings>

      <!-- It's possible to define profile based map of resources and engines.
      <resource-engine-map>
        <param name="speechsynth" value="Flite-1"/>
        <param name="speechrecog" value="PocketSphinx-1"/>
      </resource-engine-map>
      -->
    </mrcpv2-profile>

    <!-- MRCPv1 default profile -->
    <mrcpv1-profile id="uni1">
      <rtsp-uas>RTSP-Agent-1</rtsp-uas>
      <media-engine>Media-Engine-1</media-engine>
      <rtp-factory>RTP-Factory-1</rtp-factory>
      <rtp-settings>RTP-Settings-1</rtp-settings>
    </mrcpv1-profile>

    <!-- more profiles might be added here -->
  </profiles>
</unimrcpserver>