【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

Wav2Letter 开辟了 ASR 新领域,但它的自动分割标准没有得到足够重视

作者:Zach CFollow

  • 2019-06-08
  • 本文字数:3675 字

    阅读完需:约 12 分钟

Wav2Letter开辟了ASR新领域,但它的自动分割标准没有得到足够重视

2016 年,Facebook AI 研究所(FAIR)用Wav2Letter(全卷积语音识别系统)开辟了一个新领域。


在 Wav2Letter 中,FAIR 证明,基于卷积神经网络(CNNs)系统可以实现与传统的基于递归神经网络的方法一样的性能。


在本文中,我们将重点关注 Wav2Letter 核心中一个未充分利用的模块:自动分割(Auto Segmentation,简称 ASG)标准。



Wav2Letter 模型的架构


在如上所示的 Wav2Letter 架构中,我们可以在声学模型的右侧找到 ASG。



Wav2Letter 架构图中的 ASG


FAIR 报告说,利用具有 ASG 的卷积方法,在应用于TIMIT数据集时,字母错误率(Letter Error Rate,简称 LER)有显著的改善。



TIMIT 字母错误率


同样,尽管 Wav2Letter 仅使用了 CPU 版本的模型进行基准测试,但模型在短序列和长序列上的速度相较于 GPU 版本都有显著提高。



以 ms (毫秒)为单位的短序列时序



以 ms(毫秒)为单位的长序列时序


从根本上来说,ASG 标准是一种特殊类型的损失函数


ASG 构建于更早的算法(如 Connectionist Temporal Classification,简称 CTC)之上,该算法长期以来是语音识别模型的主流。


为了理解 ASG,我们首先需要理解用像 CTC 这样的算法解决的具体问题。接着,我们简要介绍一下 CTC,以便我们最终了解 ASG 的不同之处,并在此基础上进行改进。

从声音到字母

Wav2Letter 的核心是个声学模型,就像我们也许已经猜到的那样,它可以预测声波中的字母。



Wav2Letter 的声学模型


具体来说,Wav2Letter 把音频处理成片,通过各种卷积层传送它们,并为每个音频输出一组概率。每个概率集包含模型字符字典中每个字符的估计值。


这意味着,对于每个音频片,我们会估计那一刻说的是‘e’或是‘t’或是‘s’,还是任何其他可能的字母。


该声学模型形成由这些概率组成的链,链上的每个链环都代表在当时特定字母出现的估计值。


这条链包含我们声学模型的假设。为了得到最终预测,我们需要把这条概率链转换成整条音频切片中最有可能出现的字母序列。

对齐问题

请记住,Wav2Letter 的声学模型本质上是声波到字符的分类器。该模型“看”到一点声波的输入并说:“好,这个看起来像‘H’或可能是‘S’”。


但是,与静态图像不同,声波会随着时间流动。如果我们的短句是“THE CAT”,我们如何知道说话的人何时不再说“T”,而是说“H”呢?


为了学习“这就是‘T’的样子”,Wav2Letter 需要理解随着时间的推移,口语是如何在字母之间转换的。


只有理解了这些转换,该模型才可以开始将声音的表示映射到正确的字符标签。


但是,我们遇到了问题。用于语音识别的训练数据通常只有音频和书面文本,这两者之间没有对齐的数据。我们也许输入一个 3 秒钟长的.wav 文件,里面包含某个人说的“The Cat”和一个.txt 文件,里面包含这些字母:“The Cat”。我们知道,在“The”中,“T”在“H”之前出现,但是,文本没有告诉我们出现的时间。



一个音频片中,来自 CTC(顶部)和 ASG(底部)的字母对齐示例


手动对齐每个字母来匹配音频中的时刻会很耗时,并且在大规模的时候几乎不可能做到。我们也不能依赖像“一个字母持续 500 毫秒”这样肤浅的一般规则,原因很简单,人们说话的速度不同。


那我们该怎么做呢?用 CTC。

CTC 如何解决对齐问题?

传统上,从业者用CTC算法解决了这种对齐数据的缺乏。


在本节中,我们将只涉及 CTC 最好的地方。这样,我们可以看到 ASG 和它的差异所在。关于这个问题,可以参考在Distill上更深入解释CTC的文章


对应每个音频片,CTC 期望所有可能的字母都有一组概率。另外,至关重要的是,有一个特别的“空白”标签


Wav2Letter 的声学模型把概率集的输出链输入到 CTC,CTC 用以找出最高概率输出。并且,它不需要任何计时数据就可以做到。


怎么做?


我们以单个音频文件的简化示例为例,其中说话人说的是“hello”。


