Skip to main content

A Media Resource Control Protocol (MRCP) Developed by Cisco, Nuance, and Speechworks
draft-shanmugham-mrcp-07

Revision differences

Document history

Date Rev. By Action
2012-08-22
07 (System) post-migration administrative database adjustment to the No Objection position for Scott Hollenbeck
2012-08-22
07 (System) post-migration administrative database adjustment to the No Objection position for Bill Fenner
2012-08-22
07 (System) post-migration administrative database adjustment to the Abstain position for Russ Housley
2005-04-06
07 (System) New version available: draft-shanmugham-mrcp-07.txt
2005-02-09
06 (System) New version available: draft-shanmugham-mrcp-06.txt
2004-12-02
07 Amy Vezza State Changes to RFC Ed Queue from Approved-announcement sent by Amy Vezza
2004-12-01
07 Amy Vezza IESG state changed to Approved-announcement sent
2004-12-01
07 Amy Vezza IESG has approved the document
2004-12-01
07 Amy Vezza Closed "Approve" ballot
2004-12-01
07 Amy Vezza State Changes to Approved-announcement to be sent from IESG Evaluation::AD Followup by Amy Vezza
2004-11-27
07 Scott Hollenbeck [Ballot Position Update] Position for Scott Hollenbeck has been changed to No Objection from Discuss by Scott Hollenbeck
2004-11-27
07 Scott Hollenbeck
[Ballot comment]
References should be split normative/informative.

Previous discuss text:

Missing security considerations and IANA considerations sections.

I don't quite understand if the application/mrcp content, …
[Ballot comment]
References should be split normative/informative.

Previous discuss text:

Missing security considerations and IANA considerations sections.

I don't quite understand if the application/mrcp content, which looks like XML to me, is a normative part of this specification.  If it is, a normative reference to the appropriate W3C XML specifications needs to be added.

Where is the application/mrcp MIME type registered?  It's not in the IANA registry now, and I don't see a template in the document.
2004-11-27
07 Sam Hartman
I do believe a security considerations section should be added before
publication.  However under RFC 3932, that does not seem to be
sufficient to …
I do believe a security considerations section should be added before
publication.  However under RFC 3932, that does not seem to be
sufficient to justify a dnp note, only a comment to the rfc-editor.
2004-11-27
07 Sam Hartman [Ballot Position Update] New position, No Objection, has been recorded for Sam Hartman by Sam Hartman
2004-09-17
07 (System) Removed from agenda for telechat - 2004-09-16
2004-09-16
07 Amy Vezza State Changes to IESG Evaluation::AD Followup from IESG Evaluation by Amy Vezza
2004-09-16
07 Russ Housley [Ballot Position Update] Position for Russ Housley has been changed to Abstain from Discuss by Russ Housley
2004-09-16
07 Bill Fenner [Ballot comment]
I sent the contents of my DISCUSS to the draft authors and the RFC-Editor.
2004-09-16
07 Bill Fenner [Ballot Position Update] Position for Bill Fenner has been changed to No Objection from Discuss by Bill Fenner
2004-09-16
07 Russ Housley [Ballot discuss]
This document does not have a Security Considerations section.
2004-09-16
07 Russ Housley [Ballot Position Update] New position, Discuss, has been recorded for Russ Housley by Russ Housley
2004-09-16
07 Bert Wijnen
[Ballot comment]
Instead of net 10 addresses they should use the addresses as per RFC3330
for the examples

Instead of their current fqdns, they should …
[Ballot comment]
Instead of net 10 addresses they should use the addresses as per RFC3330
for the examples

Instead of their current fqdns, they should use xxx.example.com
2004-09-16
07 Bert Wijnen [Ballot Position Update] New position, Undefined, has been recorded for Bert Wijnen by Bert Wijnen
2004-09-16
07 Harald Alvestrand
[Ballot comment]
Reviewed by Spencer Dawkins, Gen-ART

His review:

Using the criteria for Individual RFC-Editor Submissions:

Reviews should focus on these questions: "Does this document …
[Ballot comment]
Reviewed by Spencer Dawkins, Gen-ART

His review:

Using the criteria for Individual RFC-Editor Submissions:

Reviews should focus on these questions: "Does this document
represent an end run around the IETF's working groups
or its procedures? Does this document present an incompatible
change to IETF technologies as if it were compatible?"

This document is ready for publication as an Informational RFC.

