2010-07-07 8 views
0

TellMe 기반의 엔진을 사용하고 있습니다. 나는 사용자가 동일한 것으로 간주되는 몇 가지 다른 것들 중 하나를 말할 수있는 문법 예제를 보았습니다. 그러나 필자가 본 모든 예제는 인라인 문법 (vxml 엔진을 사용하여 작동하지 않음) 용이었습니다. 나는 이것을하기 위해 어떻게 .grxml 파일을 바꿀 수 있는지 알고 싶다. 파일 :vxml : 동일한 입력으로 문법 정의하기

<?xml version="1.0"?> 
<!-- created by Matthew Murdock. Grammars for speech rec menus --> 
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar  http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0.2006"> 
    <rule id="keep"> 
     <one-of> 
     <item>exit</item> 
     <item>exit the system</item> 
     <item>another</item> 
     <item>another mailbox</item> 
     <item>play</item> 
     <item>play back</item>      
     </one-of> 
    </rule> 
</grammar> 

대신 6 개의 항목이 있습니다. 3 개의 항목이 있고, 각각 2 개의 가능한 발음이 있습니다. 내가 어떻게이 일을 할 수 있는지에 대한 아이디어가 있니?

+0

(심지어 사용 된 경우) 일반이 없지만 태그 목록, SO SRGS 및 SISR 추가 아마 가치에 태그. 다른 몇 가지 VoiceXML 개발자가 여기에 질문을하고 누군가가 그로부터 가치를 얻을 수도 있습니다. –

답변

0

나는 그것을 알아 냈다. 내가 같이 내 문법 변경 : callerInput $ .interpretation가 보유하고있는 떨어져 다시 내 스크립트 대신 (변수가 <field> 태그에 지정된) callerInput에 내 행동을 내놓고의, 그리고

<?xml version="1.0"?> 
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar  http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0-literals"> 
    <rule id="keep"> 
     <one-of> 
     <item><ruleref id="#exit"/></item> 
     <item><ruleref id="#play"/></item> 
     </one-of> 
    </rule> 
    <rule id="exit"> 
     <one-of> 
     <item>exit</item> 
     <item>exit the system</item> 
     </one-of> 
     <tag>out.result = "exit"</tag> 
    </rule> 
    <rule id="play"> 
     <one-of> 
     <item>play</item> 
     <item>play back</item> 
     </one-of> 
     <tag>out.result = "play"</tag> 
    </rule> 
</grammar> 

을, 나는 그들을 기반으로 xml은 문법의 <tag> 요소에 out.result를 할당 한 것을 포함합니다.

발신자의 문자 입력이 아닌 "해석"에 기반하여 작업을 수행하는 것이 좋습니다.

참고 : 우리 자신의 vxml 엔진을 사용하기 때문에 xml에서 해석 값을 추출 할 수있는 방법을 만들 수있었습니다.

0

대답은 입력 경로에 의미를 첨부하는 메커니즘을 제공하는 SISR 사양에 있습니다.

<?xml version="1.0"?> 
<grammar xmlns="http://www.w3.org/2001/06/grammar" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2001/06/grammar  http://www.w3.org/TR/speech-grammar/grammar.xsd" xml:lang="en" version="1.0" mode="voice" scope="dialog" tag-format="semantics/1.0-literals"> 
    <rule id="keep"> 
     <one-of> 
     <item> 
     <one-of> 
     <item>exit</item> 
     <item>exit the system</item> 
     </one-of> 
     <tag>exit</tag> 
     </item> 

     <item> 
     <one-of> 
     <item>another</item> 
     <item>another mailbox</item> 
     </one-of> 
     <tag>another</tag> 
     </item> 

     <item> 
     <one-of> 
     <item>play</item> 
     <item>play back</item>      
     </one-of> 
     <tag>play</tag> 
     </item> 
     </one-of> 
    </rule> 
</grammar> 

몇 가지 알고 : 귀하의 예를 다시 쓰기

  • 나는 문자 그대로 태그 형식 (문법 요소의 태그 형식의 속성을 알) 선택했다. 또한 "semantics/1.0"을 사용하여 구현 될 수 있었고 태그의 내용은 다음과 같이 보입니다 : out = "exit";
  • TellMe 태그 형식 값은 다를 수 있지만, development guide은 표준을 따름을 의미합니다.
  • 작업을 마친 후에는 필러 문법 작성을 망설이지 않아도됩니다 (SRGS 말하기 규칙). 필러 규칙은 SI (태그 요소 없음)가없는 규칙이며 사람들이 응답에 추가하는 일반적인 문구를 포함합니다. 예를 들어, 문법의 끝 부분에 추가 할 수 후행 규칙 :
 </one-of> 
     <item repeat="0-1"><ruleref uri="#trailing"/></item> 
    </rule> 

    <rule id="trailing> 
     <one-of> 
     <item>please</item> 
     <item>thank you</item> 

     </one-of> 
    </rule> 

</grammar> 

이 응답의 자연적인 유형을 지원합니다. 이것은 귀하의 전화 기반에 따라 중요 할 수도 있고 아닐 수도 있습니다. 필러 문법은 매우 클 수 있지만 재사용 성이 높습니다. 입력 시작 부분에 필러를 추가 할 수도 있습니다. 풍부한 음성 응용 프로그램의 경우 튜닝 프로세스에서 가장 중요한 이득은 호출자가 말한 실제 문구와 개발자 또는 VUI 디자이너가 생각한 내용을 포함하도록 문법을 업데이트하는 것입니다.

+0

죄송합니다. 귀하의 제안이 작동하지 않습니다.''은 TellMe 또는 내 엔진에서 ''의 하위 항목 일 수 없습니다. 그게 도움이된다면 나는 음성 녹음을 위해 Lumenvox를 사용하고있다. – mtmurdock

+0

정확합니다. 내부 요소 인 요소로 묶어야합니다. –

2

더 컴팩트 한 형태 :

<rule id="exit"> 
    exit <item repeat="0-1">the system</item> 
    <tag>out.result = "exit"</tag> 
    </rule> 
    <rule id="play"> 
    play <item repeat="0-1">back</item> 
    <tag>out.result = "play"</tag> 
    </rule>