[Twisted-Python] Media Resource Control Protocol (MRCP)
Rodrigo Senra
rodsenra at gpr.com.br
Tue Sep 4 08:31:50 MDT 2007
[ 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
More information about the Twisted-Python
mailing list