正如我们所看到的,我们的输入是每个音频片上字母的概率集,是由我们的声学模型将音频转化而来。



由声学模型生成的概率链


在这个例子中,我们想象我们的字典中只包含‘h’‘e’‘l’‘o’和之前提到的特别空白标签,这个标签有个正式的科学名称:波浪 e(squiggle e)。


每个时间片都有每个字母的估计值。较暗的单元代表该字母的概率更高。信不信由你,这就是我们用来推断声音和字母之间可能对齐的所需。


把这个字母网格想象成图。


CTC 逐列扫描每个可能的组合:



对于“cat“这个词,显示了每个有效 CTC 对齐的图


该图为我们提供了音频字母的每个可能对齐方式。(在实际操作中,CTC 使用动态编程技术,使该过程比听上去的更有效)。


CTC 对每个可能对齐的概率求和。一旦完成,CTC 显示最可能对齐的一段。


更正式的说法是,CTC 旨在通过该可能对齐的路线图让路径上的总分最大化。


对于我们的“hello”示例,下面是两个极有可能的对齐方式:



这些生成的对齐将从合理到荒谬排列。


请注意:我们的第 2 个对齐,尽管技术上有效,但它甚至没有包含一个“H”! 其他对齐方式也许是“HHHHHELLOO”或“HEELLLLLOO”,而不太可能的是“OOOOOOOOOO”和“LLLLLOOOOO”。


为了生成最终输出,CTC 删去了重复字母……



……并且删去了特别的空白标签,波浪 e



删去重复字母和波浪 e 之后,我们最终得到我们最高可能性的输出:“hello”。


该输出可以与我们音频的书面文本进行比较。我们可以根据我们文本的事实来计算我们模型的损失。好!


我们来回顾一下。


CTC 完成了两件重要的事情:


首先,通过扫描可能的对齐和链接高度可能单个字母的猜测,我们最终获得了该音频的一个有效的预测文本,而该音频没有任何一个对齐数据。


CTC 还可以处理音频中的变化。比如,当说话的人停留在字母“h”上时,CTC 在对齐中可以包含多次“h”。我们删除重复的字母,仍然可以得到“hello”。


其次,我们特殊的波浪 e 有两个作用,分别是垃圾帧(如在字母之间可能发生的静默或呼吸)的分隔符及重复字母的分隔符。


波浪 e 使得 CTC 模型可以处理无法识别出任何字母的噪声帧。此外,它允许模型生成像“hello”这样的词,即使“I”是个重复的字母,而 CTC 有着删除重复字母的机制。

好,那么, ASG 到底是什么?

自动分割标准(Auto Segmentation Criterion,简称 ASG)与 CTC 有这两个不同之处:


  1. 没有特别的空白标签(波浪 e)。

  2. ASG 避免某种类型的规范化。


就是这样而已。


我们来看看这两点。

没有空白标签让事情变得更简单更快

在 Wav2Letter 中, FAIR 报道,实际上使用特殊的空白标签来处理字母之间音频的垃圾帧“没有优势”。


因此,ASG 删去了该标签。对于重复的字母,ASG 用“2”来表示,而不是用空白标签。在我们的示例中,“hello”将变成“hel2o”。



对于“CAT”,一个 CTC 图显示可接受的字母序列



对于“CAT”,一个 CTC 图显示可接受的字母序列。请注意,没有特别的标签来表示垃圾帧。


通过删除特别标签,ASG 大大简化了该算法在生成对齐时必须搜索的图。这可能是报告中的一些性能提升的原因。

ASG 允许声学模型来学习字母之间的关系

CTC 希望其输入在帧级别上规范化。对于用我们的声学模型创建的链上的每个概率集,每个字母的概率用该框架中的其他字母的概率来规范化。


对于 CTC 来说,每个帧都是其自己的小世界。重要的是要找出这些帧中字母到字母预测的最高总和。



5 个帧中用于“CAT”所有有效对齐的 CTC 图。节点之间相互连接,但是线段没有表示给定连接的概率更大或更小。


出于各种技术原因,ASG 没有进行帧规范化。规范化的细节并没有那么重要:


ASG 给 Wav2Letter 的声学模型赋予了通常用于语言模型的能力:学习字母之间转换可能性的能力。


在实际的语言中,某些字母的组合比其他的更有可能。这些字母的特定组合可能性被称为“转换(transitions)”,可以提高模型的准确性。


有些转换明显比其他的更有可能。比如,在英语中,“TH”这个序列比“TS”更有可能(ts 仅出现在像“tsar”或“tsetse fly”这样晦涩的词中)。


