如何做到精准的语音识别?

  • 回答 (6)
  • 关注 (1)
  • 查看 (450)

我经常想知道技术是否会赶上科幻想象力,我最终会与一个可以与人类无缝交谈的机器人进行交互?我想知道我们如何构建世界上最准确的语音识别系统?

秋之夕颜清秋之夕颜清提问于
坐看云起时冒险家回答于

为了解决这个问题,我们将单词划分为更小的单元,称为电话。在英语(和许多印度语言)中,大约有50个电话可以组合成任何单词。例如,单词“Hello”可以分为“HH,AH,L,OW”。您可以查找CMU发音字典[6]以进行英语单词的语音扩展。

ASR的问题归结为识别电话序列而不是单词。这需要为每部手机构建ML模型。这些模型称为单声道模型。如果你能很好地识别手机,你已经解决了ASR问题的很大一部分。不幸的是,识别手机并非易事。

如果我们绘制电话话语的傅立叶频谱,则可以看到明显的峰值,如图中所示:  Formant Frequencies  [5]。

峰值频率F1和F2是手机的关键指标。这里显示了元音相对于F1和F2的散点图。可以看出,扩散很大并且经常彼此重叠。 元音之间主导频率的变化。没有明确的界限来区分元音  [3]。

这种重叠使得ML算法难以区分电话。

单声道的另一个问题是它们经常受到相邻电话的影响。 该图示  出了时域以及语音话语“脚跟”的时频域(STFT)表示。 时间域和STFT表示单词“Heel” [ 页面在upenn.edu ]。

鞋跟这个词可以在发音上扩展为“HH IY L”。在图中可以清楚地看到电话“HH”对“IY”的影响。Triphone模型(也称为上下文相关模型)被提议作为模拟该上下文依赖性的解决方案。这里的模型是针对三音素的每种可能的变化而构建的,希望它们能够捕获足够的上下文变化。这种三音素的可能数量将是50 ^ 3的数量级,这是非常高的数量。建立如此大量的模型同样是不可行的。幸运的是,并非所有三音素都使用英语(其他语言)。经过一些巧妙的技巧后,我们可以将分类单元的数量减少到5,000-10,000。

即使有良好的音素识别,仍然很难识别语音。这是因为预先没有定义单词边界。这在区分语音相似的句子时会引起问题。这类句子的一个典型例子是“ 让我们破坏一个漂亮的海滩 ”和“ 让我们认识演讲 ”。这些句子在语音上非常相似,声学模型很容易在它们之间混淆。ASR中使用语言模型(LM)来解决此特定问题。

另一个破坏ASR系统的因素是重音。就像人类一样,机器也很难用不同的口音来理解同一种语言。有关示例,请参阅此视频

这是因为系统先前为特定重音学习的分类边界对于其他重音不会保持不变。这就是为什么ASR系统在配置过程中经常询问您的位置/说话风格(例如英语 - 印度语,英语 - 美国语,英语 - 英语)的原因。

到目前为止所描述的复杂性是自然语言的一部分。即使具有如此大的复杂性,在无噪声环境中识别语音通常被认为是解决的问题。噪音和回声等外部影响是罪魁祸首。

录制音频时,噪音和回声是不可避免的干扰。由于来自诸如墙壁,镜子和桌子的表面的语音能量的反射,发生回声。当扬声器靠近麦克风说话时,这不是什么大问题。但是,当从远处说话时(例如,通过Amazon Echo进行购买),相同信号的多个副本将以不同的时间延迟和强度进行反映和组合。这将导致电话随着时间的推移而拉伸并最终破坏相邻的语音信息。

这种现象称为涂抹。去除污点的过程称为dereverberation,这是解决混响问题的常用技术。

ASR中另一个值得注意的问题是在解码阶段。在这里,LM和AM组合在一起形成一个巨大的网络。识别基本上是在如此大的空间中的搜索问题。在更大的空间,问题就越大。实时识别涉及使用维特比算法扫描网络以获得语音信号的转录。

