2012-02-19 6 views
9

Hem C# hem de Microsoft Speech platformunda göreceli olarak yeniyim, ancak ücretsiz dikte etmeyi yazması gereken bir sunucu uygulaması üzerinde çalışıyorum. MS Konuşma Platformu SDK'sı mükemmel görünüyordu ve sunucuda çalışıyor, çünkü AppendDictation() yöntemini GrammarBuilder'de referans göstermiyor.AppendDictation?

Microsoft Speech Platform SDK 11 kullanıyorum ve bir dilbilgisi tanımlarsanız uygulama çalışıyor ama AppendDictation() eklemek an, bu hata ile buluştu ediyorum: Hatta

Cannot find grammar referenced by this grammar. 

belgelerinden Bu örnek başarısız gibi görünüyor:

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

İşin garibi, ben LoadGrammarAsync için gramer yükleri LoadGrammar değiştirmek (ya da en azından olay işleyicisi denir) ise, ancak o zaman recoginzer bu hata ile başarısız:

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

Platformun sunucu sürümünün dikte dikmeyi desteklemediğini okudum, ancak bunun işe yaramayan bir yöntemle gönderilmesi tuhaf görünüyor. Sunucu üzerinde çalışmak için bir dikte dilbilgisi almayı başarabilmiş olan var mı? Neyi yanlış yapıyorum?

çok teşekkürler gelecekte bu rastlamak olabilir herkes için

cevap

11

- Şimdi ileri geri Microsoft ile gönderilecektir ve sonuçta bu yanıtı aldık:

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.

Değil cevap I umut ediyordu, ama açıklıyor.

+1

Dikte etmek için başka bir yol var mı? – KTF

3

System.Speech kullanırsanız, dilbilgisini _recognizer.LoadGrammar(new DictationGrammar()); ile yükleyebilir ve iyi çalışır. Tanıma kötü değil, ancak 16KHz PCM dalga dosyası veya diğer uyumlu dalga dosya yapılandırmalarını kullanmanız gerekiyor. Ne yazık ki Microsoft.Speech ile kullanılamaz.