2017-04-05 37 views
0

在Visual Studio中的演讲很混乱。在其他语言甚至VB6中,我有使用SAPI 5.4对象的工作代码。我发现Visual Studio中有Microsoft.Speech和System.Speech对象。我认为这是我可以有托管代码。你仍然可以直接编程到SAPI吗?我应该知道为什么我想要使用一种方法或另一种方法?该代码甚至不是很相似。此应用程序将在Windows Server上运行,并使用VB.NET编写。是否有理由使用Microsoft.Speech命名空间而不是直接在Visual Studio中使用SAPI 5.4?

回答

0

您可能首先需要查看this question的答案。

假设你的Windows服务器上运行,你几乎可以肯定要Microsoft.Speech而非System.Speech,原因如下:

  • 服务器不包括任何默认SR引擎;您必须安装桌面体验包;
  • System.Speech需要培训才能正常工作;
  • Microsoft.Speech的SR引擎可以与低质量音频兼容。

您仍然可以直接编程到SAPI; Server SAPI和Desktop SAPI之间唯一真正的区别是底层的SR引擎。 (客户端API完全一样。)

直接编程到SAPI是比较复杂的,但是给你更多的控制。如果不知道你的最终目标是什么,我不能推荐其中一个。

+0

这是一个电话命令和控制应用程序。多年来,我已经为SAPI写了几个应用程序,并试图理解复杂和令人困惑的新界面。我想知道是不是写入其中一个命名空间,直接使用SAPI和MMSYSTEM不起作用。我同意服务器版本(microsoft.speech)是我需要的,而不是桌面(system.speech),原因有几个,但不知道如何使用任何已安装的wave音频设备驱动程序输入。在一个主要的监督下,微软似乎还没有实施.SetInputToAudioDeviceID。 – Fred

+0

他们只允许你.SetInputToDefaultAudioDevice和.SetInputToAudioStream。在SAPI,我可以在VB中做到这一点:昏暗MMSysAudioIn1作为ISpeechMMSysAudio 集MMSysAudioIn1 =新SpMMAudioIn AudioIn1.DeviceId = PhoneLine1.WaveRecordID MMSysAudioIn1.Format.Type = SAFT8kHz16BitMono – Fred

+0

我一直在研究2周,看不出将语音识别输入设置为PC上安装的任何输入。我想我需要.SetInputToAudioStream,但不知道,并且无法在VB.NET中找到代码来指定特定已安装波形设备的“wave in device ID”。如果我甚至想要一个不是默认音频设备的USB麦克风呢?我怎么指向它? – Fred

相关问题