I would have more comments if it was an IETF document.
2004-09-16
07 Harald Alvestrand [Ballot Position Update] New position, No Objection, has been recorded for Harald Alvestrand by Harald Alvestrand
2004-09-16
07 Bill Fenner
[Ballot discuss]
ABNF errors in the collected ABNF:
168:0: Rule Content-Type previously referred to as content-type
- This is relatively harmless, but it's nice to …
[Ballot discuss]
ABNF errors in the collected ABNF:
168:0: Rule Content-Type previously referred to as content-type
- This is relatively harmless, but it's nice to keep the capitalization
consistent.

351:0: Rule speech-length-value was already defined on line 281
353:0: Rule text-speech-length was already defined on line 284
356:0: Rule numeric-speech-length was already defined on line 286
361:0: Rule numeric-speech-unit was already defined on line 289

- This group of 4 rules appears twice in the collected ABNF.

379:0: Rule completion-cause was already defined on line 302
400:0: Rule fetch-timeout was already defined on line 338

- These two individual rules each appears twice in the collected ABNF.


ABNF errors in the individual rules in the document:
6:50: '/' is the alternation character in ABNF
- This is triggered by the definition of "start-line", but there are quite a few others.

38:0: Rule message-header was already defined on line 8
- message-header is defined in section 5 as "1*(generic-header | resource-header)" but then in section 5.4 as "field-name ":" [ field-value ]".

40:56: unterminated prose-val
- This is the definition of field-content.  Technically, RFC2234 does not permit multi-line prose-vals.

62:23: Illegal character '#' - skipping to end of line
- The definition of content-encoding uses RFC822 ABNF syntax

67:44: Illegal character '#' - skipping to end of line
- The definition of cache-control uses RFC822 ABNF syntax

159:0: Rule speech-length-value was already defined on line 109
161:0: Rule text-speech-length was already defined on line 111
163:0: Rule numeric-speech-length was already defined on line 113
167:0: Rule numeric-speech-unit was already defined on line 115
- This is the redefintion of these rules in both Jump-Target and Speak Length.  It might be better to define them once and cross-reference.

216:0: Rule completion-cause was already defined on line 126
- completion-cause is defined in both 7.4.4 and 8.4.8.

-- I didn't go into the specifics of the further duplicate definitions.
226:0: Rule vendor-specific was already defined on line 135
230:0: Rule vendor-specific-av-pair was already defined on line 138
239:0: Rule fetch-timeout was already defined on line 149
240:0: Rule failed-uri was already defined on line 151
241:0: Rule failed-uri-cause was already defined on line 152
245:0: Rule speech-language was already defined on line 143

Many of the rules do not match the examples, at least partly because the rules do not permit linear whitespace as the examples contain.  You probably want to use constructs such as HCOLON and SWS as the SIP spec (RFC 3261) does.  Oddly, some of the rules do explicitly have *WSP and others don't.

There are a significant number of differences between the ABNF in the document and the collected ABNF.  Here is the list that was easy to get.  There may be others, or some of these differences may be due to some of the above parse errors resulting in trouble getting to the canonical format.

