2

外部vxml文法の構造はどのように見えますか?

現時点では、次のインライン文法があります。

<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>

このインライン文法の代わりに書きたい

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

外部の文法を参照してください。

インライン文法をコピーしてmygrammer.grxmlに入れることはできますか?

または、もう少しコード行が必要ですか?

前もって感謝します

- - 編集 - -

今、私のインライン文法が以前あったところに、私は持っています

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

私の外部文法は次のようになります(あなたが言ったように):

<?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>

しかし、それは機能しません。エラーが発生し、アプリケーションが停止したことを示しています。私は何か間違ったことをしましたか?このファイルは、.vxmlと同じディレクトリにあります。

MS SpeechServer2007を使用しています

- - - - - - - - 編集 - - - -

こんにちは、

私は次のように文法ファイルを参照しています:

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

以前に使用した文法に加えて、今はこの例を使用しています(Webサイトから)。

 <?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>

mode=voiceとdtmfで試してみました。

音声サーバーに期待するものは他に必要ですか?ファイルは同じフォルダにあります。

4

1 に答える 1

4

少なくとも、XML宣言(エントリ)が必要です。Doctypeは通常オプションです(一部のパーサーでは、避ける方がよいでしょう)。ほとんどの文法では、他のほとんどの属性も回避できます。

以下は、SRGS(文法)仕様の例からのものです。

  <?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>

特定の例では、ほとんどのプラットフォームでは、以下で十分です。

<?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>

上記で、Doctypeが問題になる場合があることを説明しました。リストされている場合、DTDを継続的にフェッチするシステムをいくつか見つけました。これは悪い形式ですが、常に気付かれているわけではありません。インターネットリンクがダウンした場合、システムは正しく応答しません。また、十分な量がある場合は、DOS攻撃として識別され、一定期間ブロックされる可能性があります。

于 2011-01-06T10:46:11.967 に答える