tech-invite   World Map     

3GPP     Specs     Glossaries     Architecture     IMS     UICC       IETF     RFCs     Groups     SIP     ABNFs       Search

RFC 4463

 
 
 

A Media Resource Control Protocol (MRCP) Developed by Cisco, Nuance, and Speechworks

Part 4 of 4, p. 67 to 86
Prev RFC Part

 


prevText      Top      Up      ToC       Page 67 
9.  Future Study

   Various sections of the recognizer could be distributed into Digital
   Signal Processors (DSPs) on the Voice Browser/Gateway or IP Phones.
   For instance, the gateway might perform voice activity detection to
   reduce network bandwidth and CPU requirement of the automatic speech
   recognition (ASR) server.  Such extensions are deferred for further
   study and will not be addressed in this document.

10.  Security Considerations

   The MRCP protocol may carry sensitive information such as account
   numbers, passwords, etc.  For this reason it is important that the
   client have the option of secure communication with the server for
   both the control messages as well as the media, though the client is
   not required to use it.  If all MRCP communications happens in a
   trusted domain behind a firewall, this may not be necessary.  If the
   client or server is deployed in an insecure network, communication
   happening across this insecure network needs to be protected.  In
   such cases, the following additional security functionality MUST be
   supported on the MRCP server.  MRCP servers MUST implement Transport
   Layer Security (TLS) to secure the RTSP communication, i.e., the RTSP
   stack SHOULD support the rtsps: URI form.  MRCP servers MUST support
   Secure Real-Time Transport Protocol (SRTP) as an option to send and
   receive media.

11.  RTSP-Based Examples

   The following is an example of a typical session of speech synthesis
   and recognition between a client and the server.

   Opening the synthesizer.  This is the first resource for this
   session.  The server and client agree on a single Session ID 12345678
   and set of RTP/RTCP ports on both sides.

     C->S:SETUP rtsp://media.server.com/media/synthesizer RTSP/1.0
          CSeq:2
          Transport:RTP/AVP;unicast;client_port=46456-46457
          Content-Type:application/sdp

Top      Up      ToC       Page 68 
          Content-Length:190

          v=0
          o=- 123 456 IN IP4 10.0.0.1
          s=Media Server
          p=+1-888-555-1212
          c=IN IP4 0.0.0.0
          t=0 0
          m=audio 0 RTP/AVP 0 96
          a=rtpmap:0 pcmu/8000
          a=rtpmap:96 telephone-event/8000
          a=fmtp:96 0-15

     S->C:RTSP/1.0 200 OK
          CSeq:2
          Transport:RTP/AVP;unicast;client_port=46456-46457;
                    server_port=46460-46461
          Session:12345678
          Content-Length:190
          Content-Type:application/sdp

          v=0
          o=- 3211724219 3211724219 IN IP4 10.3.2.88
          s=Media Server
          c=IN IP4 0.0.0.0
          t=0 0
          m=audio 46460 RTP/AVP 0 96
          a=rtpmap:0 pcmu/8000
          a=rtpmap:96 telephone-event/8000
          a=fmtp:96 0-15

   Opening a recognizer resource.  Uses the existing session ID and
   ports.

     C->S:SETUP rtsp://media.server.com/media/recognizer RTSP/1.0
          CSeq:3
          Transport:RTP/AVP;unicast;client_port=46456-46457;
                     mode=record;ttl=127
          Session:12345678

     S->C:RTSP/1.0 200 OK
          CSeq:3
          Transport:RTP/AVP;unicast;client_port=46456-46457;
                     server_port=46460-46461;mode=record;ttl=127
          Session:12345678

