2012-02-19 9 views
9

मैं सी # और माइक्रोसॉफ्ट स्पीच प्लेटफॉर्म दोनों के लिए अपेक्षाकृत नया हूं, लेकिन मैं एक सर्वर एप्लिकेशन पर काम कर रहा हूं जिसे मुफ्त श्रुतलेख को प्रतिलिपि बनाने की आवश्यकता होगी। एमएस स्पीच प्लेटफार्म एसडीके सही लग रहा था, और सर्वर पर काम करता है, जब तक कि मैं ग्रामरबिल्डर में AppendDictation() विधि का संदर्भ नहीं देता।माइक्रोसॉफ्ट स्पीच प्लेटफार्म 11 (सर्वर) पर ऐपेंड डिक्शनेशन?

मैं माइक्रोसॉफ्ट भाषण प्लेटफार्म एसडीके 11 का उपयोग कर रहा है, और आवेदन ठीक काम करता है अगर मैं एक व्याकरण को परिभाषित, लेकिन इस समय मैं AppendDictation() में जोड़ने के लिए, मैं इस त्रुटि के साथ मुलाकात कर रहा हूँ:

Cannot find grammar referenced by this grammar. 

भी दस्तावेज़ से यह नमूना असफल लगता है:

GrammarBuilder startStop = new GrammarBuilder(); 
GrammarBuilder dictation = new GrammarBuilder(); 
dictation.AppendDictation(); 

startStop.Append(new SemanticResultKey("StartDictation", new SemanticResultValue("Start Dictation",true))); 
startStop.Append(new SemanticResultKey("DictationInput", dictation)); 
startStop.Append(new SemanticResultKey("StopDictation", new SemanticResultValue("Stop Dictation", false))); 
Grammar grammar=new Grammar(startStop); 
grammar.Enabled=true; 
grammar.Name=" Free-Text Dictation "; 
_recognizer.LoadGrammar(grammar); 

अजीब तरह, अगर मैं LoadGrammarAsync को LoadGrammar बदलने के लिए, व्याकरण भार (या कम से कम ईवेंट हैंडलर कहा जाता है), लेकिन फिर recoginzer इस त्रुटि के साथ विफल:

Error: At least one grammar must be loaded before doing a recognition. 

मैंने पढ़ा है कि प्लेटफॉर्म का सर्वर संस्करण श्रुतलेख का समर्थन नहीं करता है, लेकिन ऐसा लगता है कि यह एक ऐसी विधि के साथ जहाज करेगा जो काम नहीं करता है। क्या किसी ने सर्वर पर काम करने के लिए एक श्रुतलेख व्याकरण प्राप्त करने में कामयाब रहा है? मैं क्या गलत कर रहा हूं?

बहुत धन्यवाद

उत्तर

11

किसी को जो भविष्य में इस दिखाई दे सकते के लिए - मैं अब आगे और पीछे माइक्रोसॉफ्ट के साथ ईमेल करते हैं, और अंत में इस प्रतिक्रिया मिली:

The managed interfaces (Microsoft.Speech and System.Speech) are built on top of the native SAPI interfaces. These interfaces are the same for both the Server engine and the Desktop engine.

BUT the engine itself is responsible for implementing dictation, and the Server engine does not do so. Therefore, the call will fail when you load the grammar.

नहीं जवाब मैं उम्मीद कर रहा था, लेकिन यह समझाता है।

+1

क्या तानाशाही करने का कोई और तरीका है? – KTF

3

यदि आप System.Speech का उपयोग करते हैं तो आप _recognizer.LoadGrammar(new DictationGrammar()); के साथ व्याकरण लोड कर सकते हैं, और यह अच्छी तरह से काम करेगा। मान्यता खराब नहीं है, लेकिन फिर आपको 16KHz पीसीएम तरंग फ़ाइल या अन्य संगत लहर फ़ाइल कॉन्फ़िगरेशन का उपयोग करना होगा। अफसोस की बात है Microsoft.Speech के साथ उपलब्ध नहीं है।

संबंधित मुद्दे