游王子讴歌灬简单而丰富回答于

语音识别是一项成熟的技术,但是当我们最需要它时,它往往会失败,例如在嘈杂或拥挤的环境中,或者当扬声器远离麦克风时。在百度,我们致力于实现真正无处不在的自然语音界面。为了实现这一点,我们必须提高语音识别的准确性,特别是在这些具有挑战性的环境中。我们通过以新的语言识别方式应用深度学习,着手实现这一目标。

图1:我们的深层神经网络的结构,显示了层(从上到下)以及我们如何在GPU之间并行化训练(从左到右)。第四层是双向复现层。蓝色和红色箭头表示前向和后向以及这些层中GPU之间所需的通信。

深度学习改变了许多重要任务; 它取得了成功,因为它可以很好地扩展:它可以吸收大量数据来创建高度精确的模型。实际上,大多数工业语音识别系统依赖于深度神经网络作为组件,通常与其他算法结合。许多研究人员一直认为,如果深度神经网络(DNN)用于整个系统,而不仅仅是声学建模组件,它可以为语音识别提供更好的准确性。然而,已经证明难以找到基于深度学习的端到端语音识别系统,其改进了现有技术。

模型和数据协同设计

这很困难的原因之一是在大型数据集上训练这些网络在计算上是非常密集的。训练DNN的过程是迭代的:我们在训练模型的计算机代码中实例化关于模型的想法,然后我们在训练集上训练模型并对其进行测试,这为我们提供了关于如何改进模型或训练集的新思路。此循环的延迟是阻止进度的速率限制步骤。我们的模型相对较大,包含数十亿个连接,我们在数千小时的数据上训练它们,这意味着训练我们的模型需要大量的计算。

我们选择模型尺寸,以便我们的模型具有与我们的训练数据集匹配的适当容量。如果我们的模型对于我们的数据集有太多参数,它将过度拟合数据:基本上使用网络的过剩容量来记忆训练样例,这导致脆弱的模型在训练集上表现良好,但在现实世界中表现不佳数据。相反,如果我们的模型对数据集的参数太少,它将适应数据,这意味着模型无法从数据集中学到足够的东西。因此,选择模型大小和数据集是一个协同设计过程,我们逐步增加模型大小并获得更多的训练数据。随意增加通常会导致糟糕的结果。

最大化强缩放

这一观察决定了我们如何使用并行性。虽然我们的模型很大,但我们不能将它们虚拟地扩展到更大数量的GPU。我们主要关注强大的可扩展性,因为如果我们可以通过更多GPU进行强大的扩展培训,我们可以减少与我们的数据集相关的模型大小的培训过程的延迟。这使我们能够更快地提出新想法,推动进步。

因此,我们使用多个GPU协同工作来训练我们的模型。由于几个原因,GPU特别适合训练这些网络。当然,我们依赖GPU提供的高算术吞吐量和内存带宽。但还有一些其他重要因素:首先,CUDA编程环境非常成熟,并且很好地集成到其他HPC基础设施中,例如MPI和Infiniband,这使我们在将我们的想法编码到一个训练系统和测试我们的模型。CUDA库对于这个项目也很重要:我们的系统依赖于NVIDIA cuBLAScuDNN

其次,因为每个GPU都非常强大,所以我们不必对模型进行过度分区以获得计算能力。由于通信延迟和算法挑战导致的低效率,在多个处理器之间对我们的模型进行精细划分具有挑战性,这些挑战随着分区的增加而不利地扩展。让我解释为什么会这样。

在训练模型时,我们依赖于两种不同类型的并行性,通常称为“模型并行性”和“数据并行性”。模型并行性是指并行化模型本身,将神经元分布在不同的处理器上。有些模型比其他模型更容易分区。当我们采用模型并行性时,分配给每个处理器的工作量会减少,从而限制了可扩展性,因为在某些时候,处理器处于低占用状态。