Top      Up      ToC       Page 69 
   An ANNOUNCE message with the MRCP SPEAK request initiates speech.

     C->S:ANNOUNCE rtsp://media.server.com/media/synthesizer RTSP/1.0
          CSeq:4
          Session:12345678
          Content-Type:application/mrcp
          Content-Length:456

          SPEAK 543257 MRCP/1.0
          Kill-On-Barge-In:false
          Voice-gender:neutral
          Voice-category:teenager
          Prosody-volume:medium
          Content-Type:application/synthesis+ssml
          Content-Length:104

          <?xml version="1.0"?>
          <speak>
          <paragraph>
                   <sentence>You have 4 new messages.</sentence>
                   <sentence>The first is from <say-as
                   type="name">Stephanie Williams</say-as> <mark
          name="Stephanie"/>
                   and arrived at <break/>
                   <say-as type="time">3:45pm</say-as>.</sentence>

                   <sentence>The subject is <prosody
                   rate="-20%">ski trip</prosody></sentence>
          </paragraph>
          </speak>

     S->C:RTSP/1.0 200 OK
          CSeq:4
          Session:12345678
          RTP-Info:url=rtsp://media.server.com/media/synthesizer;
                     seq=9810092;rtptime=3450012
          Content-Type:application/mrcp
          Content-Length:456

          MRCP/1.0 543257 200 IN-PROGRESS


   The synthesizer hits the special marker in the message to be spoken
   and faithfully informs the client of the event.

     S->C:ANNOUNCE rtsp://media.server.com/media/synthesizer RTSP/1.0
          CSeq:5
          Session:12345678

Top      Up      ToC       Page 70 
          Content-Type:application/mrcp
          Content-Length:123

          SPEECH-MARKER 543257 IN-PROGRESS MRCP/1.0
          Speech-Marker:Stephanie
     C->S:RTSP/1.0 200 OK
          CSeq:5

   The synthesizer finishes with the SPEAK request.

     S->C:ANNOUNCE rtsp://media.server.com/media/synthesizer RTSP/1.0
          CSeq:6
          Session:12345678
          Content-Type:application/mrcp
          Content-Length:123

          SPEAK-COMPLETE 543257 COMPLETE MRCP/1.0


     C->S:RTSP/1.0 200 OK
          CSeq:6

   The recognizer is issued a request to listen for the customer
   choices.

     C->S:ANNOUNCE rtsp://media.server.com/media/recognizer RTSP/1.0
          CSeq:7
          Session:12345678

          RECOGNIZE 543258 MRCP/1.0
          Content-Type:application/grammar+xml
          Content-Length:104

          <?xml version="1.0"?>

          <!-- the default grammar language is US English -->
          <grammar xml:lang="en-US" version="1.0">

          <!-- single language attachment to a rule expansion -->
               <rule id="request">
                   Can I speak to
                   <one-of xml:lang="fr-CA">
                            <item>Michel Tremblay</item>
                            <item>Andre Roy</item>
                   </one-of>
               </rule>

          </grammar>

Top      Up      ToC       Page 71 
     S->C:RTSP/1.0 200 OK
          CSeq:7
          Content-Type:application/mrcp
          Content-Length:123

          MRCP/1.0 543258 200 IN-PROGRESS

   The client issues the next MRCP SPEAK method in an ANNOUNCE message,
   asking the user the question.  It is generally RECOMMENDED when
   playing a prompt to the user with kill-on-barge-in and asking for
   input, that the client issue the RECOGNIZE request ahead of the SPEAK
   request for optimum performance and user experience.  This way, it is
   guaranteed that the recognizer is online before the prompt starts
   playing and the user's speech will not be truncated at the beginning
   (especially for power users).

     C->S:ANNOUNCE rtsp://media.server.com/media/synthesizer RTSP/1.0
          CSeq:8 Session:12345678 Content-Type:application/mrcp
          Content-Length:733

          SPEAK 543259 MRCP/1.0
          Kill-On-Barge-In:true
          Content-Type:application/synthesis+ssml
          Content-Length:104

          <?xml version="1.0"?>
          <speak>
          <paragraph>
                   <sentence>Welcome to ABC corporation.</sentence>
                   <sentence>Who would you like Talk to.</sentence>
          </paragraph>
          </speak>

     S->C:RTSP/1.0 200 OK
          CSeq:8
          Content-Type:application/mrcp
          Content-Length:123

          MRCP/1.0 543259 200 IN-PROGRESS

   Since the last SPEAK request had Kill-On-Barge-In set to "true", the
   message synthesizer is interrupted when the user starts speaking, and
   the client is notified.

   Now, since the recognition and synthesizer resources are in the same
   session, they worked with each other to deliver kill-on-barge-in.  If
   the resources were in different sessions, it would have taken a few
   more messages before the client got the SPEAK-COMPLETE event from the