--- mrcp-canon  Wed Sep 15 21:17:05 2004
+++ mrcp-collected-canon        Wed Sep 15 21:16:51 2004
@@ -1,111 +1,142 @@
; ALPHA UNDEFINED
; CHAR UNDEFINED
; CRLF UNDEFINED
-; DEFINE-GRAMMAR UNDEFINED
; DIGIT UNDEFINED
-; GET-PARAMS UNDEFINED
-; GET-RESULT UNDEFINED
-; LWS UNDEFINED
-; RECOGNITION-COMPLETE UNDEFINED
-; RECOGNITION-START-TIMERS UNDEFINED
-; RECOGNIZE UNDEFINED
-; SET-PARAMS UNDEFINED
+; DQUOTE UNDEFINED
+; HEXDIG UNDEFINED
+; OCTET UNDEFINED
; SP UNDEFINED
-; START-OF-SPEECH UNDEFINED
-; STOP UNDEFINED
-; TEXT UNDEFINED
-; Url UNDEFINED
-; absoluteURI UNDEFINED
-; and UNDEFINED
-; cache-control UNDEFINED
-; cache-directive defined but not used
-; combinations UNDEFINED
-; confidence-threshold UNDEFINED
-; consisting UNDEFINED
-; content-encoding UNDEFINED
+; WSP UNDEFINED
; content-id UNDEFINED
-; content-length UNDEFINED
-; content-type UNDEFINED
-; either UNDEFINED
-; field-name defined but not used
-; field-value defined but not used
; generic-message defined but not used
-; message-body UNDEFINED
-; of UNDEFINED
-; or UNDEFINED
-; prosody-param-name UNDEFINED
-; prosody-param-value UNDEFINED
-; relativeURI UNDEFINED
-; speech-complete-timeout UNDEFINED
-; speech-incomplete-timeout UNDEFINED
-; status-code UNDEFINED
-; token UNDEFINED
-; uri UNDEFINED
-; vendor-av-pair-name UNDEFINED
-; vendor-av-pair-value UNDEFINED
-; voice-param-name UNDEFINED
-; voice-param-value UNDEFINED
+Content-Type = "Content-Type:" media-type
+IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
+IPv6address = hexpart [ ":" IPv4address ]
+IPv6reference = "[" IPv6address "]"
+LWS = [ *WSP CRLF ] 1*WSP
+SWS = [ LWS ]
+UTF8-CONT = %x80-BF
+UTF8-NONASCII = ( %xC0-DF UTF8-CONT ) / ( %xE0-EF 2UTF8-CONT ) / ( %xF0-F7 3UTF8-CONT ) / ( %xF8-FB 4UTF8-CONT ) / ( %xFC-FD 5UTF8-CONT )
+abs-path = "/" path-segments
+absoluteURI = scheme ":" ( hier-part / opaque-part )
active-request-id-list = "Active-Request-Id-List:" request-id *( "," request-id ) CRLF
+alphanum = ALPHA / DIGIT
+attribute = token
audio-fetch-hint = "Audio-Fetch-Hint:" 1*ALPHA CRLF
+authority = srvr / reg-name
boolean-value = "true" / "false"
+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 )
completion-cause = "Completion-Cause:" 1*DIGIT SP 1*ALPHA CRLF
+confidence-threshold = "Confidence-Threshold:" 1*DIGIT CRLF
content-base = "Content-Base:" absoluteURI CRLF
+content-coding = token
+content-encoding = "Content-Encoding:" *WSP content-coding *( *WSP "," *WSP content-coding *WSP ) CRLF
+content-length = "Content-Length:" 1*DIGIT CRLF
content-location = "Content-Location:" ( absoluteURI / relativeURI ) CRLF
delta-seconds = 1*DIGIT
+domainlabel = alphanum / ( alphanum *( alphanum / "-" ) alphanum )
dtmf-interdigit-timeout = "DTMF-Interdigit-Timeout:" 1*DIGIT CRLF
dtmf-term-char = "DTMF-Term-Char:" CHAR CRLF
dtmf-term-timeout = "DTMF-Term-Timeout:" 1*DIGIT CRLF
+escaped = "%" HEXDIG HEXDIG
event-line = event-name SP request-id SP request-state SP mrcp-version CRLF
event-name = synthesizer-event / recognizer-event
-failed-uri = "Failed-URI:" Url CRLF
+failed-uri = "Failed-URI:" absoluteURI CRLF
failed-uri-cause = "Failed-URI-Cause:" 1*ALPHA CRLF
fetch-hint = "Fetch-Hint:" 1*ALPHA CRLF
fetch-timeout = "Fetch-Timeout:" 1*DIGIT CRLF
-field-content =  and consisting of either *TEXT or combinations of token
-field-name = token
-field-value = *( field-content / LWS )
-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
+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
generic-message = start-line message-header CRLF [ message-body ]