我们还使用“数据并行”,在此上下文中指的是通过跨处理器划分数据集来并行化训练过程。虽然我们有大量的训练示例,但由于需要为数据集的每个分区复制模型,因此在使用数据并行性时的可伸缩性受到限制,因此将从数据集的每个分区学到的信息组合在一起以生成单个模型。

我们如何并行化我们的模型

训练神经网络涉及解决高度非凸的数值优化问题。已经进行了大量研究以找到解决该优化问题的最佳算法,并且当前的技术状态是使用具有动量的随机梯度下降(SGD)。尽管有效,但该算法特别难以扩展,因为它有利于按顺序采用许多小的优化步骤,而不是采取一些大的步骤。这意味着一次检查一组相对较小的训练样例。我们在512个示例的微型计算机上训练我们的语音识别系统,每个示例细分为128个示例的微型计算机。我们使用4路数据并行和双向模型并行,在4个独立的对中为每个训练实例处理了8个Tesla K40。

如图1所示,我们的模型有5层。第一层是卷积层,其对输入谱图(二维信号,其中一维表示频率,另一时间)进行操作,并且对于每个时间样本产生许多1-D响应。cuDNN能够使用非对称填充操作非方形图像,使得该层的实现变得简单而有效。接下来的两层和最后一层完全连接,使用cuBLAS实现。

如果我们的模型只用这4层制作,那么模型并行性就相当简单,因为这些层在时间维度上是独立的。然而,第4层负责沿时间维度传播信息。我们使用双向复现层,其中前向和后向是独立的。由于循环层需要顺序执行激活,然后是非线性,因此难以并行化。像prefix-sum这样的传统方法不起作用,因为隐含的运算符(矩阵乘法后跟非线性)非常不相关。

双向层约占总培训时间的40%,因此并行化至关重要。尽管在双向复现层中利用前向和后向的独立性,但是通过递归神经网络的顺序性,我们获得了双向模型并行性。我们将神经元响应沿时间维度分成两半,将每一半分配给GPU。对于循环层,我们使第一个GPU处理前向,而第二个处理后向,直到它们都到达时间维度中心的分区。然后,他们交换激活并切换角色:第一个GPU处理后退方向,而第二个GPU处理前进方向。

结果:推进语音识别技术发展

结合这些技术,我们构建了一个系统,允许我们在数千小时的语音数据上训练我们的模型。因为我们已经能够在我们的模型上快速迭代,所以我们能够创建基于端到端深度神经网络的语音识别系统,该系统显着改善了现有技术,特别是对于嘈杂的环境。

我们在完整的交换机数据集上获得了16%的字错误率,这是一个广泛使用的标准数据集,其中先前的最佳结果是18.4%。在我们开发的嘈杂测试集上,我们实现了19.1%的字错误率,与谷歌API相比,其实现了30.5%的错误率,微软Bing达到了36.1%,Apple听写,达到了43.8%的错误率。通常,当商业语音系统由于噪音过大而对其转录具有低置信度时,他们拒绝提供任何转录。上述错误率仅针对所有比较系统产生转录的话语计算,以使他们对更难的话语产生怀疑。

总之,GPU提供的计算资源与简单,可扩展的模型相结合,使我们能够更快地迭代我们的大型数据集,从而显着提高语音识别的准确性。我们能够证明,基于从输入到输出的深度学习构建的语音识别系统可以胜过使用更复杂算法构建的传统系统。我们相信,凭借更多的数据和计算资源,我们将能够进一步提高语音识别能力,努力实现无处不在的自然语音接口。

罗斯魂丶回答于

虽然有许多系统在理论上允许像数据一样的机器人运行,无缝地让人类与人类交谈,但我们首先需要能够清楚地理解人类语音。并且为了使数据能够自然地响应对话,该能力必须至少等于(如果不是更好的话)人类语音识别准确度。你会想到最近关于IBM微软谷歌的所有报道击败人类识别能力,我们正在努力创建一个完全熟悉人类的真实世界的机器人。但是当Marchex开始尝试使用第三方语音识别解决方案转录真实世界的对话时,我们震惊地发现这些系统都没有产生任何接近人类精确度的结果。