Top      Up      ToC       Page 72 
   synthesizer resource.  Whether the synthesizer and recognizer are in
   the same session or not, the recognizer MUST generate the START-OF-
   SPEECH event to the client.

   The client should have then blindly turned around and issued a
   BARGE-IN-OCCURRED method to the synthesizer resource.  The
   synthesizer, if kill-on-barge-in was enabled on the current SPEAK
   request, would have then interrupted it and issued SPEAK-COMPLETE
   event to the client.  In this example, since the synthesizer and
   recognizer are in the same session, the client did not issue the
   BARGE-IN-OCCURRED method to the synthesizer and assumed that kill-
   on-barge-in was implemented between the two resources in the same
   session and worked.

   The completion-cause code differentiates if this is normal completion
   or a kill-on-barge-in interruption.

     S->C:ANNOUNCE rtsp://media.server.com/media/recognizer RTSP/1.0
          CSeq:9
          Session:12345678
          Content-Type:application/mrcp
          Content-Length:273

          START-OF-SPEECH 543258 IN-PROGRESS MRCP/1.0

     C->S:RTSP/1.0 200 OK
          CSeq:9

     S->C:ANNOUNCE rtsp://media.server.com/media/synthesizer RTSP/1.0
          CSeq:10
          Session:12345678
          Content-Type:application/mrcp
          Content-Length:273

          SPEAK-COMPLETE 543259 COMPLETE MRCP/1.0
          Completion-Cause:000 normal

     C->S:RTSP/1.0 200 OK
          CSeq:10

   The recognition resource matched the spoken stream to a grammar and
   generated results.  The result of the recognition is returned by the
   server as part of the RECOGNITION-COMPLETE event.

     S->C:ANNOUNCE rtsp://media.server.com/media/recognizer RTSP/1.0
          CSeq:11
          Session:12345678
          Content-Type:application/mrcp

Top      Up      ToC       Page 73 
          Content-Length:733

          RECOGNITION-COMPLETE 543258 COMPLETE MRCP/1.0
          Completion-Cause:000 success
          Waveform-URL:http://web.media.com/session123/audio.wav
          Content-Type:application/x-nlsml
          Content-Length:104

          <?xml version="1.0"?>
          <result x-model="http://IdentityModel"
            xmlns:xf="http://www.w3.org/2000/xforms"
            grammar="session:request1@form-level.store">
              <interpretation>
                  <xf:instance name="Person">
                      <Person>
                          <Name> Andre Roy </Name>
                      </Person>
                  </xf:instance>
                            <input>   may I speak to Andre Roy </input>
              </interpretation>
          </result>

     C->S:RTSP/1.0 200 OK
          CSeq:11

     C->S:TEARDOWN rtsp://media.server.com/media/synthesizer RTSP/1.0
          CSeq:12
          Session:12345678

     S->C:RTSP/1.0 200 OK
          CSeq:12

   We are done with the resources and are tearing them down.  When the
   last of the resources for this session are released, the Session-ID
   and the RTP/RTCP ports are also released.

     C->S:TEARDOWN rtsp://media.server.com/media/recognizer RTSP/1.0
          CSeq:13
          Session:12345678

     S->C:RTSP/1.0 200 OK
          CSeq:13

