Powered by Universal Speech Solutions LLC


64-bit Operating Systems Supported

At this time I'd like to declare UniMRCP can be compiled for and run on 64-bit operating systems as a native 64-bit application.

There were reports indicating UniMRCP successfully runs on 64-bit Linux, though I didn't try it myself before. However, things have been changed recently and I have tested UniMRCP enough on both 64-bit Linux and Windows.

- Linux
Everything is quite straightforward and usual on CentOS 5.3 x86-64 I tried. One should proceed with the regular installation.
make install

It's possible to cross-compile for 64-bit even on 32-bit Linux
CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 ./configure
make install

- Windows
Visual Studio itself is a 32-bit application and it's a bit strange to me, but as of today, there is no native 64-bit version. Fortunately, 64 bit tools (compiler, debugger) are available, but those tools are not installed by default, even while installing VS on 64-bit Windows. So if you're going to play with this stuff, make sure you have 64-bit compiler installed.
I have added x64 configuration next to win32 to project files (vcproj) and property sheets (vsprops) in order to compile UniMRCP for a 64-bit platform. Now UniMRCP nicely works even on Windows 7 x86-64.
Corresponding APR and Sofia-SIP project files will be included in the dependency package to be released with UniMRCP 0.9.0 version after the New Year.

Happy Holidays,
Arsen Chaloyan
The author of UniMRCP

UniMRCP Integrated Asterisk Deployment

I'd like to announce the release of an open source connector bridge for Asterisk and UniMRCP.

The connector bridge is an implementation of Asterisk's Generic Speech API using UniMRCP client stack. This module allows Asterisk to connect to MRCPv2 or MRCPv1 compliant servers for speech recognition. It also allows to offload Asterisk using client/server architecture MRCP provides. Moreover, all the speech applications, which are written on top of Generic Speech API now can be easily used via MRCP too.

The complete package, which includes everything required for UniMRCP integrated Asterisk deployment, is now available for download

The open development model with community driven initiatives is what I started UniMRCP with and entered the open source world for. The integration with powerful telephony platforms such as Asterisk would allow the project to further evolve and accelerate.

I have been asked many times for such an integration. Now it's your turn to give it a try, provide feedback and help carefully test and evolve the solution.

Thanks for using UniMRCP,
Arsen Chaloyan
The author of UniMRCP

RTCP Implemented

The RTP control protocol (RTCP) has been implemented in the trunk.

RTCP allows to monitor RTP delivery. The protocol is based on periodic transmission of control packets. The primary function is to provide statistical reports such as Sender Report (SR) and Receiver Report (RR).

There are a number of options to configure.

1. Enable RTCP support
Currently RTCP is disabled by default, you should enable it first from unimrcpclient.xml and/or unimrcpserver.xml configuration files.
        <!-- enable/disable rtcp support -->
        <param name="rtcp" value="1"/>

2. Transmission of RTCP reports
The default transmission interval is 5 sec. This is the period RTCP reports are generated and sent with. Typically, RTCP traffic bandwidth should be fixed at 5% of overall RTP/RTCP session bandwidth. Anyway, you can adjust the interval by the following parameter. To disable periodic transmission set it 0.
        <!-- rtcp transmission interval in msec  -->
        <param name="rtcp-tx-interval" value="5000"/>

3. Transmission of an RTCP BYE packet
According to the specification (RFC3550), a participant should sent an RTCP BYE packet when he wishes to leave an RTP session. Typically, RTP is used in conjunction with higher level session management protocols such as SIP, H323, which provide own mechanisms for the participants to join/leave a session. Therefore, presence of RTCP BYE packet is usually optional.
However, the role of RTCP BYE in an MRCP environment was re-defined by well known vendor(s). It's intended to indicate end of input (utterance). All the mentioned options are supported by UniMRCP now.
        <!-- rtcp bye policies
             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)
        <param name="rtcp-bye" value="1"/>

4. Reception of RTCP packets
Currently this routine dumps received RTCP packets in the logs and it is mainly helpful for monitoring and debugging.
The period, which is used to check for new RTCP messages, can be adjusted by the following parameter. To disable the reception of RTCP packets set it 0.
        <!-- period (timeout) to check for new rtcp messages in msec  -->
        <param name="rtcp-rx-resolution" value="1000"/>

Give it a try by choosing options which best fit your needs.