那么,是什么给出的?

事实上,当任何一家大型科技公司声称他们拥有比人类精确度更“优秀”的语音识别软件时,事实并非如此。他们真正的意思是,如果他们采用一个小数据集,根据提供的数据数据训练他们的系统,获得无限的计算能力,那么只有这样,他们才能比人类在收听和写作时更好地转录最终内容。即时的。然而,在这种情况下的内容,如SWITCHBOARD语料库,在谈话语音领域几乎不是尘埃。简而言之,报告的数字从未转化为现实世界。

实际上,任何口语都包含一个几乎无限的领域。 根据麦格理大学(Macquarie University)罗伯特•曼内尔(Robert Mannell)的一篇文章,仅英语单词就有近500,000个单词可以组合成几乎无穷无尽的组合。这已经创建了一个非常大的数据集,这些数字只考虑了书面文字,口语也必须说明口吃,缺乏语法结构,“嗯”,“嗯”,咳嗽,笑声和其他语言变量,具有近乎无限的环境条件。

书面的话语

口语(来自真实的电话)

我猜这是对的

我真的,我猜这是对的,哦,哇哦

这让我们回到了数据和企业。其他人已经建立了一个可以成为一个伟大的笔友的机器人,但如果它听到船长的声音压力,无法理解sarcasam的细微差别,并且不能真正,准确地,捕捉说话人的本质。这个技术领域的其他领导者做得非常出色,但只涉及Marchex认为真正准确的语音识别解决方案所需的非常小的领域。在意识到第三方解决方案无法达到完全转录人类对话所需的准确性之后,我们的工程团队发现,成功的唯一途径是建立一个更密切覆盖对话语音域的大量数据集。 。

风雨交加不会踢球的营销狗不是好厨子回答于

在谈到听写的速度和准确性时,语音识别在过去20多年中发展迅速。虽然识别语音的方式没有改变,但今天的计算机和软件可以产生98%或更高精度的文本,所以当我听到有人说“我可以更快地打字”或“这台电脑”时,它总能引起我的注意。只是不理解我。“为了达到并保持这些准确度,我们作为用户可以专注于最大限度地提高我们的听写准确度。

1.听写风格

在尝试获得更高级别的认可时,不要低估个人风格对系统效率的重要性。这通常是准确率较低的原因,这会导致更多错误。如果我们不了解基本知识,我们的听写风格通常会随着时间的推移或更长的时间而恶化。一致性是获得高达90%范围内识别水平的关键。听写风格可以简化为一个初始培训中涵盖的三个基本要点:

  • 一致而清晰地阐述。
  • 在口述时保持一致的音调和音调。(还记得新闻播报员的例子吗?)
  • 以流畅,一致的方式说话。说慢一点以帮助计算机理解并没有帮助; 事实上,它很痛。一旦找到最佳速度,坚持下去。用精心设计的句子和短语说话是最好的。一次说一句话有时适合孩子,但从不用语音识别创建自由文本报告。

2.语音软件

一旦我们掌握了我们的听写风格,就该确保我们有效地使用该软件了。以下是一些最大化您的准确性的方法。

音频设置向导

可能被忽略的工具是“音频设置向导”。可以通过单击“工具”,“精确中心”,“检查音频设置” 在VoiceOver工具菜单或Dragon工具栏上访问它。如果您的环境或语音发生变化,在语音识别准确度下降的任何时候使用此功能都是优化准确性的有效方法。每当您连接新麦克风或第一次移动到新机器时,系统都会提示您使用此功能。

它只需不到一分钟,为什么要停在那里?微妙的环境或声学变化会严重恶化识别。实验室是否在您身后安装了新的低温恒温器?执行音频设置。如果您感觉不舒服,或者今天可能有点嘶哑,请执行音频设置。事实上,当我发号施令时,我每天早上都会进行音频设置作为我启动程序的一部分,有时候,我会在午餐后运行一次,因为碳水化合物会对我的能量水平造成严重破坏。