Top      Up      ToC       Page 74 
12.  Informative References

   [1]   Fielding, R., Gettys, J., Mogul, J., Frystyk. H., Masinter, L.,
         Leach, P., and T. Berners-Lee, "Hypertext transfer protocol --
         HTTP/1.1", RFC 2616, June 1999.

   [2]   Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time Streaming
         Protocol (RTSP)", RFC 2326, April 1998

   [3]   Crocker, D. and P. Overell, "Augmented BNF for Syntax
         Specifications: ABNF", RFC 4234, October 2005.

   [4]   Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A.,
         Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP:
         Session Initiation Protocol", RFC 3261, June 2002.

   [5]   Handley, M. and V. Jacobson, "SDP: Session Description
         Protocol", RFC 2327, April 1998.

   [6]   World Wide Web Consortium, "Voice Extensible Markup Language
         (VoiceXML) Version 2.0", W3C Candidate Recommendation, March
         2004.

   [7]   Resnick, P., "Internet Message Format", RFC 2822, April 2001.

   [8]   Bradner, S., "Key words for use in RFCs to Indicate Requirement
         Levels", BCP 14, RFC 2119, March 1997.

   [9]   World Wide Web Consortium, "Speech Synthesis Markup Language
         (SSML) Version 1.0", W3C Candidate Recommendation, September
         2004.

   [10]  World Wide Web Consortium, "Natural Language Semantics Markup
         Language (NLSML) for the Speech Interface Framework", W3C
         Working Draft, 30 May 2001.

   [11]  World Wide Web Consortium, "Speech Recognition Grammar
         Specification Version 1.0", W3C Candidate Recommendation, March
         2004.

   [12]  Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD
         63, RFC 3629, November 2003.

   [13]  Freed, N. and N. Borenstein, "Multipurpose Internet Mail
         Extensions (MIME) Part Two: Media Types", RFC 2046, November
         1996.

Top      Up      ToC       Page 75 
   [14]  Levinson, E., "Content-ID and Message-ID Uniform Resource
         Locators", RFC 2392, August 1998.

   [15]  Schulzrinne, H. and S. Petrack, "RTP Payload for DTMF Digits,
         Telephony Tones and Telephony Signals", RFC 2833, May 2000.

   [16]  Alvestrand, H., "Tags for the Identification of Languages", BCP
         47, RFC 3066, January 2001.

Top      Up      ToC       Page 76 
Appendix A.  ABNF Message Definitions

   ALPHA          =  %x41-5A / %x61-7A   ; A-Z / a-z

   CHAR           =  %x01-7F     ; any 7-bit US-ASCII character,
                                 ;    excluding NUL

   CR             =  %x0D        ; carriage return

   CRLF           =  CR LF       ; Internet standard newline

   DIGIT          =  %x30-39     ; 0-9

   DQUOTE         =  %x22        ; " (Double Quote)

   HEXDIG         =  DIGIT / "A" / "B" / "C" / "D" / "E" / "F"

   HTAB           =  %x09        ; horizontal tab

   LF             =  %x0A        ; linefeed

   OCTET          =  %x00-FF     ; 8 bits of data

   SP             =  %x20        ; space

   WSP            =  SP / HTAB   ; white space

   LWS            =  [*WSP CRLF] 1*WSP ; linear whitespace

   SWS            =  [LWS] ; sep whitespace

   UTF8-NONASCII  =  %xC0-DF 1UTF8-CONT
                  /  %xE0-EF 2UTF8-CONT
                  /  %xF0-F7 3UTF8-CONT
                  /  %xF8-Fb 4UTF8-CONT
                  /  %xFC-FD 5UTF8-CONT

   UTF8-CONT      =  %x80-BF

   param          =  *pchar

   quoted-string  =  SWS DQUOTE *(qdtext / quoted-pair )
                     DQUOTE

   qdtext         =  LWS / %x21 / %x23-5B / %x5D-7E
                     / UTF8-NONASCII

