Mar*_*nof 6 .net c# speech-recognition sapi speech-to-text
有谁知道如何在.NET应用程序中更改识别配置文件?
我正在编写一个.NET应用程序,它使用System.Speech.Recognition命名空间中的功能进行语音识别.我输入系统的音频来自多个不同的用户.我希望能够训练系统以更准确地识别来自每个不同用户的语音.
我在Windows(本例中为Windows 7)中找到了语音识别控制面板,我可以在其中配置训练配置文件.为自己设置一个配置文件并进行培训过程可以显着提高识别的准确性.因此,我可以为每个用户设置配置文件并让他们进行培训,但我需要能够在我的应用程序中选择正确的配置文件.
我的应用程序是"服务器",它一次接收来自一个或多个用户的音频流并执行语音识别.因此,我需要能够以编程方式为我的应用程序创建的每个识别引擎实例指定哪个识别配置文件.这不是单个用户应用程序,因此我不能让他们从Windows控制面板中选择他们的配置文件.
我没有找到通过 System.Speech.Recognition 来完成此操作的方法,但您可以通过 voicelib (SAPI IDispatch 兼容 API)来完成此操作。查看ISpeechRecognizer::Profile。
要设置配置文件,您需要添加
using SpeechLib;
Run Code Online (Sandbox Code Playgroud)
与 System.Speech.Recognition 一起添加到您的代码中。
棘手的部分是在创建 System.Speech.Recognition.RecognitionEngine 时让您通过 SpeechLib 设置的配置文件“坚持”。我可能会将配置文件设置为默认配置文件(通过 SpeechLib),创建 RecognitionEngine,然后重置默认配置文件。
(我假设您不打算使用共享识别器,这在多用户场景中不起作用。)
您可能需要一个关键部分来确保一次只有一个线程可以创建 RecognitionEngine。