来自系统音频的C#语音识别(扬声器声音)

时间:2011-12-07 21:20:10

标签: c# speech-recognition

我看过输入设备的语音识别(显然),我看过文件中的语音识别(http://gotspeech.net/forums/thread/6835.aspx)。但是,我想知道是否可以实时对系统音频进行语音识别。通过系统音频,扬声器发出的声音。

对于那些听力困难的人来说,这将是一个很好的工具,因为他们正在观看YouTube视频,C#应用程序可以转录所说的内容。

我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

非常容易 - 转到混音器,选择输入并启用/取消静音“Stereo Mix”。当然,如果您不想录制麦克风,您应该将麦克风静音。然后,以与录制麦克风相同的方式开始录制 - 现在您将获得与数字质量的扬声器相同的馈送。

这可能是done programatically虽然它可能很繁琐 - 特别是如果你想支持WinXP以及Vista / Win7(声音在Vista中进行了大修,我相信APIs are significantly different虽然我还没有不得不使用它们。)

在尝试识别之前,您几乎肯定需要过滤声音。除非言语记录在案。您正在使用的图书馆设计用于在恶劣条件下工作,音乐和特殊效果会干扰正确识别,同时多人会说话。

如果您还没有超强大的库,那么衰减非人声频率的滤波器将是必须的。您可能还需要应用音量标准化来考虑大声/安静场景 - 有数百个过滤器可能会改善匹配。

您可能希望在最低级别访问识别API以获得尽可能多的控制权 - 您需要调整它以应对人们大喊大叫,呼吸困难,哭泣等...如果您开始灵活设计低级访问,如果您以后发现需要它,它可能会为您节省数周而且必须重新构建。

我建议您将NAudio作为音频处理的起点

我怀疑你能够在没有太多努力的情况下获得在理想条件下工作的东西 - 但是调整它以适应所有可能的情况可能是一个巨大的任务。这就是说,这听起来像一个有趣的项目。

通过创建特定类型,用户或特定于显示的词典,您可以大大提高识别机会。这些可以预先生成,也可以使用加权反馈循环自动构建 - 也许还允许用户纠正错误。