Top      Up      ToC       Page 77 
   quoted-pair    =  "\" (%x00-09 / %x0B-0C
                     / %x0E-7F)

   token          =  1*(alphanum / "-" / "." / "!" / "%" / "*"
                      / "_" / "+" / "`" / "'" / "~" )

   reserved       =  ";" / "/" / "?" / ":" / "@" / "&" / "="
                     / "+" / "$" / ","

   mark           =  "-" / "_" / "." / "!" / "~" / "*" / "'"
                     / "(" / ")"

   unreserved     =  alphanum / mark

   char           =  unreserved / escaped /
                     ":" / "@" / "&" / "=" / "+" / "$" / ","

   alphanum       =  ALPHA / DIGIT

   escaped        =  "%" HEXDIG HEXDIG

   absoluteURI    =  scheme ":" ( hier-part / opaque-part )

   relativeURI    =  ( net-path / abs-path / rel-path )
                     [ "?" query ]

   hier-part      =  ( net-path / abs-path ) [ "?" query ]

   net-path       =  "//" authority [ abs-path ]

   abs-path       =  "/" path-segments

   rel-path       =  rel-segment [ abs-path ]

   rel-segment    =  1*( unreserved / escaped / ";" / "@"
                     / "&" / "=" / "+" / "$" / "," )

   opaque-part    =  uric-no-slash *uric

   uric           =  reserved / unreserved / escaped

   uric-no-slash  =  unreserved / escaped / ";" / "?" / ":"
                     / "@" / "&" / "=" / "+" / "$" / ","

   path-segments  =  segment *( "/" segment )

   segment        =  *pchar *( ";" param )

Top      Up      ToC       Page 78 
   scheme         =  ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

   authority      =  srvr / reg-name

   srvr           =  [ [ userinfo "@" ] hostport ]

   reg-name       =  1*( unreserved / escaped / "$" / ","
                     / ";" / ":" / "@" / "&" / "=" / "+" )

   query          =  *uric

   userinfo       =  ( user ) [ ":" password ] "@"

   user           =  1*( unreserved / escaped
                       / user-unreserved )

   user-unreserved  =  "&" / "=" / "+" / "$" / "," / ";"
                       / "?" / "/"

   password         =  *( unreserved / escaped /
                       "&" / "=" / "+" / "$" / "," )

   hostport         =  host [ ":" port ]

   host             =  hostname / IPv4address / IPv6reference

   hostname         =  *( domainlabel "." ) toplabel [ "." ]

   domainlabel      =  alphanum
                       / alphanum *( alphanum / "-" ) alphanum

   toplabel       =    ALPHA / ALPHA *( alphanum / "-" )
                       alphanum

   IPv4address    =    1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "."
                       1*3DIGIT

   IPv6reference  =    "[" IPv6address "]"

   IPv6address    =    hexpart [ ":" IPv4address ]

   hexpart        =    hexseq / hexseq "::" [ hexseq ] / "::"
                       [ hexseq ]

   hexseq         =    hex4 *( ":" hex4)

   hex4           =    1*4HEXDIG

Top      Up      ToC       Page 79 
   port           =    1*DIGIT

   generic-message =   start-line
                       message-header
                       CRLF
                       [ message-body ]

   message-body   =    *OCTET

   start-line     =    request-line / status-line / event-line

   request-line   =    method-name SP request-id SP
                                 mrcp-version CRLF

   status-line    =    mrcp-version SP request-id SP
                       status-code SP request-state CRLF

   event-line     =    event-name SP request-id SP
                       request-state SP mrcp-version CRLF

   message-header =    1*(generic-header / resource-header)

   generic-header =    active-request-id-list
                  /    proxy-sync-id
                  /    content-id
                  /    content-type
                  /    content-length
                  /    content-base
                  /    content-location
                  /    content-encoding
                  /    cache-control
                  /    logging-tag
   ; -- content-id is as defined in RFC 2392 and RFC 2046

   mrcp-version   =    "MRCP" "/" 1*DIGIT "." 1*DIGIT

   request-id     =    1*DIGIT

   status-code    =    1*DIGIT

   active-request-id-list =  "Active-Request-Id-List" ":"
                            request-id *("," request-id) CRLF

   proxy-sync-id  =    "Proxy-Sync-Id" ":" 1*ALPHA CRLF

   content-length =    "Content-Length" ":" 1*DIGIT CRLF

   content-base   =    "Content-Base" ":" absoluteURI CRLF

