1

当我尝试加载我以编程方式创建的语法时,出现错误: SAPI 没有实现语音字母选择。

我的代码:

Public Class Form1

Dim engine As New Speech.Recognition.SpeechRecognitionEngine  
Dim gram As new Speech.Recognition.Grammar("C:\Test\Speech\mygrammar.xml")      
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)   Handles MyBase.Load

Dim choices = New Recognition.Choices()

choices.Add("Red")
choices.Add("Blue")
choices.Add("Green")
choices.Add("Yellow")
Dim gb = New GrammarBuilder()

gb.Append(choices)

Dim doc = New Speech.Recognition.SrgsGrammar.SrgsDocument(gb)
IO.Directory.CreateDirectory("C:\Test")
IO.Directory.CreateDirectory("C:\Test\Speech")
Dim xWriter = System.Xml.XmlWriter.Create("C:\Test\Speech\mygrammar.xml")

doc.WriteSrgs(xWriter)
xWriter.Close()

Dim compiledFile = New FileStream("C:\Test\Speech\mycompiledgrammar.cfg", FileMode.OpenOrCreate)

Speech.Recognition.SrgsGrammar.SrgsGrammarCompiler.Compile("C:\Test\Speech\mygrammar.xml", compiledFile)
compiledFile.Close()

结束子

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
engine.LoadGrammar(gram) 'There's the error  
engine.SetInputToWaveFile("D:\record.wav")  
End Sub
End Class
4

1 回答 1

1

您可能正在使用 Windows Pre-Vista (NT5)...该错误是由于 SAPI 版本不是 5.3 或更高...在 Windows 7 中测试代码,一切都应该运行正常...

您可以在库中看到问题,第 299 到 325 行,我将链接放在下面

C# 中 .NET 框架的源代码,C# .NET 中的 RecognizerBase.cs 源代码

保持良好...

于 2013-11-14T23:00:11.267 回答