Recent site activity


UniMRCP Dependencies 1.2.0 Released

posted Dec 9, 2013, 2:25 PM by Arsen Chaloyan   [ updated Dec 9, 2013, 5:30 PM ]

The UniMRCP dependencies package 1.2.0 has been released and can be downloaded from the following location:

This package is intended to accompany the upcoming UniMRCP 1.2.0 release and is also compatible with the current and former versions of UniMRCP.

There are a number of improvements in all the components included in this package. The APR and APR-util libraries have been upgraded to the latest versions 1.5.0 and 1.5.3 respectively. A warning-less build has been achieved on/for all the supported platforms. The project files for VS2005 and VS2010 have been cleaned up. This package also supports Platform Toolset v120 which comes with VS2013.

More complete changes made for this release are:

APR library
  • Rebased the APR library on top of version 1.5.0.
  • Added the support for VS2013 Platform Toolset v120 (patch #0002).
  • Fixed a cross-compilation issue on x86 for x64 target (patch #0003).
  • Corrected the script libapr.rc to support the Resource View (patch #0005).
APR-util library
  • Rebased the APR-util library on top of version 1.5.3.
  • Fixed a compilation warning for x64 target in apr_thread_pool.c (patch #0001).
  • Fixed compilation warnings for x64 target in the bundled expat library (patch #0002).
  • Corrected the script libaprutil.rc to support the Resource View (patch #0004).
Sofia-SIP library
  • Suppressed a false compilation warning in sres.c (patch #0006).
  • Fixed compilation warnings for x64 (patch #0007).
  • Added the support for VS2013 Platform Toolset v120 (patch #0010).
  • Fixed unconditional rebuilds in VS2010 and above (patch #0011).
  • Added a filter file for VS2010 (patch #0012).
  • Added a resource script libsofia_sip_ua.rc (patch #0014).
Pthreads-win32 library
  • Corrected the script version.rc to support the Resource View in VS2010 and above.
  • Excluded unused project files for APR and APR-util static libraries from the solution.
  • Added optional command-line arguments to the installer script
The original distributions of the libraries as well as all the patches made on top of them can be found at:
Thanks for using UniMRCP.

Arsen Chaloyan
Author of UniMRCP

UniMRCP Package for Asterisk 1.1.0 Released

posted May 29, 2013, 5:25 PM by Arsen Chaloyan

UniMRCP Package for Asterisk 1.1.0 has been released and can be downloaded from the following location:

The released package consists of the main software components listed below.
  • Asterisk 11.4.0
  • UniMRCP r1988 (> 1.1.0)
  • UniMRCP Dependencies 1.1.3
  • UniMRCP Modules for Asterisk 1.1.0

Besides the versions of Asterisk and UniMRCP included this package, the released UniMRCP modules for Asterisk are compatible with:

  • Asterisk 1.6, 1.8, 10, and 11
  • UniMRCP r1988 and above
This is a minor release which includes the following changes.

1. Generic Speech Recognition API (
  • Use the new NLSML parser interface to build ast_speech_result based on the parsed nlsml_result_t structure.
  • Added support for alternate interpretations (N-Best-List) as well as multiple instances per interpretation.
2. Dialplan Applications (

  2.1. MRCPSynth()
  • Added support for prompts referenced by a URI.
  • Differentiate the cases when synthesis is terminated due to an error or caller hang-up. In the latter case, the variable "SYNTHSTATUS" is set to the new status "INTERRUPTED".
  • Fixed a possible file handle leak.
  2.2. MRCPRecog()
  • Modified the default value of the option "i" (interrupt) in order to enable the DTMF support by default. In order to disable DTMFs, use the option i=disable. The other settings/values remain intact.
  • Added a new option "uer" (URI-encoded results). By default, this option is disabled (uer=0). If the option is enabled (uer=1), the variable "RECOG_RESULT" holds URI-encoded results. This matters in case of the AMI use.
  • If the application creation fails on start-up, set the corresponding variable "mrcprecog" to NULL.
  • Differentiate the cases when recognition is terminated due to an error or caller hang-up. In the latter case, the variable "RECOGSTATUS" is set to the new status "INTERRUPTED".
  • Dropped support for the barge-in handled on/by Asterisk (bargein=2). The option bargein can now simply be enabled (1) or disabled (0).
  • Set the dialplan variables "RECOG_COMPLETION_CAUSE", "RECOG_RESULT", and optionally "RECOG_WAVEFORM_URI" in accordance with the application SynthAndRecog().
  • Added support for the method "Start-Input-Timers".
  • Took out the input option "sit", since the header field "START-INPUT-TIMERS" is now set and controlled implicitly by the application.
  2.3. SynthAndRecog()
  • Added support for prompts referenced by a URI.
  • Added a new option "uer" (URI-encoded results). By default, this option is disabled (uer=0). If the option is enabled (uer=1), the variable "RECOG_RESULT" holds URI-encoded results. This matters in case of the AMI use.
  • Differentiate the cases when recognition is terminated due to an error or caller hang-up. In the latter case, the variable "RECOG_STATUS" is set to the new status "INTERRUPTED".
3. Miscellaneous
  • Terminate the MRCP session when negotiated codec descriptor cannot be retrieved by a user application.
  • Prevent a possible segfault of Asterisk caused by malformed input parameters (Issue-157).
  • Added a new enumeration speech_channel_status_t used by the applications to set the corresponding status variable on exit.
  • Fixed possible memory leaks in the processing of ast_frames.
  • Added new dialplan functions RECOG_CONFIDENCE(), RECOG_GRAMMAR(), RECOG_INPUT(), and RECOG_INSTANCE() to retrieve recognition results set by the applications MRCPRecog() and SynthAndRecog().
  • Updated the XML documentation of the dialplan applications and custom functions.
  • Improved the log statements.
  • Added more usage examples and helper macros which output recognition results by using the new dialplan functions.
  • Normalize application input arguments by stripping any leading and trailing whitespaces and skipping the quotes.

Thanks for using UniMRCP.

Arsen Chaloyan
Author of UniMRCP

UniMRCP Package for Asterisk 1.0.0 Released

posted Apr 1, 2013, 11:46 AM by Arsen Chaloyan

UniMRCP Package for Asterisk 1.0.0 has been released and can be downloaded from the following location:

This is the first major release of the Asterisk package which consists of the following main software components:
  • Asterisk 11.3.0
  • UniMRCP 1.1.0
  • UniMRCP Dependencies 1.1.3
  • UniMRCP Modules for Asterisk 1.0.0

The release adds new functionality and also fixes numerous quite notorious issues related to installation and use of the UniMRCP modules for Asterisk. While the package is shipped with Asterisk 11.3.0 and UniMRCP 1.1.0, the following versions are also supported:

  • Asterisk 1.4, 1.6, 1.8, 10, and 11
  • UniMRCP 1.0.0 and above

Note that since Asterisk is distributed under the GPLv2 license, and the UniMRCP modules are loaded by and directly interface with Asterisk, this and all consecutive versions of the UniMRCP modules for Asterisk will be released under terms of the GPLv2 license.

For instructions on how to install, configure, and use the package, see the updated document: UniMRCP for Asterisk. A PDF version of the document is also available.

See below for the changes included in this release.

1. Generic Speech Recognition API (
  • Handled change to the apt_log_file_open() function. Thanks J.W.F. Thirion.
  • Added the ability to implicitly stop an in-progress recognition request. Applied a reworked patch submitted to Issue-105. Thanks Borja.
  • Added support for loading and activating multiple grammars for a recognition request. Applied a reworked patch submitted to Issue-105. Thanks Borja.
  • Enhanced parsing of NLSML results. Applied a patch submitted to Issue-105. Thanks Borja.
  • Fixed support for built-in grammars. Thanks Renato.
2. Dialplan Applications (

  2.1. MRCPSynth()
  • Fixed a DTMF generator issue. Thanks J.W.F. Thirion.
  • Added the ability to load a plain text or an SSML content from the specified file. Applied a reworked patch submitted to Issue-151. Thanks Borja.
  2.2. MRCPRecog()
  • Fixed a misspelled name of the 'Input-Waveform-URI' header field.
  • Use the 'sl' option for the 'Sensitivity-Level' header field and 'spl' for 'Speech-Language'.
  • Fixed a crash in speech_channel_destroy(). Thanks Evan, Stephen, and Rodolfo.
  • Fixed a memory leak in processing of recognition results. A recognition result is now allocated from the channel memory pool using apr_pstrdup(). Otherwise, the duplicated string should have been explicitly freed.
  • Fixed the grammar type detection routine.
  • Added the ability to load a prompt and/or a grammar from the specified files.
  • Added support for loading and activating multiple grammars for a recognition request. The grammars can be specified as a comma-separated list of input parameters.
  • Added a new application option: exit-on-play-error "epe". If the option is enabled and the specified prompt file cannot be played, the application exits with the "RECOGSTATUS" variable set to "ERROR".
  2.3. SynthAndRecog()

    This is a new diaplan application which plays a synthesized prompt to the user and waits for speech to be recognized. The application supports the following features:
  • Plain text and SSML prompts.
  • Inline (SRGS XML, SRGS ABNF, JSGF), built-in, and URI grammars. Inline grammars can be loaded from a file. A list of comma-separated grammars can be used for a recognition request.
  • Barge-in, and an option for non-bargeinable prompts.
  • Recognition timers.
  • Recognition results.
3. Miscellaneous
  • Enhanced the version detection routine of Asterisk (asterisk.m4).
  • Added a new optional parameter to the configure script --with-asterisk-version, which allows to explicitly specify a version string in case the version cannot be determined or retrieved implicitly.
  • Included asterisk.m4 from acinclude.m4.
  • Added a new header file ast_compat_def.h, which provides backward compatible macros, definitions, and utility functions for Asterisk.
  • Added support for Asterisk 1.8, 10, and 11 to the modules res_speech-unimrcp and app_unimrcp. The former versions are also supported.
  • Added support for auto-generated XML doc files introduced since Asterisk 1.6. The XML doc files are generated from the corresponding tags declared in source files.
  • Split the module app_unimrcp into several integral parts. The source file app_unimrcp.c is now the entry point of the module, and the applications reside in separate source files.
  • Fixed loading of the configuration parameter "offer-new-connection" to accept both boolean "true" or "false" and integer "1" or "0" values.
  • Added a checking for pkg-config to the configure script.
  • Added a new sample dialplan applications file mrcp_sample_apps.conf which provides numerous usage examples. Removed the old file say-digit.conf.
  • For logging purposes, set the name of a UniMRCP session object to schannel->name.
  • Using transparent header fields to apply application options.
  • Retained backward compatibility with UniMRCP 1.0.0 and above, but dropped the support for earlier versions.
  • Updated the README file to include the statement for the GPLv2 license. Added the INSTALL and COPYING files.

Thanks for using UniMRCP.

Arsen Chaloyan
Author of UniMRCP

UniMRCP 1.1.0 Released

posted Mar 26, 2013, 11:00 AM by Arsen Chaloyan

UniMRCP 1.1.0 has been released and can be downloaded from the following location:

  •     Source Distribution
  •     Dependencies (based on APR-1.4.6, APR-Util-1.5.1, Sofia-SIP-1.12.11)

  •     Windows Installer (32 and 64-bit)
  •     Windows SDK Installer (32 and 64-bit)

This release includes the changes which have been available in the trunk for a long period of time. The major additions have been:
  • Support for Speaker Verification and Identification resource.
  • Support for Nuance Resource Manager (SIP redirection with 300 Multiple Choices).
  • Support for Visual Studio 2010.
  • Enhancements in the RTP jitter buffer.

There have been numerous other issues fixed. See below for a more complete change-log.
  • Added missing recognizer header fields used for voice enrollment (speaker-dependent recognition).
  • Added support for custom MRCP header fields.
  • Added init.d script. The script was originally submitted by pdeschen. Thanks.
  • The function apt_log_file_open() makes a copy of dir_pass and file_name variables passed from a user application.
  • Set the default profile name in umcscenarios.xml to "uni2".
  • In the PocketSphinx plugin, instead of using one common timeout for detection of speech activity and inactivity, use two different timeouts: one for activity and the other for inactivity detection.
  • In the recognition results sent from the PocketSphinx plugin, set both <instance> and <input> elements.
  • Added support for SIP redirection with 300 Multiple Choices used by the Nuance Resource Manager.
  • Added support for feature-tags set in the SIP Accept-Contact header field in an outgoing SIP INVITE message sent to the Nuance Resource Manager.
  • Use strcasecmp() instead of apr_strnatcasecmp() to match RTSP resource names (Issue-94).
  • Added support for speaker verification and identification resource.
  • Fixed a race condition in the PocketSphinx plugin which caused the server to crash.
  • Added sample 8kHz and 16 kHz voiceprints in the data directory which are used by the umc application for a sample verification scenario.
  • Added a new accessor function to the client API to get an audio stream associated with the specified channel. The function name is mrcp_application_audio_stream_get().
  • Added missing recognizer methods used for voice enrollment and interpretation.
  • Updated the state machine of the recognizer resource to take into consideration requests, responses and events used for interpretation.
  • Fixed the use of recognition timer in the PocketSphinx plugin.
  • Applied a patch to the apt_log routine which allows the log file to be appended instead of being overwritten. The patch was submitted by Dani. Thanks.
  • Added a new parameter to the function apt_log_file_open() which specifies whether the log file should be appended or overwritten.
  • Set an MRCP version specific completion cause in the PocketSphinx plugin.
  • Tweaked DTMF detector's energy thresholds to eliminate false positives during in-band (from audio) DTMF detection. Thanks Vali.
  • Added the ability to retrieve an external object associated with the MRCP session through the log handler (apt_log_ext_handler_f).
  • Fixed the formatting of float values in the header fields. Applied a patch submitted by Randy (Issue-108). Thanks.
  • Fixed an interoperability issue with AVP. The mid attribute is not required when the SDP contains only one m-line.
  • Fixed the processing of a response to the SIP OPTIONS request used for resource discovery (Issue-112).
  • Added mandatory attributes for the SSML <speak> element in the sample speak.xml file.
  • Took into consideration the RTP marker in order to re-sync the jitter buffer on a new talkspurt. Audio data loss could be experienced in the RTP receiver in case of consecutive SPEAK (for client) or RECOGNIZE (for server) requests.
  • Modified the "prepare" utility project to use the new location of PthreadVC2.dll which is now built from source with other dependencies.
  • Fixed the build of C++ MRCP plugins for platforms other than Win32. Thanks Vali.
  • Instead of discarding a non-aligned RTP packet, adjust the timestamp and write available frames to the jitter buffer (Issue-122).
  • Fixed a crash in the RTSP client stack when the server closes a TCP connection while the associated RTSP session is being destroyed (Issue-124).
  • Fixed the processing of RTSP TEARDOWN requests being timed out. Applied a patch submitted to Issue-125 by Chris. Thanks.
  • Took out unused tags (variables) to compile with Sofia-SIP 1.12.11.
  • Added support for Visual Studio 2010.
  • Fixed apt_log_output_mode_check() which returned TRUE if any mode was enabled or checked regardless their correspondence. Thanks Vali.
  • Added a new constructor function unimrcp_client_create2() which allows to pass the client XML configuration not by a file, but rather by a string parameter. Thanks Vali.
  • Added the ability to take and use parameters set by the plugin in a response to the GET-PARAMS request. Thanks Vali.
  • Fixed the processing of more than one pending application requests upon reception of a SIP BYE message from the server.
  • Enhanced the debug output by adding task message identifier to the log statements "Signal Message" and "Process Message".
  • Fixed a potential crash related to the use of pollsets.
  • Added support for Sofia-SIP's TPTAG_LOG() and TPTAG_DUMP() tags which can be enabled from the client and server configuration to print out and/or dump SIP messages.
  • Fixed the loading of the client configuration parameter <offer-new-connection>.
  • Added support for the adaptive jitter buffer. Applied a reworked patch submitted by Erik. Thanks.
  • Enhanced the detection of a new RTP talkspurt by implicitly setting the RTP marker if a gap between two RTP packets is more than the specified threshold (INTER_TALSKPUSRT_GAP = 1000 msec).
  • Allow the initial playout delay in the jitter buffer to be set to 0.
  • Implemented a time skew detection algorithm for RTP streams. The detection can be enabled and used for both the adaptive and static jitter buffer.
  • Added support for redirection of RTP traces (RTP_TRACE, JB_TRACE) to the debug output window of Visual Studio.
  • Modified the MPF test application to read a raw PCM data from one file, transmit it over RTP, and write the data back to another file.
  • Enhanced helper functions which operate on the MRCP header to properly set, get and inherit header fields (Issue-110).
  • Set the libtool parameters link_all_deplibs and link_all_deplibs_CXX to "yes" by default, with an option to disable them (--disable-interlib-deps), if ever needed. This fixes a link error on recent Debian/Ubuntu distributions.
  • Enhanced the processing of the RTP named events.
  • Enhanced the UniMRCP Windows service manager. Thanks Vali.
  • Added support for a binary recognition grammar used in RecogScenario by the sample umc application. Thanks Vali.
  • Fixed a potential buffer overflow in apt_text_pair_array_insert(). Thanks Vali.
  • Modified the apr.m4 and apu.m4 macros to use '--link-ld' instead of '--link-libtool --libs' for the APR library dependencies. This addresses the problem with a wrong -L path to the expat library.
  • Set prerequisite version for autoconf to 2.59.
  • Added a checking for pkg-config to the configure script.
  • For logging purposes, pass a string identifier of the RTSP/MRCPv1 signaling agent to the RTSP client and server stacks.
  • Remove a socket descriptor from the pollset only if the descriptor has been properly added to the pollset. Otherwise, this operation could cause a crash.
  • Respond to client user application requests with failure if a new session couldn't be created due to an error in initialization of the SIP stack (Issue-127).
  • Added a sample SRGS ABNF grammar to the data directory.
  • When originating an offer from the client, take into account capabilities of an audio stream created by the client user application.
  • Added a new function to the client API to retrieve a SIP/RTSP response code received from the server (Issue-90). The support is incomplete.
  • Added a new option (-v or --version) to the unimrcpserver as well as the sample umc and unimrcpclient applications.
  • Corrected FileType in Windows resources from DLL to APP. Thanks Vali.
  • Added a Windows resource file for the unimrcpservice application.

The client application and plugin integration interfaces retain backward compatibility. Everybody is encouraged to upgrade.

Thanks for using UniMRCP.

Arsen Chaloyan
Author of UniMRCP

Loquendo and UniMRCP Enable Creation of Multilingual Speech Applications for Asterisk

posted Dec 7, 2010, 10:51 AM by Arsen Chaloyan

Certified Interoperability of Loquendo MRCP Server with UniMRCP Connector Bridge.

Loquendo, a leading provider of speech technologies worldwide, and UniMRCP, an open source MRCP project, announce the interoperability of the Loquendo MRCP Server (in its version LSS 7.0) with the Asterisk open source IP telephony platform via the UniMRCP Connector Bridge. The integration is based on MRCP (Media Resource Control Protocol), the widely adopted IETF protocol.

Loquendo MRCP Server supporting MRCP v1 and v2, both for Windows and Linux, is a server solution for speech-enabling large-scale telephony applications, such as contact centers and message reading services. Loquendo MRCP ServerIt enables enterprises to significantly reduce costs by interacting with customers via a speech interface - reliable, natural and intuitive to use.

UniMRCP is an open source cross-platform MRCP project, which provides everything required for the implementation and deployment of both an MRCP client and an MRCP server. UniMRCP encapsulates SIP/MRCPv2, RTSP, SDP and RTP/RTCP stacks and provides integrators with an MRCP v1 and v2 user level API.

Loquendo has certified the interoperability of its ASR and TTS, integrated via Loquendo MRCP Server, with the UniMRCP Connector Bridge. Loquendo speech technologies are thus available for enriching and simplifying large-scale telephony deployments on the widely adopted Asterisk Platform, such as IP PBX systems, VoIP gateways, conference servers, etc.

The interoperability with UniMRCP enables integrators to exploit the whole range of Loquendo ASR and TTS functionalities by means of a client-server architecture - flexible, standards-based, supporting multiple operating systems, and so greatly reducing overheads for your customer in terms of hardware investments and maintenance by hosting speech resources on a dedicated server.

“I am always looking to expand the list of MRCP vendors the UniMRCP project is known to work with. The successful interoperability with a speech technology leader such as Loquendo is a very valuable event for the UniMRCP community. Loquendo's voices sound natural, and the recognition results are always accurate,” says Arsen Chaloyan, author of UniMRCP.

“The UniMRCP project is an important initiative which has proved itself to be of invaluable assistance to speech technology providers and integrators of telephony solutions,” says Roberto Pacifici, Product Manager for Loquendo MRCP Server. “This integration makes Loquendo speech technologies, in all 30 languages, available for the Asterisk environment enabling rapid deployment of custom solutions for large-scale, speech-enabled telephony deployments for call centers, self-service applications, auto attendants, and much more.”

See the UniMRCP Connector Bridge press release.


About UniMRCP
An open source MRCP Project:
Contact Arsen Chaloyan:


About Loquendo
Awarded Speech Industry ‘Market Leader’ for the past four consecutive years, Loquendo provides a complete range of speech technologies for server, embedded and desktop solutions – in 30 languages with 72 voices, and constantly growing.

Loquendo TTS, Loquendo ASR and Loquendo Speaker Verification empower people to interact with technology in the most natural way possible – using their voice – creating a next-generation client experience while saving businesses millions each year. Also integrable via the Loquendo MRCP Server and VoxNauta VoiceXML, CCXML & SCXML platform, Loquendo speech technologies power millions of calls every day in the telecommunications and enterprise markets across the globe. Loquendo TTS and ASR are also available as Loquendo Embedded Technologies, deployed in more than 14 million devices worldwide in embedded and mobile environments.

Loquendo is a Telecom Italia company headquartered in Turin, Italy, with offices in the US, UK, Spain, Germany and France, and a global network of partners. For more info, and to hear Loquendo TTS for yourself, go to

Speaker Verification and Identification Resource Supported

posted Aug 30, 2010, 9:04 AM by Arsen Chaloyan

I would like to announce the availability of the speaker verification and identification resource for the UniMRCP project.

Speaker verification is a voice authentication methodology that can be used to identify the speaker in order to grant access to sensitive information and transactions. In speaker verification, a recorded utterance is compared to a previously stored voiceprint which is in turn associated with a claimed identity for that user.

Speaker identification is the process of associating an unknown speaker with a member in a population. It does not employ a claim of identity.

This addition allows applications utilizing the UniMRCP client stack to use verifiers and identifiers residing on the MRCPv2 compliant servers. Also, verification and identification engines can be integrated into the UniMRCP server as plugins.

In the meantime, a typical verification scenario, integrated into the UMC client application as well as a simulated, demo verification engine, plugged in the UniMRCP server have already been implemented and available in the trunk. To initiate a sample verification scenario from the UMC client application, do the following

- upgrade to the trunk (r1778)
- upgrade your current configuration (unimrcpclient.xml, unimrcpserver.xml and umcscenarios.xml may need to be upgraded) or just use the default configuration files
- input "run verify" from the UMC console:

Thanks for using UniMRCP.

Arsen Chaloyan
The author of UniMRCP

Asterisk Connector Bridge 0.3.0 Released

posted Jul 14, 2010, 11:47 PM by Arsen Chaloyan

I would like to announce the new release of UniMRCP connector bridge for Asterisk.

The connector bridge is prepackaged with the latest Asterisk- and UniMRCP-r1744 (> 1.0.0). However, previous versions of Asterisk and UniMRCP are supported as well. This release contains several enhancements in both res_speech_unimrcp and app_unimrcp modules.

Changes in res_speech_unimrcp include
  • Made an enhancement to SpeechLoadGrammar to be able to specify an input grammar as a URI too. (Raymond)
  • Fixed compilation of res-speech-unimrcp module for Asterisk 1.4.
  • Fixed processing of Set-Input-Timers header field.
  • Set an interpreted result based on the <instance> element instead of the <input> one.

Changes in app_unimrcp include
  • Changes required for version 1.2 of Asterisk (Issue-64, Igor, Derik)
  • Added missing '{' to compile with the released UniMRCP version too. (Issue-65, Igor)
  • Bug fix to check if codec descriptor could be obtained (Derik)
  • Added support for ABNF grammar (Issue-76, Assanta, Derik)
  • Bug fix to speech_channel_destroy (Issue-72, Assanta, Derik)
  • Addition of request-timeout configuration parameter (Derik)
  • Bug fix to address issue 80  - checking for speech channel state while waiting for audio frames in MRCPRecog (Assanta, Derik)
  • Removed incorrect check for resf which was fixed at -1 anyway (Assanta, Derik)
  • Added SYNTHSTATUS and RECOGSTATUS variables so that problems can be detected in the dialplan (Assanta, Derik)

The released package can be downloaded from

For the installation, configuration and usage please refer to the wiki page

Thanks for using UniMRCP.

Arsen Chaloyan
The author of UniMRCP

UniMRCP Announces Interoperability with STC

posted Jul 8, 2010, 6:58 AM by Arsen Chaloyan

UniMRCP announces the successful interoperability between its MRCP client and VoiceNavigator, an IVR solution developed by STC. Comprehensive certification tests guarantee excellent and fully compliant operation between products utilizing the UniMRCP client stack and VoiceNavigator.

VoiceNavigator is a cutting-edge IVR solution especially designed for the Russian language. It is based on powerful and reliable speech recognition and synthesis technologies developed by STC, the world leader in speech technologies for Russian.

Recognized as the “best product of the year – 2010” at the Moscow CCWF-2010, STC has got many requests from Asterisk users. In order to meet the customer demand, STC has ensured full interoperability between VoiceNavigator and popular open source softswitches such as Asterisk and FreeSWITCH using  UniMRCP’s unique and comprehensive set of connectivity options.

For more information, you may also check the following:

Arsen Chaloyan
The author of UniMRCP

UniMRCP 1.0.0 Released

posted Jun 3, 2010, 3:21 AM by Arsen Chaloyan

I'm proud to announce the first major release of UniMRCP 1.0.0 r1725.

This release is a result of the development continuously lasting more than two years. The open source initiative works. There have been a number of successful deployments since 0.7.0 release. I cannot recall any major API change or an outstanding issue encountered meanwhile. All these make me think it is the time for 1.0.0 now.

On the other side, this is just another recurrent release, which as usual introduces several enhancements and fixes. The major enhancement is in the support of transparent header fields. While the old API to set/get the header fields by numeric identifiers remains intact, the new methods are added to manipulate with the header fields using string identifiers.

Changes since previous release 0.10.0 r1577 include

  • Set the length of the processed line even if it's not properly terminated (Issue-77, Anthony)
  • Cancel an MRCP request sent by the application, if there is no MRCPv2 connection established from the client to the server.
  • RTCP reports could wrongly indicate 1 lost packet, when there were no RTP packets received.
  • Enhanced umc application to demonstrate how to match a request with its response.
  • Added an ability to STOP current request from the command line of umc application.
  • Added the number of discarded and ignored packets to "Close RTP Receiver" trace. (Anthony)
  • Supported transparent header fields. (Vlad)
  • Supported white spaces in the header fields, where WSP = SP / HTAB.
  • Supported line folding in the header fields (a record spanning multiple lines).
  • Used the "const" qualifier where applicable.
  • Implemented an option to mask private data in the logs. (Issue-81, Randy )
  • Fixed re-introduced message segmentation related issues. (Issue-86, Anthony)
  • Modified multipart content generation and parsing to support content-id as well as other arbitrary header fields included in an individual content part. (Anthony)
  • Added new methods to task interface to be able to handle start-request and terminate-request events.
  • Made open/close methods of the engines/plugins asynchronous. (Anthony)
  • Fixed a header field creation from the entire text line. (Issue-88, Vlad)
  • Added a new method to codec interface to initialize or fill the specified frame with silence.
  • Ensured a media frame read out of the null bridge to be always initialized. It should be filled with the silence at least.
  • Initialized the resource location attribute with an empty string, if <resource-location> element is empty.
  • Revised several debug traces.
  • Added an option to set an informative name to the session being created by the client application. This name is passed along to the other objects created in the scope of the same session and is used for debugging.
  • Provided the identifiers of the objects upon creation. Typical objects are engines, agents etc. This allows to further track those objects during their lifetime.
  • Added the copyright and the license related information to uni_version.h; made uni_version.h independent from apr_version.h.
  • Added Windows resource files for the following applications: umc, unimrcpclient, unimrcpserver. Those resources files include  version, license and copyright related information. (Issue-83, Patrick)
  • Added missing dependencies to be able to build the projects from the command line or using the IDE with disabled "Link Library Dependencies" option. (Issue-84, Patrick)
  • Upgraded the dependency package to include the recent APR-1.4.2 version.

You may stick with the older versions, if needed; but of course, you are all are encouraged to upgrade.

  • Source Distribution

  • Windows Installers (32-bit and 64-bit)

  • Windows SDK Installers (32-bit and 64-bit)

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

Thanks for using UniMRCP.

Arsen Chaloyan
The author of UniMRCP

Public MRCP Server and Partnership Possibilities

posted Apr 20, 2010, 3:26 AM by Arsen Chaloyan

I want to explore in more details one of the basis ideas, which is getting more and more mature. The idea is simple and clear enough to build and/or launch a public MRCP server. The word "public" has  the following meanings in this scope.

1. Multilingual and Nationwide MRCP Server
As you know, I have provided an interface to plug 3-rd party TTS and ASR engines into UniMRCP server. I may only wonder how many plugins have already been written and exist nowadays. To recall, there have been contacts from all the continents from East to West and South to North. If we could unite all these, it would be indeed a unique solution, which speaks and recognizes so many languages.

2. Globally Accessible MRCP Server
The mentioned above solution can also be globally accessible from everywhere in the world provided as a software as a service (SaaS). While MRCP servers are usually deployed with MRCP clients located on the same LAN and this is still a typical approach, there are many use cases, where a publicly available MRCP server can be quite useful. Note that there are a few MRCP aware devices today and there will be more tomorrow.

Although we have almost all the required components now and an ability to turn this undertaking into a truly success, there is still a certain way to go.
I'm looking forward to a robust and mutually beneficial partnership with TTS and ASR vendors which might be interested in this idea. Feel free to express your thoughts either publicly or contact me off-list.

Thanks for using UniMRCP.

Arsen Chaloyan
The author of UniMRCP

1-10 of 36