+hex4 = 1*4HEXDIG
+hexpart = hexseq / ( hexseq "::" [ hexseq ] ) / ( "::" [ hexseq ] )
+hexseq = hex4 *( ":" hex4 )
+hier-part = ( net-path / abs-path ) [ "?" query ]
+host = hostname / IPv4address / IPv6reference
+hostname = *( domainlabel "." ) toplabel [ "." ]
+hostport = host [ ":" port ]
jump-target = "Jump-Size:" speech-length-value CRLF
kill-on-barge-in = "Kill-On-Barge-In:" boolean-value CRLF
logging-tag = "Logging-Tag:" 1*ALPHA CRLF
+mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")"
+media-type = type "/" subtype *( ";" parameter )
+message-body = *OCTET
message-header = 1*( generic-header / resource-header )
method-name = synthesizer-method / recognizer-method
mrcp-version = "MRCP/" 1*DIGIT "." 1*DIGIT
n-best-list-length = "N-Best-List-Length:" 1*DIGIT CRLF
+net-path = "//" authority [ abs-path ]
new-audio-channel = "New-Audio-Channel:" boolean-value CRLF
no-input-timeout = "No-Input-Timeout:" 1*DIGIT CRLF
numeric-speech-length = ( "+" / "-" ) 1*DIGIT SP numeric-speech-unit
numeric-speech-unit = "Second" / "Word" / "Sentence" / "Paragraph"
+opaque-part = uric-no-slash *uric
+param = *pchar
+parameter = attribute "=" value
+password = *( unreserved / escaped / "&" / "=" / "+" / "$" / "," )
+path-segments = segment *( "/" segment )
+pchar = unreserved / escaped / ":" / "@" / "&" / "=" / "+" / "$" / ","
+port = 1*DIGIT
+prosody-param-name = 1*ALPHA
+prosody-param-value = 1*alphanum
prosody-parameter = "Prosody-" prosody-param-name ":" prosody-param-value CRLF
proxy-sync-id = "Proxy-Sync-Id:" 1*ALPHA CRLF
+qdtext = LWS / "!" / %x23-5B / %x5D-7E / UTF8-NONASCII
+query = *uric
+quoted-pair = "" ( %x00-09 / %x0B-0C / %x0E-7F )
+quoted-string = SWS DQUOTE *( qdtext / quoted-pair ) DQUOTE
recognition-timeout = "Recognition-Timeout:" 1*DIGIT CRLF
recognizer-context-block = "Recognizer-Context-Block:" 1*ALPHA CRLF
-recognizer-event = START-OF-SPEECH / RECOGNITION-COMPLETE
+recognizer-event = "START-OF-SPEECH" / "RECOGNITION-COMPLETE"
recognizer-header = confidence-threshold / sensitivity-level / speed-vs-accuracy / n-best-list-length / 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
-recognizer-method = SET-PARAMS / GET-PARAMS / DEFINE-GRAMMAR / RECOGNIZE / GET-RESULT / RECOGNITION-START-TIMERS / STOP
+recognizer-method = "SET-PARAMS" / "GET-PARAMS" / "DEFINE-GRAMMAR" / "RECOGNIZE" / "GET-RESULT" / "RECOGNITION-START-TIMERS" / "STOP"
recognizer-start-timers = "Recognizer-Start-Timers:" boolean-value CRLF
+reg-name = 1*( unreserved / escaped / "$" / "," / ";" / ":" / "@" / "&" / "=" / "+" )
+rel-path = rel-segment [ abs-path ]
+rel-segment = 1*( unreserved / escaped / ";" / "@" / "&" / "=" / "+" / "$" / "," )
+relativeURI = ( net-path / abs-path / rel-path ) [ "?" query ]
request-id = 1*DIGIT
request-line = method-name SP request-id SP mrcp-version CRLF
request-state = "COMPLETE" / "IN-PROGRESS" / "PENDING"
+reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+" / "$" / ","
resource-header = recognizer-header / synthesizer-header
-response-line = mrcp-version SP request-id SP status-code SP request-state CRLF
save-waveform = "Save-Waveform:" boolean-value CRLF
+scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+segment = *pchar *( ";" param )
sensitivity-level = "Sensitivity-Level:" 1*DIGIT CRLF
speak-length = "Speak-Length:" speech-length-value CRLF
speak-restart = "Speak-Restart:" boolean-value CRLF
-speaker-profile = "Speaker-Profile:" uri CRLF
+speaker-profile = "Speaker-Profile:" absoluteURI CRLF
+speech-complete-timeout = "Speech-Complete-Timeout:" 1*DIGIT CRLF
+speech-incomplete-timeout = "Speech-Incomplete-Timeout:" 1*DIGIT CRLF
speech-language = "Speech-Language:" 1*ALPHA CRLF
speech-length-value = numeric-speech-length / text-speech-length
speech-marker = "Speech-Marker:" 1*ALPHA CRLF
speed-vs-accuracy = "Speed-Vs-Accuracy:" 1*DIGIT CRLF
-start-line = request-line / response-line / event-line
+srvr = [ [ userinfo "@" ] hostport ]
+start-line = request-line / status-line / event-line
+status-code = 1*DIGIT
+status-line = mrcp-version SP request-id SP status-code SP request-state CRLF
+subtype = token
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
synthesizer-method = "SET-PARAMS" / "GET-PARAMS" / "SPEAK" / "STOP" / "PAUSE" / "RESUME" / "BARGE-IN-OCCURRED" / "CONTROL"
text-speech-length = 1*ALPHA SP "Tag"
+token = 1*( alphanum / "-" / "." / "!" / "%" / "*" / "_" / "+" / "`" / "'" / "~" )
+toplabel = ALPHA / ( ALPHA *( alphanum / "-" ) alphanum )
+type = token
+unreserved = alphanum / mark
+uric = reserved / unreserved / escaped
+uric-no-slash = unreserved / escaped / ";" / "?" / ":" / "@" / "&" / "=" / "+" / "$" / ","
+user = 1*( unreserved / escaped / user-unreserved )
+user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"
+userinfo = user [ ":" password ] "@"
+value = token / quoted-string
+vendor-av-pair-name = 1*ALPHA
+vendor-av-pair-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
+voice-param-name = 1*ALPHA
+voice-param-value = 1*alphanum
voice-parameter = "Voice-" voice-param-name ":" voice-param-value CRLF
-waveform-url = "Waveform-URL:" Url CRLF
+waveform-url = "Waveform-URL:" absoluteURI CRLF
2004-09-16
07 Bill Fenner
[Ballot discuss]
ABNF errors in the collected ABNF:
168:0: Rule Content-Type previously referred to as content-type
- This is relatively harmless, but it's nice to …
[Ballot discuss]
ABNF errors in the collected ABNF:
168:0: Rule Content-Type previously referred to as content-type
- This is relatively harmless, but it's nice to keep the capitalization
consistent.