Top      Up      ToC       Page 80 
   content-type   =    "Content-Type" ":" media-type

   media-type     =    type "/" subtype *( ";" parameter )

   type           =    token

   subtype        =    token

   parameter      =    attribute "=" value

   attribute      =    token

   value          =    token / quoted-string

   content-encoding =  "Content-Encoding" ":"
                       *WSP content-coding
                       *(*WSP "," *WSP content-coding *WSP )
                       CRLF

   content-coding   =  token


   content-location =  "Content-Location" ":"
                       ( absoluteURI / relativeURI )  CRLF

   cache-control  =    "Cache-Control" ":"
                       *WSP cache-directive
                       *( *WSP "," *WSP cache-directive *WSP )
                       CRLF

   cache-directive =   "max-age" "=" delta-seconds
                   /   "max-stale" "=" delta-seconds
                   /   "min-fresh" "=" delta-seconds

   logging-tag    =    "Logging-Tag" ":" 1*ALPHA CRLF


   resource-header =   recognizer-header
                       /    synthesizer-header

   method-name    =    synthesizer-method
                       /    recognizer-method

   event-name     =    synthesizer-event
                       /    recognizer-event

Top      Up      ToC       Page 81 
   request-state  =    "COMPLETE"
                  /    "IN-PROGRESS"
                  /    "PENDING"

   synthesizer-method = "SET-PARAMS"
                  /    "GET-PARAMS"
                  /    "SPEAK"
                  /    "STOP"
                  /    "PAUSE"
                  /    "RESUME"
                  /    "BARGE-IN-OCCURRED"
                  /    "CONTROL"

   synthesizer-event = "SPEECH-MARKER"
                  /    "SPEAK-COMPLETE"

   synthesizer-header =     jump-target
                      /     kill-on-barge-in
                      /     speaker-profile
                      /     completion-cause
                      /     voice-parameter
                      /     prosody-parameter
                      /     vendor-specific
                      /     speech-marker
                      /     speech-language
                      /     fetch-hint
                      /     audio-fetch-hint
                      /     fetch-timeout
                      /     failed-uri
                      /     failed-uri-cause
                      /     speak-restart
                      /     speak-length

   recognizer-method = "SET-PARAMS"
                      /    "GET-PARAMS"
                      /    "DEFINE-GRAMMAR"
                      /    "RECOGNIZE"
                      /    "GET-RESULT"
                      /    "RECOGNITION-START-TIMERS"
                      /    "STOP"

   recognizer-event  =      "START-OF-SPEECH"
                     /      "RECOGNITION-COMPLETE"

   recognizer-header =      confidence-threshold
                     /      sensitivity-level
                     /      speed-vs-accuracy
                     /      n-best-list-length

Top      Up      ToC       Page 82 
                     /      no-input-timeout
                     /      recognition-timeout
                     /      waveform-url
                     /      completion-cause
                     /      recognizer-context-block
                     /      recognizer-start-timers
                     /      vendor-specific
                     /      speech-complete-timeout
                     /      speech-incomplete-timeout
                     /      dtmf-interdigit-timeout
                     /      dtmf-term-timeout
                     /      dtmf-term-char
                     /      fetch-timeout
                     /      failed-uri
                     /      failed-uri-cause
                     /      save-waveform
                     /      new-audio-channel
                     /      speech-language

   jump-target       =  "Jump-Size" ":" speech-length-value CRLF

   speech-length-value =    numeric-speech-length
                     /      text-speech-length

   text-speech-length =     1*ALPHA SP "Tag"

   numeric-speech-length =("+" / "-") 1*DIGIT SP
                       numeric-speech-unit

   numeric-speech-unit =    "Second"
                       /    "Word"
                       /    "Sentence"
                       /    "Paragraph"

   delta-seconds  =    1*DIGIT

   kill-on-barge-in =  "Kill-On-Barge-In" ":" boolean-value CRLF

   boolean-value  =    "true" / "false"

   speaker-profile =    "Speaker-Profile" ":" absoluteURI CRLF

   completion-cause =  "Completion-Cause" ":" 1*DIGIT SP
                       1*ALPHA CRLF

   voice-parameter =   "Voice-" voice-param-name ":"
                       voice-param-value CRLF

