posted Nov 19, 2009 5:16 AM by Arsen Chaloyan
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
|
posted Nov 4, 2009 5:56 AM by Arsen Chaloyan
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 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. -- Arsen Chaloyan The author of UniMRCP http://www.unimrcp.org |
posted Oct 19, 2009 12:31 AM by Arsen Chaloyan
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
|
posted Jul 22, 2009 9:30 PM by Arsen Chaloyan
UniMRCP 0.7.0 (r1064) has been released and now is available for download. Source Distribution http://unimrcp.googlecode.com/files/unimrcp-0.7.0.tar.gz
http://unimrcp.googlecode.com/files/unimrcp-0.7.0.zip Windows Installer http://unimrcp.googlecode.com/files/unimrcp-0.7.0.exe
Windows SDK Installer http://unimrcp.googlecode.com/files/unimrcp-sdk-0.7.0.exe Dependency Packages
http://unimrcp.googlecode.com/files/unimrcp-deps.tar.gz http://unimrcp.googlecode.com/files/unimrcp-deps.zip
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 |
posted Jul 7, 2009 8:17 AM by Arsen Chaloyan
I would like to announce the availability of Flite TTS plugin for UniMRCP server.
Special thanks goes to Garmt, who initially contributed and helped develop the plugin.
Currently supported TTS features are as follows:
English voices:
Methods:
- SPEAK
- STOP
- PAUSE
- RESUME
- BARGE-IN-OCCURRED
Events:
Synthesizer Speech Data:
For the instructions on how to build and configure Flite with UniMRCP refer to
http://code.google.com/p/unimrcp/wiki/FlitePlugin
Please note, everything is working now, nevertheless this is basic availability only.
I have mostly tested the integrated solution in the following setup
SIPPhone -> FreeSWITCH/UniMRCPClient -> UniMRCPServer/Flite
Feedback is welcome.
Thanks, -- Arsen Chaloyan The author of UniMRCP http://www.unimrcp.org
|
posted Jul 1, 2009 12:59 AM by Arsen Chaloyan
I would like to announce the availability of PocketSphinx ASR plugin for UniMRCP server. PocketSphinx UniMRCP server can be used with an MRCP compliant client, which supports JSGF grammar. Currently supported ASR features are as follows: Methods: - DEFINE-GRAMMAR
- RECOGNIZE
- GET-RESULT
- START-INPUT-TIMERS
- STOP
Events: - START-OF-INPUT
- RECOGNITION-COMPLETE
Headers: - Noinput-Timeout
- Recognition-Timeout
- Completion-Cause
- Completion-Reason
- Save-Waveform
Grammar: JSGF For the instructions on how to build and configure PocketSphinx with UniMRCP refer to http://code.google.com/p/unimrcp/wiki/PocketSphinxPluginPlease note, everything is working now, nevertheless this is basic availability only. I have mostly tested the integrated solution in the following setup SipPhone -> FreeSWITCH/UniMRCPClient -> UniMRCPServer/PocketSphinx
However it requires further testing in different environments from different speakers, e.t.c. In other words, your feedback is welcome.
Thanks, -- Arsen Chaloyan The author of UniMRCP http://www.unimrcp.org |
posted May 11, 2009 1:23 PM by Arsen Chaloyan
UniMRCP 0.6.0 (r930) has been released and now is available for download.
Source Distribution http://unimrcp.googlecode.com/files/unimrcp-0.6.0.tar.gz http://unimrcp.googlecode.com/files/unimrcp-0.6.0.zip
Windows Installer http://unimrcp.googlecode.com/files/unimrcp-0.6.0.exe
Windows SDK Installer http://unimrcp.googlecode.com/files/unimrcp-sdk-0.6.0.exe
Windows Installer has been built using - APR-1.2.12 - Sofia-SIP-1.12.10 + patch submitted to issue-25 - Visual Studio 2005 (release build)
This is a bug fix release, which contains mostly backward compatible minor API changes.
Changes since previous release 0.5.0 (r828) include: - Modifications on MRCP headers (Patrick, issue-17) - Fixed crash of client stack in case of error, when answer contains no SDP - NAT related enhancements (Garmt, issue-12) - Enhancements of prosody-volume and prosody-rate params (Bayram, issue-18) - Fixed string tables of MRCP headers - Fixed processing of DEFINE-LEXICON request (Mahmoud) - Fixed processing of consecutive SPEAK and STOP requests (Mahmoud, issue-23) - Added support for resource discovery (SIP OPTIONS and RTSP DESCRIBE) in server stack (Bayram, issue-19) - Fixed potential dead lock in MPF layer - Added CSeq header field in RTSP Announce event generated by server (dbansal, issue-21) - Enhanced MPF layer to avoid additional transformations when possible (virtualson) - Reworked RTSP client stack, fixed interoperability with Acapela MRCPv1 server (Garik, issue-22) - Added resource discovery API to client stack (chaojenh, issue-24) - Fixed crash on Ubuntu 64bit (Chaitanya) - Fixed sporadic crash, while referencing dangling pointer in network client/server stacks (Garik) - Fixed file handle leak in demo synthesizer plugin - Modified the logger to be able to create and use the same singleton object in core and plugins (Garmt) - Fixed several valgrind warnings related to memory initialization and usage
Thanks for using UniMRCP. Arsen Chaloyan
|
posted May 7, 2009 12:34 AM by Arsen Chaloyan
I would like to present the ecosystem of the project I thought about recently. I used to focus primary on the software development, which is definitely crucial task towards successful project, but still is not enough. I want to establish an ecosystem which will "work" for all of us. The key components are: 1. Community The role of community in an open source project development is evidence. I have been trying to build robust community around the project. The community is not so big and active at the moment, but at least it keeps growing. I really welcome and appreciate everybody's input. 2. Sponsorship Sponsorship ensures the health, sustainability and encourages growth of the project www.unimrcp.org/sponsorship 3. Partnership I'm looking forward for technology related partnership in order to deliver complete, seamlessly integrated and carefully tested solutions. www.unimrcp.org/partnership 4. Services Commercial support packages insure the successful deployment of the projects you develop. Custom development options are also available. www.unimrcp.org/services This is just the way I see the project can be further evolved. Actually nothing is going to be changed dramatically. Meantime please feel free to discuss any suggestions and thoughts you may have. Arsen Chaloyan. The creator of UniMRCP. www.unimrcp.org |
posted Apr 14, 2009 10:51 AM by Arsen Chaloyan
posted Mar 26, 2009 12:09 PM by Arsen Chaloyan
I would like to announce the successful interoperability between UniMRCP client and LumenVox ASR MRCPv2 server. This is the follow up to the successful MRCPv1 interoperability. UniMRCP client stack can be used as a building block to provide connectivity to LumenVox MRCPv1 and/or MRCPv2 servers. Please check out the Wiki page dedicated to the LumenVox interoperability. http://code.google.com/p/unimrcp/wiki/LumenVoxInterop It provides typical configurations and sample network captures. You may also add comments and share your experience there. LumenVox - Automatic Speech Recognition Vendor (www.lumenvox.com) UniMRCP - Open Source MRCP Project (www.unimrcp.org) Thanks, Arsen. |
|