误识别校正和单词训练

利用上线期间涵盖的校正和单词培训技术。纠正,添加和训练单词和短语可以在持续的听写准确度水平上产生重大影响。不正确执行这些任务不仅会使您的个人资料变得更好,而且往往会使情况变得更糟。如果您需要复习或不确定您是否正确执行此操作,请参阅快速参考卡或文档,或者只是询问。

不要过度纠正!

一个简单的提示是只纠正你知道你说的正确的单词。如果错误识别是由错误的发音,糟糕的发音,口吃或者背景噪音造成的,请不要重复,不要纠正它。这只会在您的个人资料中保存您不想要的内容。相反,只需选择它并重新决定它。

3.硬件/系统

在您上线期间,Voicebrook提供了硬件规范,支持在您的信息系统中使用语音创建报告。我们还与您的软件支持或IT小组合作,以最大限度地减少计算机上的后台服务,例如病毒扫描和磁盘优化程序,这样它们就不会干扰语音识别过程。除此之外,您还可以采取一些措施来确保最高级别的语音识别效率。

关闭不必要的程序

像电子邮件和网络浏览器这样的程序,可以耗尽宝贵的计算机内存和处理语音所需的处理,即使它们在后台闲置。只要有可能,请关闭这些应用程序,同时指示增加系统资源可用性。

重启电脑!

早上重新启动计算机将清除通常正在忙于降低准确性的内存和内存。当您发现任何时候精度下降并且音频设置向导没有帮助时,通常会解决问题。

跟踪你的麦克风

再一次,一致性是关键。保持吊杆或手持麦克风的准确距离或正确佩戴和定位耳机对于高精度水平非常重要。此外,我们不要忘记在这些无线设备中保留新电池。

死者是小智回答于

为什么单独的语音识别软件不能提供100%的准确度

尽管技术在过去几年中已经发展,但即使语音识别软件有所进步,转录服务仍然需要人工审查和干预以确保接近100%的准确性。虽然较低的准确性可能是立即结果的适当权衡,但大多数专业使用转录的人需要具有最少审阅时间的发布就绪成绩单以证明费用是合理的。

为了克服这个障碍,我们的转录过程  使用混合方法,与单独的人类转录相比,确保更快的周转时间和价格,以及比单独的语音处理更高的准确性。语音处理软件是否能达到人类抄录员的准确性?实际上,至少在未来十年内不会发生这种情况,原因如下:

语音模式和口音

这些地区内的不同地区和人们可能有不同的说话方式,这使得训练计算机识别口音和语音模式非常困难,即使在使用各种样本组进行测试时也是如此。此外,有些人在说话很快时会说话或混淆,这可能会导致音频转录出现其他错误。人们可能会口吃或停顿思考,这意味着软件可能包含填充词,如“嗯”,“啊”,“嗯”,否则应该在干净的成绩单中省略。

语法和标点符号

语音识别软件还要求您对标点符号进行语言描述而不是自动实现标点符号(例如,通过说明逗号,句号或冒号而不是通过语音来表示它)。这使得专业演讲,会议和访谈中的音频转录难以转录,因为它们需要人工审查才能添加适当的标点符号,和/或修正任何语法错误。

同名和不寻常的词

语音处理软件只能识别专门训练识别的单词和短语。因此,任何使用俚语或构成术语的时间可能不一定在计算机程序中,机器将不会识别这些术语 - 这适用于品牌名称,姓氏和其他不寻常的词语,例如首字母缩略词或高度技术词汇。

另一个可能的问题是同音异义词的使用,或听起来相同但不是的单词,例如/他们/他们和空气/继承人。如果不能理解句子的上下文,计算机将无法识别它应该使用哪个单词,这需要在技术上进行广泛的编程和改进。

环境噪音,重叠语音和扬声器数量

当存在多个扬声器时,它们将经常互相打断或同时说话,即使是最有经验的人类转录者也难以转录。由于计算机需要清晰的语音,因此他们几乎不可能准确地推断出单词,然后通过说话者将文本分开。人类抄录者至少能够根据说话者的声音以及之前的上下文来找出谁说话以及他们说了什么。