351:0: Rule speech-length-value was already defined on line 281
353:0: Rule text-speech-length was already defined on line 284
356:0: Rule numeric-speech-length was already defined on line 286
361:0: Rule numeric-speech-unit was already defined on line 289

- This group of 4 rules appears twice in the collected ABNF.

379:0: Rule completion-cause was already defined on line 302
400:0: Rule fetch-timeout was already defined on line 338

- These two individual rules each appears twice in the collected ABNF.


ABNF errors in the individual rules in the document:
6:50: '/' is the alternation character in ABNF
- This is triggered by the definition of "start-line", but there are quite a few others.

38:0: Rule message-header was already defined on line 8
- message-header is defined in section 5 as "1*(generic-header | resource-header)" but then in section 5.4 as "field-name ":" [ field-value ]".

40:56: unterminated prose-val
- This is the definition of field-content.  Technically, RFC2234 does not permit multi-line prose-vals.

62:23: Illegal character '#' - skipping to end of line
- The definition of content-encoding uses RFC822 ABNF syntax

67:44: Illegal character '#' - skipping to end of line
- The definition of cache-control uses RFC822 ABNF syntax

159:0: Rule speech-length-value was already defined on line 109
161:0: Rule text-speech-length was already defined on line 111
163:0: Rule numeric-speech-length was already defined on line 113
167:0: Rule numeric-speech-unit was already defined on line 115
- This is the redefintion of these rules in both Jump-Target and Speak Length.  It might be better to define them once and cross-reference.

216:0: Rule completion-cause was already defined on line 126
- completion-cause is defined in both 7.4.4 and 8.4.8.

-- I didn't go into the specifics of the further duplicate definitions.
226:0: Rule vendor-specific was already defined on line 135
230:0: Rule vendor-specific-av-pair was already defined on line 138
239:0: Rule fetch-timeout was already defined on line 149
240:0: Rule failed-uri was already defined on line 151
241:0: Rule failed-uri-cause was already defined on line 152
245:0: Rule speech-language was already defined on line 143

There are a significant number of differences between the ABNF in the document and the collected ABNF.  Here is the list that was easy to get.  There may be others, or some of these differences may be due to some of the above parse errors resulting in trouble getting to the canonical format.

