This
release introduces revamped configuration format. The new format allows
to use profiles in more flexible way. Also, it addresses XML
conformance issues. Corresponding XML schemas are available as well.
Please upgrade your local configuration files as the old format is no
longer valid.
The other major addition is the implementation of request timers.
It aims to address a potential vulnerability of the UniMRCP client
stack in case there is no response back from an MRCP server. RTSP,
MRCPv2 request timeouts as well as several SIP timeouts are
configurable now.
Yet another interesting addition is an utility tool called svnrev,
which allows to generate uni_revision.h header file containing SVN
revision number and build stamp. Although this tool has basically been
integrated into VS and GNU build, it's experimental and probably
informative only yet.
Changes since previous release 0.9.0 r1383 include
Enhanced
MRCP, RTSP parsers to be able to process messages with headers, which
don't entirely fit the read buffer. The issue encountered on processing
of a huge number of vendor specific parameters included in the response
to GET-PARAMS request. (Issue-57, Vlad)
Disabled simultaneous termination of tasks. Now tasks are terminated one by one. (Issue-56, Derik)
Fixed apt_pair_parse() to copy name/value strings from the stream.
Fixed possible stack overflow on the construction of log entries. Log entries are limited with 4096 bytes.
Added a sample scenario to umc application to show how SET-PARAMS and GET-PARAMS methods should be used.
Fixed RTSP client stack crash while processing the response to final TEARDOWN request. (Issue-60, Chris)
Provided an option to adjust size of buffers used to receive/transmit MRCPv2 messages. (Issue-57, Vlad)
Added the main page for doxygen generated documentation. (Vali)
Implemented an option to trace current thread identifier in the logs. (Anthony)
Checked playout delay to be codec frame aligned. (Shy)
Fixed remote address in the trace for "Close RTP Transmitter".
Revised C/C++ header guards not to violate naming convention of the C standard. (Issue-62, Markus)
Added SVN keyword Id to all the source files to be automatically
expanded on each commit with the revision number and stamp of the file.
Fixed access violation while reading server config. (Issue-66, Vali)
Enhanced detection of Flite configuration. (Issue-67, nombrandue)
Added logger.xml configuration file to load the settings of logger from.
Added missing mpf_codec_open() and mpf_codec_close() calls, which might be required for integration of new codecs. (Shy)
Added multipart content generator and parser.
Enhanced asrclient library built on top of libunimrcpclient to provide streaming interface as an alternative to file input.
Introduced generic timer queue and poller task.
Removed no longer referenced net client and server tasks.
Fixed UniMRCP server crash in case there is no MPF engine configured for the MRCPv1 profile. (Issue-74, Anthony)
Increased XML_FILE_BUFFER_LENGTH to ensure configuration files fit the buffer.
Revised task and inter-task communication related debug traces.
I would like to announce the second release of UniMRCP connector bridge for Asterisk.
The connector bridge is prepackaged with Asterisk-1.6.1.14 and UniMRCP-r1456 (> 0.9.0). These are the recommended versions to use, though other versions are also supported.
This release contains a few enhancements in speech resource module (res_speech_unimrcp), which implements the Generic Speech Recognition API of Asterisk. * Added internal configuration file (/etc/asterisk/res-speech-unimrcp.conf) with further reference to UniMRCP client configuration. * Supported various recognition grammars including builtin grammar, text/uri-list, multipart/mixed and everything else. * Added an option to preload grammars for a channel * Added an option to set properties (MRCP header fields) for a channel
It also introduces a new and great application module (app_unimrcp) gracefully contributed and actively maintained by J.W.F. Thirion <derik@molo.co.za> Molo Afrika Speech Technologies (Pty) Ltd.
Asterisk dialplan applications are: * MRCPSynth - text to speech, * MRCPRecog - speech recognition
The released package can be downloaded from http://unimrcp.googlecode.com/files/uni-ast-package-0.2.0.tar.gz
For the installation, configuration and usage please refer to the wiki page http://code.google.com/p/unimrcp/wiki/asteriskUniMRCP
Feel free to participate in the discussions with the questions and issues you may have http://groups.google.com/group/unimrcp
Thanks for using UniMRCP,
-- Arsen Chaloyan The author of UniMRCP http://www.unimrcp.org
posted Jan 5, 2010 2:04 PM by Arsen Chaloyan
[
updated Jan 6, 2010 9:44 PM
]
UniMRCP 0.9.0 (r1383) has been released and now is available for download.
Source Distribution http://unimrcp.googlecode.com/files/unimrcp-0.9.0.tar.gz http://unimrcp.googlecode.com/files/unimrcp-0.9.0.zip
Windows Installers (32-bit and 64-bit) http://unimrcp.googlecode.com/files/unimrcp-0.9.0.exe http://unimrcp.googlecode.com/files/unimrcp-x64-0.9.0.exe
Windows SDK Installers (32-bit and 64-bit) http://unimrcp.googlecode.com/files/unimrcp-sdk-0.9.0.exe http://unimrcp.googlecode.com/files/unimrcp-x64-sdk-0.9.0.exe
Dependency Packages (based on APR-1.3.8, APR-Util-1.3.9, Sofia-SIP-1.12.10) http://unimrcp.googlecode.com/files/unimrcp-deps-0.8.0.tar.gz http://unimrcp.googlecode.com/files/unimrcp-deps-0.8.0.zip
This release introduces new major features such as - Implementation of MRCP recorder resource - Support for RFC4733/RFC2833 out-of-band and in-band DTMF generation and detection - Implementation of RTCP stack (Nuance compliance) - Support for 64-bit platforms
For the first time 64-bit Windows binaries are available as well. Please note, 64-bit UniMRCP can be installed only on 64-bit OS, while 64-bit UniMRCP SDK can be installed on both 32-bit and 64-bit. This allows you to develop 64-bit applications even on 32-bit OS.
Changes since previous release 0.8.0 (r1199) include - Added compile time define to support "too long" MRCP request identifiers (Issue-48, Vali) - Fixed race condition on client stack initialization (Issue-49, Aabaziev) - Re-factored abstract MRCP resource entity - Loaded MRCP resources from config (unimrcpclient.xml and unimrcpserver.xml must be updated) - Added a few accessors to mrcp_application interface in order to completely hide session interface from the application context. - Properly processed nua's shutdown (John) - Fixed function prototypes to compile without warnings with -Wstrict-prototypes gcc option (John) - Fixed a few RTSP/MRCPv1 session management related issues (Issue-51, Vali) - Fixed core dump with large in-line grammars (Issue-52, Asackheim) - Added recorder plugin and sample recorder scenario/session - Added DTMF generator and detector (Vali) - Added sample DTMF recognizer scenario/session - Reworked timer/clock related entities, added scheduler entity - Fixed build warnings from sun studio (Mike) - Supported both synchronous and asynchronous start of client stack. - Fixed memory (resource) leak on client/server task termination. Threads MUST be detached first in case of async task termination (Issue-53, Derik) - Installed uni_version.h alongside with other header files required for the integration - Added x64 platform configuration to VS2005 build - Fixed compilation warnings using 64-bit compilers - Updated inno-setup scripts to be able to build both win32 (x86) and x64 (x86-64) installers.
Thanks for using UniMRCP.
-- Arsen Chaloyan The author of UniMRCP http://www.unimrcp.org
Happy New Year! This is the greeting, which is likely said and heard many times during the days. It's a good tradition and time when we may summarize activity done during the previous year and setup some goals for the new year.
The project continued to evolve during 2009, despite of the global financial crisis and resulted difficulties. There were scheduled and periodically released five versions of UniMRCP, which introduced new features, provided bug fixes and ensured stability. Integration with well know open source telephony platforms, utilization by several corporates, support contracts, custom development options and my strong desire keep the project going. This makes me think about the first major release of UniMRCP in 2010, which would be another value added release indicated a certain milestone. I'll follow up with the next 0.9 version during the days and come up with a few suggestions, proposals thereafter during this month.
Also it seems I've got another good tradition to polish the website of the project a bit during the holidays. Please checkout the new face.
Let it be a successful and prosperous year for all of us! -- Arsen Chaloyan The author of UniMRCP http://www.unimrcp.org
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. ./configure make make install
It's possible to cross-compile for 64-bit even on 32-bit Linux CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 ./configure make 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 http://www.unimrcp.org
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 http://unimrcp.googlecode.com/files/uni-ast-package.tar.gz
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 http://www.unimrcp.org
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 http://www.unimrcp.org
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 storage. 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.
UniMRCP 0.8.0 (r1199) has been released and now is available for download.
Source Distribution http://unimrcp.googlecode.com/files/unimrcp-0.8.0.tar.gz http://unimrcp.googlecode.com/files/unimrcp-0.8.0.zip
Windows Installer http://unimrcp.googlecode.com/files/unimrcp-0.8.0.exe
Windows SDK Installer http://unimrcp.googlecode.com/files/unimrcp-sdk-0.8.0.exe
Dependency Packages (based on APR-1.3.8, APR-Util-1.3.9, Sofia-SIP-1.12.10) http://unimrcp.googlecode.com/files/unimrcp-deps-0.8.0.tar.gz http://unimrcp.googlecode.com/files/unimrcp-deps-0.8.0.zip
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 http://www.unimrcp.org
This release fixes a few significant issues, which affect project usability under high load (stress testing).
It also introduces new ASR and TTS plugins based on open source PocketSphinx and Flite engines respectively.
Changes since previous release 0.6.0 (r930) include:
Using wakeable pollset in MRCPv2 server and client stacks
The terminate Remaining RTSP Sessions does not free all sessions (Anthony Masse, Issue-26)
Open log file in binary mode (Anthony Masse)
Allow trailing slash in RTSP URIs (V.Batrak)
Fixed crash while processing malformed SDP message
Failed to Find Channel errors (cpsoares, Issue-27)
Fixed the remaining issues related to message segmentation (Anthony Masse)
Fixed crash of client stack caused by race condition in mrcp-sofiasip module
Fixed potential crash of server stack (mrcp_session_destroy() should be called last)
Fixed potential crash of client stack (do not reference session object, since response to termination request has been sent)
Fixed conditial jump which depends on uninitialized value in mpf_decoder and mpf_encoder
Introduced wrappers around APR pool creators
Using rotation between multiple log files, instead of rollover in a single file (Anthony Masse)
Added LPCM codec as linear 16bit PCM codec in host order, while L16 is linear 16bit PCM codec in network order (Christopher Rienzo)
Added acinclude.m4 to allow autoreconf -i to work (Mike Jerris)
Fixed Mac OS X build (Mike Jerris)
Added PocketSphinx plugin
Added Flite plugin (Garmt)
Added the NOTICE file corresponding to the section 4 d of the Apache License (Jean-Michel Reghem)
RTP port management potential issues (cpsoares, Issue-34)
Decimal values in a mrcp_recog_header_t strangely rounded to the nearest tenth in the SET-PARAMS messages (Curatica, Issue-35)
Application freeze upon call to mrcp_client_shutdown (cpsoares, Issue-28)
Added basic NLSML document processor
Enhanced state machines to STOP in-progress SPEAK and RECOGNIZE requests on session termination
Stale MRCP sessions upon MRCP link disconnection (cpsoares, Issue-36)
Thread safe APR pools (cpsoares, Issue-29)
Thanks for using UniMRCP. --
Arsen Chaloyan The author of UniMRCP http://www.unimrcp.org