当前位置:  开发笔记 > 编程语言 > 正文

C#语音识别 - 这是用户所说的吗?

如何解决《C#语音识别-这是用户所说的吗?》经验,为你挑选了4个好方法。

我需要编写一个使用语音识别引擎的应用程序 - 内置vista或第三方 - 可以显示单词或短语,并识别用户何时读取它(或其近似值) ).我还需要能够在语言之间快速切换,而无需更改操作系统的语言.

用户将在很短的时间内使用该系统.应用程序需要工作而无需首先将识别引擎训练到用户的声音.

如果这可以在Windows XP或较低版本的Windows Vista上运行,那也太棒了.

可选地,系统需要能够以用户选择的语言将屏幕上的信息读回用户.我可以使用预先录制的画外音来解决此规范,但首选的方法是使用文本到语音引擎.

谁能为我推荐一些东西?



1> Ryan Lundy..:

一段时间以来,Joel on Software也提出了类似的问题.您可以使用System.Speech.Recognition命名空间来执行此操作...但有一些限制.将System.Speech(应该在GAC中)添加到您的项目中.以下是WinForms应用程序的一些示例代码:

public partial class Form1 : Form
{
  SpeechRecognizer rec = new SpeechRecognizer();

  public Form1()
  {
    InitializeComponent();
    rec.SpeechRecognized += rec_SpeechRecognized;
  }

  void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  {
    lblLetter.Text = e.Result.Text;
  }

  void Form1_Load(object sender, EventArgs e)
  {
    var c = new Choices();
    for (var i = 0; i <= 100; i++)
      c.Add(i.ToString());
    var gb = new GrammarBuilder(c);
    var g = new Grammar(gb);
    rec.LoadGrammar(g);
    rec.Enabled = true;
  }

这将识别1到100之间的数字,并在表单上显示结果编号.您需要一个带有名为lblLetter的标签的表单.

System.Speech仅适用于预定义的单词或短语列表; 无论是多功能性还是识别质量,它都不是NaturallySpeaking.但是你不必将它训练成用户的声音,如果你只有一些用户可以说的不同的东西,它的效果相当不错.它是免费的!(如果你有Visual Studio)

如果你使用非常短的短语,它将无法正常工作; 我为我的孩子做了一个程序,说出字母表的字母,并在屏幕上看到它们,但由于许多字母听起来很相似(特别是来自一个四岁的孩子的嘴),所以它做得不好.

至于更灵活的选项......嗯,还有前面提到的NaturallySpeaking,它有一个SDK.但是你必须联系销售部门以获得任何类型的访问权限,并且没有列出任何定价,因此它会出现"其中需要多少费用?嗯,你有多少钱?" 有点事.似乎没有"下载和玩它"选项.:(

至于文本转语音,System.Speech.Synthesis就是这样做的.它比语音识别更容易.我写了一个小程序让我输入,按Enter键,然后大声朗读文本.我四岁的孩子被它迷住了.:)("爸爸,我想转向da wobot.")


我认为你的评论"仅适用于预先定义的单词或短语列表"并非如此.Vista及更高版本中的桌面识别器包含可以加载的听写语法.请参阅http://msdn.microsoft.com/en-us/library/system.speech.recognition.dictationgrammar.aspx

2> Philipp Schm..:

[注意:我是.NET 3.0中托管语音识别API的开发负责人]

System.Speech是.NET 3.0的一部分,因此它可以在Vista和XP上使用.在Vista中,您可以通过操作系统预先安装语音识别引擎.在XP上你可以选择:使用带有非常旧引擎的SAPI 5.1 SDK(但可能对你的命令和控制方案运行良好),安装Office 2003,它安装了更新版本的识别器.还有一些SAPI 5兼容语音识别引擎.

如果需要切换语言,则需要使用System.Speech.Recognition.SpeechRecognitionEngine类,该类允许您为需要支持的语言选择SR引擎.请注意,引擎由它们支持的一组语言定义(它们可能使用相同的二进制文件,只交换数据文件以支持其他语言).

评论您是否需要了解更多信息.

菲利普



3> Rob Segal..:

在此之前添加"语音"参考

System.Speech

发现Kyralessa在10月22日发布的代码示例对我不起作用,但稍微修改后的版本.在Choices对象中添加字符串时,请使用全文英文单词而不是数字.似乎MS语音识别引擎无法自己识别数字.

我已经标记了这些修改,并在前面的示例中添加了一些注释.

public partial class Form1 : Form
{
  SpeechRecognizer rec = new SpeechRecognizer();

  public Form1()
  {
    InitializeComponent();
    rec.SpeechRecognized += rec_SpeechRecognized;
  }

  void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
  {
    lblLetter.Text = e.Result.Text;
  }

  void Form1_Load(object sender, EventArgs e)
  {
    var c = new Choices();

    // Doens't work must use English words to add to Choices and
    // populate grammar.
    //
    //for (var i = 0; i <= 100; i++)
    //  c.Add(i.ToString());

    c.Add("one");
    c.Add("two");
    c.Add("three");
    c.Add("four");
    // etc...

    var gb = new GrammarBuilder(c);
    var g = new Grammar(gb);
    rec.LoadGrammar(g);
    rec.Enabled = true;
  }



4> Jorge Córdob..:

如果发动机是您所询问的,那么我发现(小心,我只是列出,我还没有尝试过任何一个):

Lumenvox引擎

你也有微软自己的SAPI SDK,我只是尝试过文本到语音,但根据它的定义:

SDK还包括可自由分发的文本到语音转换(TTS)引擎(美国英语和简体中文)和语音识别(SR)引擎(美国英语,简体中文和日语).

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有