--- mrcp-canon  Wed Sep 15 21:17:05 2004
+++ mrcp-collected-canon        Wed Sep 15 21:16:51 2004
@@ -1,111 +1,142 @@
; ALPHA UNDEFINED
; CHAR UNDEFINED
; CRLF UNDEFINED
-; DEFINE-GRAMMAR UNDEFINED
; DIGIT UNDEFINED
-; GET-PARAMS UNDEFINED
-; GET-RESULT UNDEFINED
-; LWS UNDEFINED
-; RECOGNITION-COMPLETE UNDEFINED
-; RECOGNITION-START-TIMERS UNDEFINED
-; RECOGNIZE UNDEFINED
-; SET-PARAMS UNDEFINED
+; DQUOTE UNDEFINED
+; HEXDIG UNDEFINED
+; OCTET UNDEFINED
; SP UNDEFINED
-; START-OF-SPEECH UNDEFINED
-; STOP UNDEFINED
-; TEXT UNDEFINED
-; Url UNDEFINED
-; absoluteURI UNDEFINED
-; and UNDEFINED
-; cache-control UNDEFINED
-; cache-directive defined but not used
-; combinations UNDEFINED
-; confidence-threshold UNDEFINED
-; consisting UNDEFINED
-; content-encoding UNDEFINED
+; WSP UNDEFINED
; content-id UNDEFINED
-; content-length UNDEFINED
-; content-type UNDEFINED
-; either UNDEFINED
-; field-name defined but not used
-; field-value defined but not used
; generic-message defined but not used
-; message-body UNDEFINED
-; of UNDEFINED
-; or UNDEFINED
-; prosody-param-name UNDEFINED
-; prosody-param-value UNDEFINED
-; relativeURI UNDEFINED
-; speech-complete-timeout UNDEFINED
-; speech-incomplete-timeout UNDEFINED
-; status-code UNDEFINED
-; token UNDEFINED
-; uri UNDEFINED
-; vendor-av-pair-name UNDEFINED
-; vendor-av-pair-value UNDEFINED
-; voice-param-name UNDEFINED
-; voice-param-value UNDEFINED
+Content-Type = "Content-Type:" media-type
+IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT
+IPv6address = hexpart [ ":" IPv4address ]
+IPv6reference = "[" IPv6address "]"
+LWS = [ *WSP CRLF ] 1*WSP
+SWS = [ LWS ]
+UTF8-CONT = %x80-BF
+UTF8-NONASCII = ( %xC0-DF UTF8-CONT ) / ( %xE0-EF 2UTF8-CONT ) / ( %xF0-F7 3UTF8-CONT ) / ( %xF8-FB 4UTF8-CONT ) / ( %xFC-FD 5UTF8-CONT )
+abs-path = "/" path-segments
+absoluteURI = scheme ":" ( hier-part / opaque-part )
active-request-id-list = "Active-Request-Id-List:" request-id *( "," request-id ) CRLF
+alphanum = ALPHA / DIGIT
+attribute = token
audio-fetch-hint = "Audio-Fetch-Hint:" 1*ALPHA CRLF
+authority = srvr / reg-name
boolean-value = "true" / "false"
+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 )
completion-cause = "Completion-Cause:" 1*DIGIT SP 1*ALPHA CRLF
+confidence-threshold = "Confidence-Threshold:" 1*DIGIT CRLF
content-base = "Content-Base:" absoluteURI CRLF
+content-coding = token
+content-encoding = "Content-Encoding:" *WSP content-coding *( *WSP "," *WSP content-coding *WSP ) CRLF
+content-length = "Content-Length:" 1*DIGIT CRLF
content-location = "Content-Location:" ( absoluteURI / relativeURI ) CRLF
delta-seconds = 1*DIGIT
+domainlabel = alphanum / ( alphanum *( alphanum / "-" ) alphanum )
dtmf-interdigit-timeout = "DTMF-Interdigit-Timeout:" 1*DIGIT CRLF
dtmf-term-char = "DTMF-Term-Char:" CHAR CRLF
dtmf-term-timeout = "DTMF-Term-Timeout:" 1*DIGIT CRLF
+escaped = "%" HEXDIG HEXDIG
event-line = event-name SP request-id SP request-state SP mrcp-version CRLF
event-name = synthesizer-event / recognizer-event
-failed-uri = "Failed-URI:" Url CRLF
+failed-uri = "Failed-URI:" absoluteURI CRLF
failed-uri-cause = "Failed-URI-Cause:" 1*ALPHA CRLF
fetch-hint = "Fetch-Hint:" 1*ALPHA CRLF
fetch-timeout = "Fetch-Timeout:" 1*DIGIT CRLF
-field-content =  and consisting of either *TEXT or combinations of token
-field-name = token
-field-value = *( field-content / LWS )
-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
+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
generic-message = start-line message-header CRLF [ message-body ]
+hex4 = 1*4HEXDIG
+hexpart = hexseq / ( hexseq "::" [ hexseq ] ) / ( "::" [ hexseq ] )
+hexseq = hex4 *( ":" hex4 )
+hier-part = ( net-path / abs-path ) [ "?" query ]
+host = hostname / IPv4address / IPv6reference
+hostname = *( domainlabel "." ) toplabel [ "." ]
+hostport = host [ ":" port ]
jump-target = "Jump-Size:" speech-length-value CRLF
kill-on-barge-in = "Kill-On-Barge-In:" boolean-value CRLF
logging-tag = "Logging-Tag:" 1*ALPHA CRLF
+mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")"
+media-type = type "/" subtype *( ";" parameter )
+message-body = *OCTET
message-header = 1*( generic-header / resource-header )
method-name = synthesizer-method / recognizer-method
mrcp-version = "MRCP/" 1*DIGIT "." 1*DIGIT
n-best-list-length = "N-Best-List-Length:" 1*DIGIT CRLF
+net-path = "//" authority [ abs-path ]
new-audio-channel = "New-Audio-Channel:" boolean-value CRLF
no-input-timeout = "No-Input-Timeout:" 1*DIGIT CRLF
numeric-speech-length = ( "+" / "-" ) 1*DIGIT SP numeric-speech-unit
numeric-speech-unit = "Second" / "Word" / "Sentence" / "Paragraph"
+opaque-part = uric-no-slash *uric
+param = *pchar
+parameter = attribute "=" value
+password = *( unreserved / escaped / "&" / "=" / "+" / "$" / "," )
+path-segments = segment *( "/" segment )
+pchar = unreserved / escaped / ":" / "@" / "&" / "=" / "+" / "$" / ","
+port = 1*DIGIT
+prosody-param-name = 1*ALPHA
+prosody-param-value = 1*alphanum
prosody-parameter = "Prosody-" prosody-param-name ":" prosody-param-value CRLF
proxy-sync-id = "Proxy-Sync-Id:" 1*ALPHA CRLF
+qdtext = LWS / "!" / %x23-5B / %x5D-7E / UTF8-NONASCII
+query = *uric
+quoted-pair = "" ( %x00-09 / %x0B-0C / %x0E-7F )
+quoted-string = SWS DQUOTE *( qdtext / quoted-pair ) DQUOTE
recognition-timeout = "Recognition-Timeout:" 1*DIGIT CRLF
recognizer-context-block = "Recognizer-Context-Block:" 1*ALPHA CRLF
-recognizer-event = START-OF-SPEECH / RECOGNITION-COMPLETE
+recognizer-event = "START-OF-SPEECH" / "RECOGNITION-COMPLETE"
recognizer-header = confidence-threshold / sensitivity-level / speed-vs-accuracy / n-best-list-length / 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
-recognizer-method = SET-PARAMS / GET-PARAMS / DEFINE-GRAMMAR / RECOGNIZE / GET-RESULT / RECOGNITION-START-TIMERS / STOP
+recognizer-method = "SET-PARAMS" / "GET-PARAMS" / "DEFINE-GRAMMAR" / "RECOGNIZE" / "GET-RESULT" / "RECOGNITION-START-TIMERS" / "STOP"
recognizer-start-timers = "Recognizer-Start-Timers:" boolean-value CRLF
+reg-name = 1*( unreserved / escaped / "$" / "," / ";" / ":" / "@" / "&" / "=" / "+" )
+rel-path = rel-segment [ abs-path ]
+rel-segment = 1*( unreserved / escaped / ";" / "@" / "&" / "=" / "+" / "$" / "," )
+relativeURI = ( net-path / abs-path / rel-path ) [ "?" query ]
request-id = 1*DIGIT
request-line = method-name SP request-id SP mrcp-version CRLF
request-state = "COMPLETE" / "IN-PROGRESS" / "PENDING"
+reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+" / "$" / ","
resource-header = recognizer-header / synthesizer-header
-response-line = mrcp-version SP request-id SP status-code SP request-state CRLF
save-waveform = "Save-Waveform:" boolean-value CRLF
+scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
+segment = *pchar *( ";" param )
sensitivity-level = "Sensitivity-Level:" 1*DIGIT CRLF
speak-length = "Speak-Length:" speech-length-value CRLF
speak-restart = "Speak-Restart:" boolean-value CRLF
-speaker-profile = "Speaker-Profile:" uri CRLF
+speaker-profile = "Speaker-Profile:" absoluteURI CRLF
+speech-complete-timeout = "Speech-Complete-Timeout:" 1*DIGIT CRLF
+speech-incomplete-timeout = "Speech-Incomplete-Timeout:" 1*DIGIT CRLF
speech-language = "Speech-Language:" 1*ALPHA CRLF
speech-length-value = numeric-speech-length / text-speech-length
speech-marker = "Speech-Marker:" 1*ALPHA CRLF
speed-vs-accuracy = "Speed-Vs-Accuracy:" 1*DIGIT CRLF
-start-line = request-line / response-line / event-line
+srvr = [ [ userinfo "@" ] hostport ]
+start-line = request-line / status-line / event-line
+status-code = 1*DIGIT
+status-line = mrcp-version SP request-id SP status-code SP request-state CRLF
+subtype = token
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
synthesizer-method = "SET-PARAMS" / "GET-PARAMS" / "SPEAK" / "STOP" / "PAUSE" / "RESUME" / "BARGE-IN-OCCURRED" / "CONTROL"
text-speech-length = 1*ALPHA SP "Tag"
+token = 1*( alphanum / "-" / "." / "!" / "%" / "*" / "_" / "+" / "`" / "'" / "~" )
+toplabel = ALPHA / ( ALPHA *( alphanum / "-" ) alphanum )
+type = token
+unreserved = alphanum / mark
+uric = reserved / unreserved / escaped
+uric-no-slash = unreserved / escaped / ";" / "?" / ":" / "@" / "&" / "=" / "+" / "$" / ","
+user = 1*( unreserved / escaped / user-unreserved )
+user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"
+userinfo = user [ ":" password ] "@"
+value = token / quoted-string
+vendor-av-pair-name = 1*ALPHA
+vendor-av-pair-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
+voice-param-name = 1*ALPHA
+voice-param-value = 1*alphanum
voice-parameter = "Voice-" voice-param-name ":" voice-param-value CRLF
-waveform-url = "Waveform-URL:" Url CRLF
+waveform-url = "Waveform-URL:" absoluteURI CRLF
2004-09-15
07 Bill Fenner [Ballot Position Update] New position, Discuss, has been recorded for Bill Fenner by Bill Fenner
2004-09-15
07 David Kessens [Ballot Position Update] New position, No Objection, has been recorded for David Kessens by David Kessens
2004-09-13
07 Steven Bellovin
[Ballot discuss]
No Security Considerations section.

