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

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

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

我怎么能这样做?

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

这可以以编程方式完成,虽然它可能很繁琐 – 特别是如果你想支持WinXP以及Vista / Win7(Sound在Vista中进行了大修,我相信API有很大的不同,尽管我还没有使用它们)。

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

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

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

我建议你把NAudio作为音频处理的起点

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

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