ASG 拥有自己的权重矩阵,该矩阵为每个字母之间的可能转换建模。就像任何其他标准权重矩阵那样,这些权值是通过反向传播训练的。通过使用该矩阵,ASG 允许声学模型学习转换分数(一个字母跟随另一个字母的可能性),并把它们融合到我们用来生成字母到字母预测最可能的对齐图的边缘。



“CAT”的 ASG 图展开了 5 帧。图形节点之间的边缘(线)包含字母之间转换的学习分数。


因为该声学模型包含对字母序列的有用理解,所以,实际上,Wav2Letter 的解码器在为其最终文本打分时,使用的是来自声学模型和其真实语言模型输出的转换数据。



ASG 连接到 Wav2Letter 解码器中的集束搜索

结论

我们来做个总结。


像 Wav2Letter 这样的语音识别系统面临着一个恼人的问题:几乎没有关于声音和转录是如何及时对齐的信息。


但是,为了生成准确的逐字母预测,我们需要知道一个字母何时开始以及另一个字母何时结束。我们的声学模型学习的就是把声波和特定字母关联起来。


通常,深度学习实践者用一个称为 CTC 的算法来解决该问题。尽管在很多情况下,CTC 工作得很好,但是它包含一个额外的标签,提高了复杂性并可能降低速度。它还包括一个规范化形式,限制了声学模型可以学习的内容。


ASG 是一种特殊类型的损失函数,其通过删除 CTC 额外的标签及允许该声学模型使用自身的权重矩阵来学习字母之间的转换来改进 CTC。


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2019-06-08 08:007561
用户头像

发布了 199 篇内容, 共 81.7 次阅读, 收获喜欢 293 次。

关注

评论

发布
暂无评论
发现更多内容

纯CSS实现自定义单选框和复选框

爱嘤嘤嘤斯坦

CSS Java 编程语言 标签

开发框架文档体系化的思考

vivo互联网技术

框架开发

Docker网络学习第二篇-认识iptables

Lazy

Docker Linux 网络

5万字、97 张图总结操作系统核心知识点

cxuan

操作系统 计算机

猿灯塔:spring Boot Starter开发及源码刨析(五)

猿灯塔

spring 猿灯塔

实战技巧,Vue原来还可以这样写

前端有的玩

Java Vue 大前端 技巧

当我们在谈架构时,我们谈的是什么?

冯文辉

架构 企业架构 系统架构

关于如何判断一个list是否为空的思考

Leetao

Python Python基础知识 列表

震惊!ConcurrentHashMap里面也有死循环,作者留下的“彩蛋”了解一下?

why技术

Java 源码 jdk 后端 bug

API接口设计最佳实践

Man

Java 安全开发 设计实践 APi设计 接口管理

Malagu 框架的认证与授权【借鉴 Spring Security 和 aws iam 的设计】

木香丘

身份认证 权限系统

Doris 临时失效处理过程

石刻掌纹

一张PDF了解JDK10 GC调优秘籍-附PDF下载

程序那些事

Java jdk JVM GC JDK10

秒懂云通信:通信圈黑话大盘点

阿里云Edge Plus

云通信 通信云

【面试题系列】——Java基础

Noneplus

Java

架构师训练营作业 -- Week 6

吴炳华

极客大学架构师训练营

第六周总结

石刻掌纹

MySQL性能优化(二):选择优化的数据类型

xcbeyond

MySQL性能优化

week6 总结

不在调上

Docker网络学习第一篇:Linux虚拟网络

Lazy

Docker Linux 网络

从0开始设计Flutter独立APP | 第三篇: 一劳永逸解决全局BuildContext问题

渔子长

flutter 大前端 跨平台 React

“Python的单例模式有四种写法,你知道么?”——孔乙己

BigYoung

Python 设计模式 单例模式

【进收藏夹吃灰系列】——Java基础快速扫盲

Noneplus

Java

30岁+程序员职场攻略:找到自己的“职业锚”乘风破浪

华为云开发者联盟

程序员 AI 开发者 职场

文档写作利器:Markdown

xcbeyond

markdown

CAP原理

李白

Malagu 框架开发 React 应用新体验

木香丘

Serverless 大前端 React 微应用 Malagu

6种快速统计代码执行时间的方法,真香!

王磊

Java

昨天、今天、明天

escray

Java8——方法引用

Java旅途

java8 方法引用

MySQL性能优化(一):MySQL架构与核心问题

xcbeyond

MySQL MySQL性能优化

Wav2Letter开辟了ASR新领域,但它的自动分割标准没有得到足够重视_AI&大模型_InfoQ精选文章