I didn't read this closely, but it appears that the only authentication mechanism is a password in a URI, …
[Ballot discuss]
No Security Considerations section.

I didn't read this closely, but it appears that the only authentication mechanism is a password in a URI, i.e., a clear-text password.
2004-09-13
07 Steven Bellovin [Ballot Position Update] New position, Discuss, has been recorded for Steve Bellovin by Steve Bellovin
2004-09-10
07 Scott Hollenbeck
[Ballot discuss]
Missing security considerations and IANA considerations sections.

I don't quite understand if the application/mrcp content, which looks like XML to me, is a …
[Ballot discuss]
Missing security considerations and IANA considerations sections.

I don't quite understand if the application/mrcp content, which looks like XML to me, is a normative part of this specification.  If it is, a normative reference to the appropriate W3C XML specifications needs to be added.

Where is the application/mrcp MIME type registered?  It's not in the IANA registry now, and I don't see a template in the document.
2004-09-10
07 Scott Hollenbeck [Ballot comment]
References should be split normative/informative.
2004-09-10
07 Scott Hollenbeck
[Ballot discuss]
Missing security considerations and IANA considerations sections.

I don't quite understanbd if the application/mrcp content, which looks like XML to me, is a …
[Ballot discuss]
Missing security considerations and IANA considerations sections.