此外,来自音乐,说话甚至风噪声的环境噪声将影响转录的准确性,因为计算机使用声音咬合来找出单词,而这些其他声音可能导致不准确。虽然环境噪音也可能成为人类抄写员的问题,但他们至少可以试图找出所说的内容。

语音识别软件虽然是一种有价值的转录工具,但对于大多数公众而言,距离达到接近100%的准确度还有很长的路要走,特别是没有某种形式的人工审查。

五星格兰特就事论事不撕逼!三观不合删评价!回答于

自动语音识别(ASR)几乎是我们每天运用的东西。语音识别准确性是我们为帮助客户发展而自豪的事情,我们知道随着越来越多的人在手机,计算机或家中使用语音识别,这些努力在全球范围内得到了认可数字个人助理现在正忙着打电话,要求他们设置提醒,回复文本或电子邮件,甚至在网上搜索我们并推荐吃饭的地方。

这一切都很棒,但即使是最好的语音识别或语音识别系统也很难实现100%的准确性。当出现问题时,错误可能会非常明显,如果不是偶尔娱乐的话。

会发生什么样的错误? 语音识别设备几乎总是会根据听到的内容提出一系列单词 - 这就是他们设计的目的。但是,确定它听到的单词串是一项棘手的任务,并且有一些事情可以真正让用户失望。

猜错了 这当然是经典问题。自然语言软件在形成完整合理的句子方面仍然不是很好。有各种各样的潜在听错可能听起来很相似,但作为一个完整的句子并没有充分发挥作用:

听到不是你所说的东西 如果有人走过去,他们正在大声说话,或者你咳嗽一半,一台电脑往往无法分辨出你在说什么部分哪些部分来自音频的其他部分。这可能导致某人的电话在他们刚刚练习大号时接受听写。

那么这里发生了什么? 为什么这些经过精心训练的算法会犯错误,任何人类听众都会发现这些错误是完全可笑的?

这都是我们用来训练软件的数据。语音识别算法通过接收数百小时的音频以及有时数百万字的文本来学习。如果该音频或该文本与您的声音或您的说话方式不符,则会出现语音识别准确性问题。

如果所有的计算机列车都是在安静的录音棚里讲话的人的音频,那么在拥挤的餐厅里尝试的短信真的会把系统推到极限!如果它只听到在白金汉宫5英里范围内出生和长大的人的录音,那么你的加拿大口音将导致各种各样的混乱。

人类非常善于专注于与他们交谈的人的声音。我们能够适应和考虑他们来自哪里或在何处进行对话。对于那些东西,计算机仍有很长的路要走。

最后,语音识别程序具有他们所引用的词典文件,因此他们知道他们可以期待听到的所有单词以及这些单词的发音方式。如果您使用的词汇不在词典中,则识别算法永远无法为您编写。谈话中的一个人可能会想“哦,这是我之前没有听过的名字,也许我会猜测拼写然后再查看。”计算机总是在猜测,如果还没有看到一句话之前,它将无法猜到!

事情破裂时人们会怎么做? 当语音识别准确性出现问题时,它们往往会出错。在最好的时候与虚拟人交谈时,人们往往有点谨慎 - 侵蚀那个脆弱的信任并不需要太多!一旦发生错误,人们会做各种奇怪的事情,试图让自己更清楚。

有些人会慢下来。其他人可能会过度说出他们的话,并确保他们所有的Ts和Ks都尽可能清晰。其他人会尝试采用他们认为计算机最能理解的口音,对女王伊丽莎白二世或艾拉玻璃进行最好的模仿。

事情就是这样 - 虽然这些技巧可能会对你说话困惑的游客或者电话线路坏的人有所帮助,但他们根本无法帮助电脑!事实上,我们越是偏离自然连接的语音(用于训练识别器的录音中出现的那种语言),事情就会越糟,螺旋就会继续下去。

扫码关注云+社区