Top      Up      ToC       Page 83 
   voice-param-name =  1*ALPHA

   voice-param-value = 1*alphanum

   prosody-parameter = "Prosody-" prosody-param-name ":"
                        prosody-param-value CRLF

   prosody-param-name =     1*ALPHA

   prosody-param-value = 1*alphanum

   vendor-specific =   "Vendor-Specific-Parameters" ":"
                      vendor-specific-av-pair
                       *[";" vendor-specific-av-pair] CRLF

   vendor-specific-av-pair = vendor-av-pair-name "="
                             vendor-av-pair-value

   vendor-av-pair-name = 1*ALPHA

   vendor-av-pair-value = 1*alphanum

   speech-marker  =    "Speech-Marker" ":" 1*ALPHA CRLF

   speech-language =   "Speech-Language" ":" 1*ALPHA CRLF

   fetch-hint     =    "Fetch-Hint" ":" 1*ALPHA CRLF

   audio-fetch-hint =  "Audio-Fetch-Hint" ":" 1*ALPHA CRLF

   fetch-timeout  =    "Fetch-Timeout" ":" 1*DIGIT CRLF

   failed-uri     =    "Failed-URI" ":" absoluteURI CRLF

   failed-uri-cause =  "Failed-URI-Cause" ":" 1*ALPHA CRLF

   speak-restart  =    "Speak-Restart" ":" boolean-value CRLF

   speak-length   =    "Speak-Length" ":" speech-length-value
                       CRLF
   confidence-threshold =   "Confidence-Threshold" ":"
                            1*DIGIT CRLF

   sensitivity-level = "Sensitivity-Level" ":" 1*DIGIT CRLF

   speed-vs-accuracy = "Speed-Vs-Accuracy" ":" 1*DIGIT CRLF

   n-best-list-length = "N-Best-List-Length" ":" 1*DIGIT CRLF

Top      Up      ToC       Page 84 
   no-input-timeout =  "No-Input-Timeout" ":" 1*DIGIT CRLF

   recognition-timeout = "Recognition-Timeout" ":" 1*DIGIT CRLF

   waveform-url   =    "Waveform-URL" ":" absoluteURI CRLF

   recognizer-context-block = "Recognizer-Context-Block" ":"
                       1*ALPHA CRLF

   recognizer-start-timers = "Recognizer-Start-Timers" ":"
                       boolean-value CRLF

   speech-complete-timeout = "Speech-Complete-Timeout" ":"
                       1*DIGIT CRLF

   speech-incomplete-timeout = "Speech-Incomplete-Timeout" ":"
                       1*DIGIT CRLF

   dtmf-interdigit-timeout = "DTMF-Interdigit-Timeout" ":"
                             1*DIGIT CRLF

   dtmf-term-timeout = "DTMF-Term-Timeout" ":" 1*DIGIT CRLF

   dtmf-term-char =    "DTMF-Term-Char" ":" CHAR CRLF

   save-waveform  =    "Save-Waveform" ":" boolean-value CRLF

   new-audio-channel = "New-Audio-Channel" ":"
                       boolean-value CRLF

Appendix B.  Acknowledgements

   Andre Gillet (Nuance Communications)
   Andrew Hunt (SpeechWorks)
   Aaron Kneiss (SpeechWorks)
   Kristian Finlator (SpeechWorks)
   Martin Dragomirecky (Cisco Systems, Inc.)
   Pierre Forgues (Nuance Communications)
   Suresh Kaliannan (Cisco Systems, Inc.)
   Corey Stohs (Cisco Systems, Inc.)
   Dan Burnett (Nuance Communications)

Top      Up      ToC       Page 85 
Authors' Addresses

   Saravanan Shanmugham
   Cisco Systems, Inc.
   170 W. Tasman Drive
   San Jose, CA 95134

   EMail: sarvi@cisco.com


   Peter Monaco
   Nuasis Corporation
   303 Bryant St.
   Mountain View, CA 94041

   EMail: peter.monaco@nuasis.com


   Brian Eberman
   Speechworks, Inc.
   695 Atlantic Avenue
   Boston, MA 02111

   EMail: brian.eberman@speechworks.com

Top      Up      ToC       Page 86 
Full Copyright Statement

   Copyright (C) The Internet Society (2006).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78 and at www.rfc-editor.org/copyright.html, and
   except as set forth therein, the authors retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Acknowledgement

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).