c# - System.Speech.Recognition 选择识别配置文件

标签 c# .net speech-recognition sapi speech-to-text

有谁知道如何在 .NET 应用程序中更改识别配置文件?

我正在编写一个 .NET 应用程序,它使用 System.Speech.Recognition 命名空间中的功能进行语音识别。我输入系统的音频来自多个不同的用户。我希望能够训练系统更准确地识别来自每个不同用户的语音。

我在 Windows(本例中为 Windows 7)中找到了语音识别控制面板,我可以在其中配置训练配置文件。为自己设置个人资料并进行培训过程显着提高了识别的准确性。因此,我可以为每个用户设置配置文件并让他们执行培训过程,但随后我需要能够在我的应用程序中选择正确的配置文件。

我的应用程序是一个“服务器”,它一次从一个或多个用户接收音频流并执行语音识别。因此,我需要能够以编程方式为我的应用程序创建的识别引擎的每个实例指定要使用的识别配置文件。这不是单用户应用程序,所以我不能只让他们从 Windows 控制面板中选择他们的配置文件。

最佳答案

我看不到通过 System.Speech.Recognition 来完成此操作的方法,但您可以通过 speechlib(与 SAPI IDispatch 兼容的 API)来完成。看ISpeechRecognizer::Profile .

要设置配置文件,您需要添加

using SpeechLib;

您的代码,以及 System.Speech.Recognition。

棘手的部分是让您在创建 System.Speech.Recognition.RecognitionEngine 时通过 SpeechLib 设置的配置文件“固定”。我可能会将配置文件设置为默认配置文件(通过 SpeechLib),创建 RecognitionEngine,然后重置默认配置文件。

(我假设您不打算使用共享识别器,它在多用户场景中不起作用。)

您可能需要一个关键部分来确保一次只有一个线程可以创建 RecognitionEngine。

关于c# - System.Speech.Recognition 选择识别配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2135065/

相关文章:

c# - .net 中 CreateJobObject/SetInformationJobObject pinvoke 的工作示例?

c# - 使用 DotnetopenAuth 时报告和记录错误

c# - Blazor:从 HTML onclick 调用的 JS 函数调用 C# 静态方法——为什么 JS 找不到该方法?

c# - 如何为可为空的 bool 值读取 null

c# - 如何在不使用 AppDomains 的情况下实现 .net 插件?

c# - 如何在 .NET 中显示负号?

.net - 使用 "Enter"键作为分隔符拆分字符

speech-recognition - 有人在生产中使用 Google Speech API 吗?

machine-learning - HTK 扬声器适配

audio - 语音分割语音