
[ Ivan Uemlianin ]: ----------------------------- |Dear All | |I am interested in writing an MRCP (Media Resource Control Protocol |[1]) server.
Great. I did that for a Brazilian company. It was not a full MRCP server, just enough to cope with their TTS needs. But I will be glad to give advice and help.
| In particular I want to write an MRCP speech recognition |resource server as part of my trefnydd [2] project.
That is about the opposite of what I have explored (synthesis) ;o)
| I am posting here to ask for advice about the network programming part.
My MRCP server followed [1], and was based on RTSP for session handling, instead of SIP.
|I shall also be writing an MRCP client (if only to test the server). |All the code will be GPL'd.
That is great. I hope I can contribute with that. The project we (me and João Chaves Jr) have worked on was proprietary software. That was an imposition from the client, and a source of great frustration for me. :o(
|As far as I understand it, an overview of the networking would go like |this: | |An MRCP session between client and server is initiated using the |Session Initiation Protocol (SIP).
The version I worked on, was based in RTSP not SIP. From the spec: """ This protocol is designed to work with streaming protocols like RTSP (Real Time Streaming Protocol) or SIP (Session Initiation Protocol) """
So if you need a MRCP server that is SIP-based for doing ASR, then I cannot help much since I have experience with a RTSP-based for doing TTS ;o) That does not mean I won't give advice if I have any worth giving!
|Client and server negotiate using |SIP messages containing SDP message bodies to define the participants |and the resources required in the session.
Correct.
|After session initiation, two channels are launched: a media channel | using RTP to carry binary audio (i.e., speech) data,
Right. I used a wrapper over JRTPLIB to handle RTP and RTCP.
| and a control channel using TCP (control |channel messages are text-based and in MRCP format).
Well, the RTSP-based verison used the same RTSP channel to tunnel session initiation (pure RTSP) and media control (MRCP payloads embedded in RTSP announce messages). I do not know how this is handled with SIP.
|It seems to me that both client and server software would have to cope |with SIP, SDP, RTP, MRCP (message format) and plain old TCP (for the |SIP/SDP and MRCP control channel messages).
Sounds about right.
|Here are my questions: | |- Does anyone know of a FOSS project to write an MRCP server? |preferably in python. I know of mrcp4j [3].
Not that I know of.
|- My first plan would be to make the MRCP client/server a subclass of |an SIP client/server, as SIP is used to set up (and tear down) the |session. Does that sound sensible?
I used Twisted HTTP handling implementation as a starting point for the RTSP implementation since both protocols are very much alike.
I wish you luck and success.
best regards, Rod Senra
[1] http://tools.ietf.org/html/rfc4463
---- Rodrigo Dias Arruda Senra http://rodrigo.senra.nom.br