我正在尝试制作一个使用Microsoft语音识别API(使用Kinect)的C#程序,但我很难开始使用。 我有使用声明
using Microsoft.Speech.AudioFormat;
using Microsoft.Speech.Recognition;
但它给了我错误“类型或名称空间名称'Speech'在命名空间'Microsoft'中不存在。你缺少一个程序集引用吗?”
有谁知道要添加什么? System.Speech没有做到这一点。
答案 0 :(得分:22)
确保将此程序集添加到项目中:C:\ Program Files \ Microsoft SDKs \ Speech \ v11.0 \ Assembly \ Microsoft.Speech.dll。
更多详情可在MSDN
找到答案 1 :(得分:9)
我认为有一些混乱,因为您使用的是Kinect SDK,这里的一些答案涉及相关的SDK(System.Speech在.net和Microsoft.Speech中随各种Microsoft服务器产品和服务器一起分发)语音平台)。根据您在其他答案中的评论,似乎Kinect SDK使用Microsoft.Speech命名空间,您的应用必须引用Kinect SDK附带的Microsoft.Speech.dll。
只是为了澄清一些事情(我希望):
System.Speech是一个核心.net API,实现它的识别器包含在Windows 7中。它是一个客户端或桌面识别器,可以针对特定用户进行培训,并包含听写语法。
Microsoft.Speech是一个类似的.net API,但有点不同。支持Microsoft.Speech的识别器是各种服务器产品的一部分,如UCMA和Microsoft Server Speech Platform。
正如您所指出的,Microsoft.Speech也是用于Kinect识别器的API。这在Philipp Schmid在评论Speech C# How To (Kinect)中提到的MSDN链接中有记录。我没有和Kinect合作,但这是有道理的,因为识别器不需要演讲者培训。
这些资源有点过时,因为早于Kinect,但它们可能会有所帮助:
Microsoft.Speech和System.Speech类似,但不同。见What is the difference between System.Speech.Recognition and Microsoft.Speech.Recognition?
要开始使用.NET语音,几年前在http://msdn.microsoft.com/en-us/magazine/cc163663.aspx发表了一篇非常好的文章。这可能是迄今为止我发现的最好的介绍性文章。它有点过时了,但非常好。 (测试结束后删除了AppendResultKeyValue方法。)本文展示了System.Speech命名空间,但大部分都可以直接映射到Microsoft.Speech。
答案 2 :(得分:4)
你需要这样做,这对我有用。
从以下位置导入Microsoft.Speech.dll:
C:\Windows\assembly\GAC_MSIL\Microsoft.Speech\11.0.0.0__31bf3856ad364e35\Microsoft.Speech.dll
答案 3 :(得分:1)
请尝试使用System.Speech.Recognition
命名空间。 Microsoft.Speech.Recognition
命名空间是Office Communications Server产品的一部分。
帮助链接:System.Speech.Recognition
Office Communications Server(UCMA应用程序)UCMA Speech SDK