Arsen Chaloyan
The author of UniMRCP

Recorder Resource Supported

Now UniMRCP supports recorder resource too.

This resource allows to capture and store audio and video streams. The
use cases are evident for telephony platforms which provide call
recording and voice mail functionality with limited capacity of local
Utilization of UniMRCP client stack facilitates usage of remote
storage for recording and allows to use any MRCP compliant server,
which supports recorder resource such as UniMRCP server. Currently
only audio streams are supported, but hopefully video will be
supported either.
Moreover, set of synthesizer, recognizer and recorder resources allows
to build distributed and fully decomposed solutions, where telephony
applications may stay out of media processing, but do signaling.

Also sample recorder scenario has been added to umc application. To
use it update your local umcscenarios.xml file and input "run rec"
from console.

Arsen Chaloyan
The author of UniMRCP

UniMRCP 0.8.0 Released

UniMRCP 0.8.0 (r1199) has been released and now is available for download.

Source Distribution

Windows Installer

Windows SDK Installer

Dependency Packages (based on APR-1.3.8, APR-Util-1.3.9, Sofia-SIP-1.12.10)

This release introduces
- enhanced support for SDP offer/answer model,
- added support for flexible mapping of MRCP channels and media terminations,
- new alternate applications (asrclient, umc) based on the UniMRCP client stack

As always it also addresses issues reported by the community.

Changes since previous release 0.7.0 (r1064) include:

- Added an alternate arsclient application based on libunimrcpclient library (Philip)
- Added ability to limit max number of engine channels in use (Issue-11)
- Fixed interoperability with Cisco Gateway with the support of "mode" attribute in RTSP transport header (Sadeek Kheer)
- Added ability to get MRCP version of the channel from plugins (Vali)
- Added ability to configure custom, plugin dependent attributes from unimrcpserver.xml (Vali)
- Integrated "telephone-event" support into offer/answer
- Applied patch, which basically implements RFC4733/RFC2833 sender procedure (Chaitanya, Issue-31)
- Applied patch, which implements utility functions to transform DTMF characters and event identifiers (Vali, Issue-31)
- Fixed interoperability with GVP. The response to RTSP DESCRIBE request shouldn't contain RTSP Transport header (Vali, Issue-39).
- Fixed possible access violation in APT logger (Vali, Issue-40)
- Fixed trailing space in MRCPv2 response-line, interoperability with Optimsys (Roger)
- Reworked MPF context entity
- Supported multiple MPF transactions (sub-messages) compound in one message
- Fixed race condition issue in PocketSphinx plugin (Alban)
- Some MRCP servers "lie" about existing connections (Asackheim, Issue-41)
- Supported multiple "cmid" attributes per each control m-line
- Added MPF object derived entities such as mixer (n-sources, 1-sink) and multiplier (1-source, n-sinks)
- Test whether an engine opened successfully (Vali, Issue-42)
- Dropped any further requests from application if session is being terminated
- Separated user interface (what MRCP server uses) and implementation (what plugins implement) of MRCP engines.
- Introduced MRCP_PLUGIN_VERSION_DECLARE macro, which is required for the plugins
- Fixed C++ compile error in codec_descriptor.h (Vali, Issue-44)
- Provided better apr-iconv support in VC build (Vali, Issue-45)
- Fixed crash of client stack caused by race condition on session termination (Garmt, Adam, Issue-33)
- Implicitly modify initial offer (RTSP/MRCPv1), if it contains disabled media stream (Vali)
- Added a user level function to associate (de-associate) external object with the session (Randy)
- Fixed APR_ARRAY_IDX related issue in apt_pair (Anthony)
- Fixed plugin_version_hdr in configure.ac (John)
- Added new, configurable umc application based on libunimrcpclient library
- Added support for grammars supplied inline within RECOGNIZE request in PocketSphinx plugin (HuaJGuo, Issue-43)
- Sharing RTSP session among resources (Vali, Issue-46)
- Returned JB_DISCARD_TOO_EARLY if jitter buffer is full (Anthony)
- The RECOGNIZE message must only inherit the no redefined SET-PARAMS headers (Anthony, Issue-47)

Thanks for using UniMRCP.

Arsen Chaloyan
The author of UniMRCP

Announcement Group

Subscribe to the Announcements Group if you prefer to receive news and press releases only. Please note that announcements are normally posted to the Discussion Group as well.