2011-01-05 7 views
2

Wie sieht die Struktur einer externen vxml-Grammatik aus?Struktur einer externen Grammatik in voicexml

im Moment ich habe folgende Inline-Grammatik:

<grammar root="main" version="1.0" xml:lang="de-DE"> 

    <rule id="main" scope="public"> 
    <one-of> 
     <item> 1 </item> 
     <item> 2 </item> 
     <item>3 </item> 
     <item> 4</item> 
    </one-of> 
    </rule> 

</grammar> 

anstelle dieser Inline-Grammatik i

<grammar src = "mygrammar.grxml" type="application/srgs+xml" /> 

und beziehen sich auf die externe Grammatik schreiben möchten.

kann ich einfach die Inline-Grammatik kopieren und in mygrammer.grxml ablegen?

oder brauche ich Codezeilen?

Dank im Voraus

---- ---- EDIT

jetzt, wo früher meine Inline-Grammatik war, habe ich

<grammar src = "grammar_produkte.grxml" type="application/srgs+xml" /> 

und meine externe Grammatik sieht wie folgt aus (wie Sie sagten):

<?xml version="1.0" ?> 
<grammar root="main" version="1.0" xml:lang="de-DE"> 

    <rule id="main" scope="public"> 
    <one-of> 
     <item> 1 </item> 
     <item> 2 </item> 
     <item> 3 </item> 
     <item> 4 </item> 
    </one-of> 
    </rule> 
</grammar> 

aber es funktioniert nicht. Es besagt, dass ein Fehler aufgetreten ist und dass die Anwendung beendet wird. Habe ich etwas falsch gemacht? Die Datei befindet sich im selben Verzeichnis wie die .vxml.

Ich verwende MS Speech Server 2007

---------------- bearbeiten -------

Hallo,

I‘ m Referenzierung auf die Grammatikdatei mit:

<grammar src = "grammar_produkte2.grxml" type="application/srgs+xml" /> 

Neben der Grammatik verwendet i vor, jetzt benutze ich dieses Beispiel aus (von der Website):

<?xml version="1.0"?> 

<grammar xml:lang="de-DE" 
tag-format="semantics-ms/1.0" version="1.0" 
root="Root" mode="voice" 
xmlns="http://www.w3.org/2001/06/grammar" 
xmlns:sapi= 
"http://schemas.microsoft.com/ 
Speech/2002/06/SRGSExtensions"> 


    <rule id="produkte" scope="public"> 
     <one-of> 
     <item> 
      <item>ham</item> 
      <tag>$._value = "ham"</tag> 
     </item> 
     <item> 
      <item>roast beef</item> 
      <tag>$._value = "roast beef"</tag> 
     </item> 
     <item> 
      <item>italian</item> 
      <tag>$._value = "italian"</tag> 
     </item> 
     </one-of> 
    </rule> 
</grammar> 

Ich versuchte es mit Modus = Sprache und dtmf.

Benötige ich noch etwas anderes, um den Sprachserver zu erwarten? Die Dateien befinden sich im selben Ordner.

Antwort

4

Sie benötigen mindestens die XML-Deklaration (Eintrag). Doctypes sind normalerweise optional (und bei einigen Parsern ist es besser, sie zu vermeiden). Die meisten anderen Attribute für die meisten Grammatiken können ebenfalls vermieden werden.

Das Folgende ist aus einem Beispiel in der SRGS (grammar) specification:

<?xml version="1.0" encoding="ISO-8859-1"?> 

    <!DOCTYPE grammar PUBLIC "-//W3C//DTD GRAMMAR 1.0//EN" 
     "http://www.w3.org/TR/speech-grammar/grammar.dtd"> 
    <!-- the default grammar language is US English --> 
    <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-US" version="1.0"> 
    ... 
    </grammar> 

In Ihrem speziellen Beispiel, und für die meisten Plattformen sollte die folgende ausreichend:

<?xml version="1.0" ?> 
<grammar root="main" version="1.0" xml:lang="de-DE"> 
    <rule id="main" scope="public"> 
    <one-of> 
     <item> 1 </item> 
     <item> 2 </item> 
     <item>3 </item> 
     <item> 4</item> 
    </one-of> 
    </rule> 
</grammar> 

Oben erwähnte ich Doctype ist in einigen Fällen ein Problem. Ich habe einige Systeme gefunden, die fortlaufend DTDs abrufen, wenn sie aufgelistet sind. Das ist schlechte Form, aber nicht immer bemerkt.Wenn die Internetverbindung unterbrochen wird, reagiert das System nicht richtig. Und wenn Sie genug Volumen haben, werden Sie möglicherweise als DOS-Angriff identifiziert und für eine gewisse Zeit blockiert.

+0

hmm .. es funktioniert nicht, schrieb ich mehr Details in meinem Beitrag oben. – Tyzak

+0

Ich habe ein Beispiel unter http://www.devx.com/codemag/Article/30085/1954 für die MSS-Plattform gefunden. Es könnte ein Tag-Format-Attribut im Grammatikelement benötigen. Der Standardwert für Ihre Grammatik wäre Semantik/1.0-Literale, aber wenn sie nicht inline benötigt würde, würden Sie nicht erwarten, dass sie als externe Grammatik benötigt wird. Ansonsten sieht es richtig aus und die anderen Attribute sollten optional sein. –

+0

Hallo, ich habe meinen Beitrag oben bearbeitet – Tyzak