我正在进行一个项目,其中与其他视频相关的任务最终应该能够提取视频的音频并对其应用某种语音识别并获得视频上所述内容的转录文本。理想情况下,它应该输出某种字幕格式,以便文本链接到视频上的某个点。
我在考虑使用Microsoft Speech API(也就是SAPI)。但从我可以看到它是相当难以使用。我发现用于语音识别的极少数例子(大多数用于文本到语音更容易)并没有很好地表现(他们不认识一件事)。例如,这一个:http://msdn.microsoft.com/en-us/library/ms717071%28v=vs.85%29.aspx
一些例子使用了一种叫做语法文件的东西,它应该定义识别器正在等待的单词,但由于我没有彻底训练Windows语音识别,我认为这可能会掺杂结果。
所以我的问题是......对于这样的事情,什么是最好的工具?你能提供付费和免费选择吗?那么最好的“免费”(因为它附带Windows)选项我认为它是SAPI,所有其余的应该支付,但如果它们真的很好,它可能是值得的。另外,如果你有任何关于在类似上下文中使用SAPI(或其他API)的好教程,那就太棒了。
答案 0 :(得分:2)
总的来说,这是一个很大的问题!
任何语音识别系统的问题在于它在训练后的功能最佳。它需要上下文(期待什么词)和某种音频基准(每个声音听起来像什么)。在某些情况下,这可能是可能的,例如电视连续剧,如果你想通过几个小时的讲话 - 为每个角色分离 - 来训练它。那里有很多工作要做。对于像电影这样的东西,除非你能抓住演员,否则很可能没有培养识别者的希望。
大多数电影和电视制作公司只是聘请媒体公司根据使用人工操作员的直接转录或转换脚本来转录字幕。事实上,他们仍然需要人在循环中进行这些巨大的操作,这表明自动化系统还没有达到目的。
在视频中,你有很多让你生活困难的事情,几乎涵盖了当前大量的语音技术研究:
- >多个扬声器 - > “演讲者识别”(你能说出不同的角色吗?另外,字幕通常有不同的彩色文字用于不同的发言者)
- >多个同步扬声器 - > “鸡尾酒会问题” - 你能分开两个语音组件并转录它们吗?
- >背景噪音 - >你能从任何配乐/福利/爆炸直升机中挑出演讲。
语音算法需要非常健壮,因为不同的角色可以具有不同的性别/口音/情感。根据我对目前的认可状况的理解,你可以在经过一些培训后得到一位发言者,但要求一个程序来确定所有这些可能很难!
-
我没有注意到“副标题”格式。我建议使用Tiresias Screenfont之类的字体保存文本图像,这些字体是专为在这些情况下的易读性而设计的,并使用查找表来交叉引用图像与视频时间码(记住NTSC / PAL / Cinema使用不同的时间格式)。
-
那里有一堆专有的语音识别系统。如果你想要最好的,你可能想要从像Nuance这样的大男孩那里获得一个解决方案。如果你想保持自由,RWTH和CMU的大学已经将一些解决方案放在了一起。我不知道他们有多好,或者他们可能适合这个问题。
-
我能想到的唯一解决方案就是你可以在英国的“Live Closed Captioning”中获得新闻频道的字幕。由于它是现场的,我假设他们使用了一种训练有素的语音识别系统(虽然它可能没有训练,但我不确定)。它在过去的几年中变得更好,但总的来说它仍然很差。似乎最困难的是速度。对话通常非常快,所以现场字幕还有额外的问题,即及时完成所有事情。实时隐藏的字幕经常被遗忘,不得不错过很多内容以便赶上。
是否必须处理此问题取决于您是否要为“实时”视频制作字幕,或者是否可以对其进行预处理。为了解决上述所有其他复杂问题,我假设您需要对其进行预处理。
-
尽管我讨厌引用大W,但却有一个有用链接的金矿here!
祝你好运:)答案 1 :(得分:1)
这属于听写类别,这是一项非常大的词汇任务。 Dragon Naturally Speaking等产品非常出色,并且为开发人员提供了SAPI界面。但问题不是那么简单。
通常,听写产品应该是单个扬声器,并且最好的产品自动适应该扬声器,从而改善基础声学模型。它们还具有复杂的语言建模,通过限制所谓的词汇困惑来限制任何特定时刻的问题。这是一种花哨的方式,说系统正在弄清楚你在谈论什么,因此接下来可能或不可能出现什么类型的单词和短语。
虽然在录音中应用一个非常好的听写系统并看看它有多好,但这会很有趣。我对付费系统的建议是从Nuance获取Dragon Naturally Speaking并获得开发人员API。我相信它提供了一个SAPI接口,它具有允许您交换Microsoft语音或支持SAPI的任何其他ASR引擎的好处。 IBM会成为另一个看待它的供应商,但我认为你不会比Dragon做得更好。
但它不会很好用!在完成整合ASR引擎的所有工作之后,您可能会发现您的错误率非常高(可能是一半)。这可能是由于这项任务中的一些主要挑战:
1)多个扬声器,这将降低声学模型和适应性。 2)背景音乐和声音效果 3)混合言论 - 人们互相交谈。 4)缺乏良好的任务语言模型。
1)如果你有办法将每个演员分开在一个理想的单独轨道上。但是没有可靠的方法来自动分离扬声器,这种方式对于语音识别器来说已经足够了。如果每个扬声器的音高明显不同,你可以尝试音高检测(那里有一些免费软件)并根据它进行分离,但这是一个复杂且容易出错的任务。)最好的事情是手动编辑扬声器除此之外,你可以在那一点上手动转录演讲!如果您可以在不同的轨道上获取演员,则需要使用不同的用户配置文件来运行ASR。
对于音乐(2),你要么是希望最好的,要么试着过滤掉它。语音比音乐更有限,因此您可以尝试使用带通滤波器来衰减除语音频带之外的所有内容。您可能想要尝试截止,但我猜想100Hz到2-3KHz可以保持语音清晰。
对于(3),没有解决方案。 ASR引擎应该返回置信度分数,所以我会说如果你可以标记低分,那么你可以返回并手动转录那些语音。
(4)对于语音科学家来说是一项复杂的任务。您最好的选择是搜索为电影主题制作的现有语言模型。实际上,与Nuance或IBM交谈。也许他们可以指出你正确的方向。希望这有帮助。