I don't quite understanbd if the application/mrcp content, which looks like XML to me, is a normative part of this specification.  If it is, a normative reference to the appropriate W3C XML specifications needs to be added.

Where is the application/mrcp MIME type registered?  It's not in the IANA registry now, and I don't see a template in the document.
2004-09-10
07 Scott Hollenbeck [Ballot Position Update] New position, Discuss, has been recorded for Scott Hollenbeck by Scott Hollenbeck
2004-09-09
07 Jon Peterson State Changes to IESG Evaluation from AD Evaluation by Jon Peterson
2004-09-09
07 Jon Peterson Placed on agenda for telechat - 2004-09-16 by Jon Peterson
2004-09-09
07 Jon Peterson [Ballot Position Update] New position, Yes, has been recorded for Jon Peterson
2004-09-09
07 Jon Peterson Ballot has been issued by Jon Peterson
2004-09-09
07 Jon Peterson Created "Approve" ballot
2004-09-09
07 (System) Ballot writeup text was added
2004-09-09
07 (System) Last call text was added
2004-09-09
07 (System) Ballot approval text was added
2004-09-09
07 Jon Peterson [Note]: 'Verified with speechsc chairs that this is not an end-run around ongoing work there.' added by Jon Peterson
2004-09-09
07 Jon Peterson State Changes to AD Evaluation from Publication Requested by Jon Peterson
2004-03-18
07 Amy Vezza Removed from agenda for telechat - 2004-04-01 by Amy Vezza
2004-03-18
07 Harald Alvestrand Shepherding AD has been changed to Jon Peterson from Harald Alvestrand
2004-03-17
07 Dinara Suleymanova Draft Added by Dinara Suleymanova
2004-01-12
05 (System) New version available: draft-shanmugham-mrcp-05.txt
2003-05-01
04 (System) New version available: draft-shanmugham-mrcp-04.txt
2003-01-27
03 (System) New version available: draft-shanmugham-mrcp-03.txt
2002-07-22
02 (System) New version available: draft-shanmugham-mrcp-02.txt
2001-11-27
01 (System) New version available: draft-shanmugham-mrcp-01.txt
2001-11-14
00 (System) New version available: draft-shanmugham-mrcp-00.txt