为什么语音识别很困难?

9
为什么语音识别如此困难?都有哪些具体挑战?我读了一个关于语音识别的问题,它在某种程度上回答了我的一些问题,但答案大多是轶事而非技术性。而且这个问题还没有真正解释为什么我们不能通过增加硬件来解决这个问题。
我见过使用神经网络和环境FFT分析执行自动噪声降低的工具,并取得了出色的结果。所以我看不出为什么我们仍然需要处理噪声问题,除非在像极其吵闹的背景噪声或多个语音源等困难情况下。
除此之外,难道不只是使用非常大、复杂、经过训练的神经网络来进行处理,然后投入足够的硬件使其快速运行吗?
我知道强烈的口音是个问题,我们都有我们的俚语,但即使人们以慢而清晰的美式或英式口音说话,这些识别引擎仍然会做出基本错误的事情。
那么,怎么回事呢?有哪些技术问题使计算机仍然很难理解我呢?

对于将此视为离题/不具建设性的人:我看不出你的理由。我正在寻求一个具体的答案,而不是列表或主观回应。这也是一项高度嵌入程序设计领域的挑战,因为它是一个特定的编程挑战,已经存在了很长时间,即“编写一些代码来听取我的话并理解它们”。您能解释一下为什么您投票关闭吗? - Polynomial
这不是这样的。你需要看语言治疗师吗?(他们甚至做语音识别吗?) - Mateen Ulhaq
我没有标记为关闭,但我可以理解为什么其他人这样做。它可能属于以下范畴:这个问题可能会引起意见、辩论、争论、投票或长时间的讨论。 - Mike Christensen
我不明白为什么会有争论。我只是在询问是什么技术限制导致了这个问题。 - Polynomial
那些投票关闭此问题(以及实际投票删除此问题的人)的人能否解释一下他们的行为?我完全支持关闭被认为不符合SO最佳利益的问题,但是没有解释就关闭本身也不符合SO的最佳利益。 - Polynomial
5个回答

11

一些技术性原因:

  • 你需要大量的标记训练数据,一旦考虑到所有不同的口音、声音等因素,这可能会很难获得。
  • 神经网络和类似的梯度下降算法并不很可扩展 - 仅仅使它们更大(更多层、更多节点、更多连接)并不能保证它们在合理的时间内学会解决你的问题。将机器学习扩展到解决复杂任务仍然是一个困难的、未解决的问题。
  • 许多机器学习方法需要归一化的数据(例如定义好的起始点、标准音高、标准速度)。一旦超出这些参数范围,它们就不能很好地工作。有一些技术,比如卷积神经网络等来解决这些问题,但它们都增加了复杂性并需要大量的专家微调。
  • 语音数据大小可能相当大 - 数据的大小使得工程问题和计算要求变得更具挑战性。
  • 通常需要在上下文中解释语音数据才能完全理解 - 人类大脑非常善于根据理解的上下文"填补空白"。缺失信息和不同的解释是通过其他模态(如视觉)帮助填补的。当前算法不"理解"上下文,因此不能利用它来帮助解释语音数据。这特别是问题,因为许多声音/单词除非在上下文中考虑,否则存在歧义。

总的来说,语音识别是一项复杂的任务。并非无法解决,但足够难以使你不应该期望出现任何奇迹,它肯定会让很多研究人员忙碌数年...


这就是我在寻找的信息。非常有趣。你有任何我可以阅读的引用吗? - Polynomial
没有特定的参考资料在手,但我认为一些谷歌搜索应该可以帮助你找到大多数这些主题的详细信息。值得注意的是,许多问题通常适用于机器学习,而不仅仅是语音。 - mikera

2
人类在听取信息时不仅仅使用耳朵,还利用对说话者和主题的了解。单词不是随意组合在一起的,有着语法结构和冗余,人们可以利用它们来预测尚未发出的单词。此外,惯用语和我们通常说话的方式使得预测更加容易。
在语音识别中,我们只有语音信号。当然,我们可以构建一个语法结构模型并使用某种统计模型来提高预测性能,但仍然存在如何模拟世界知识、说话者知识和百科全书式知识的问题。当然,我们无法详尽地模拟世界知识,但一个有趣的问题是,我们需要多少语音识别才能达到人类理解的水平。
语音是在声音环境中发出的,比如钟表的嘀嗒声、电脑的嗡嗡声、走廊里播放的收音机、背景中的其他说话者等等,这通常被称为噪声,即语音信号中的无用信息。在语音识别中,我们必须识别并过滤掉这些噪声。
1. 连续语音 2. 信道变异性 3. 说话者变异性 4. 说话风格 5. 语速 6. 歧义
所有这些要点都必须在构建语音识别系统时考虑到,这就是为什么它非常困难的原因。
-------------引自http://www.speech.kth.se/~rolf/gslt_papers/MarkusForsberg.pdf

2
语音识别中的许多主要问题与语言本身并不直接相关:
  • 不同的人(女性、男性、儿童、老年人等)有不同的声音
  • 有时同一个人的声音会有所不同,例如当他感冒时
  • 不同的背景噪音
  • 日常语言有时包含其他语言的单词(例如在美国/英国你有德语单词Kindergarten)
  • 一些不是本国人的人学习了该语言(他们通常发音不同)
  • 有些人说话比较快,有些人说话比较慢
  • 麦克风的质量等。
解决这些问题总是相当困难的...除此之外,还需要处理语言/发音方面的问题...
有关详细信息,请参阅维基百科文章http://en.wikipedia.org/wiki/Speech_recognition - 它具有良好的概述,包括一些链接和书籍参考,这是一个很好的起点...
从技术角度来看,“音频预处理”只是一个漫长过程中的一步...假设音频“清晰无误”,那么仍然需要解决上述几个方面的问题(如感冒、语言混淆等)。
所有这些意味着,为了进行良好的语音识别,您需要拥有足够详尽的语言模型,以解释轻微的差异(例如“ate”与“eight”),通常需要进行一些上下文分析(即语义和事实/世界知识,请参见http://en.wikipedia.org/wiki/Semantic%5Fgap)等。
由于几乎所有相关语言都是演变而来,而不是作为数学模型设计的,因此您基本上需要将可用的隐式和显式语言知识“反向工程”成一个模型,这是一个很大的挑战,在我看来。
自己使用神经网络工作后,我可以向您保证,在某些情况下,它们提供了良好的结果,但它们并不是“神奇的工具”……几乎总是需要仔细设计和优化特定需求的良好神经网络……在这种情况下,需要对语言和神经网络有广泛的经验/知识以及广泛的培训才能获得可用的结果。

只是一个小修正;在第四段中,您拼错了“crystal clear”。 - ozanmuyes

2

我猜测你对于“连续”语音识别感兴趣,即演讲者以正常速度说出一整句话(而不是单个单词)。

问题并不是简单的信号分析,自然语言组成也很大程度上影响着识别。我们理解口语并不是通过分析每一个听到的单一元素,因为这样做永远都不会奏效——每个人说话方式不同,音素被压制,发音也不尽相同等等。我们只解读听到的部分内容,剩下的则是基于句子背景下由大脑“推测”的结果。当你没有背景信息时,听懂口语就变得困难了。


1

我在大学上语言课已经十年了,但据我所记,语言可以分解成音素。语言处理器尽力识别这些音素,但它们对每个人都是独特的。即使它们被分解,它们也必须重新组合成有意义的结构。

以这个例子为例,人类能够轻松阅读没有标点符号、没有大写字母和没有空格的文本。虽然需要一点时间,但我们可以很容易地做到。当计算机获得一块音素时,它就必须看待这种情况。然而,计算机在解析这些数据方面远不如人类。其中一个原因是计算机很难具备上下文。即使是婴儿的音素完全错误,人类也能理解他们。

即使您拥有所有正确的音素,将它们排列成有意义的顺序也很困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接