2020-11-27 吴恩达DL学习-C5 序列模型-W3 序列模型和注意力机制(3.9 语音辨识--音位表示法(人工设计),注意力模型,CTC模型)

274 篇文章 24 订阅
233 篇文章 0 订阅
本文介绍了深度学习在语音识别中的应用,特别是序列到序列模型如何提升语音识别的准确性。重点讲解了注意力模型和CTC(Connectionist Temporal Classification)模型的工作原理,以及它们在处理音频数据时如何生成文本输出。同时,提到了大型数据集对于训练高效语音识别系统的重要性。
摘要由CSDN通过智能技术生成

1.视频网站:mooc慕课https://mooc.study.163.com/university/deeplearning_ai#/c
2.详细笔记网站(中文):http://www.ai-start.com/dl2017/
3.github课件+作业+答案:https://github.com/stormstone/deeplearning.ai

3.9 语音辨识 Speech recognition

现今,最令人振奋的发展之一,就是seq2seq模型(sequence-to-sequence models)在语音识别方面准确性有了很大的提升。这门课程已经接近尾声,现在我想通过剩下几节课来告诉你们,seq2seq模型是如何应用于音频数据的(audio data),比如语音(the speech)。
在这里插入图片描述

什么是语音辨识问题呢?

现在你有一个音频片段 x x x(an audio clip,x),你的任务是自动地生成文本 y y y

现在有一个音频片段,画出来是这样(上图左中),该图的横轴是时间。一个麦克风的作用是测量出微小的气压变化,现在你之所以能听到我的声音,是因为你的耳朵能够探测到这些微小的气压变化,它可能是由你的扬声器或者耳机产生的,也就是像图上这样的音频片段,气压随着时间而变化。

假如这个我说的音频片段的内容是:“the quick brown fox”(敏捷的棕色狐狸),这时我们希望一个语音识别算法(a speech recognition algorithm),通过输入这段音频,然后输出音频的文本内容。考虑到人的耳朵并不会处理声音的原始波形,而是通过一种特殊的物理结构(上图左下)来测量这些,不同频率和强度的声波。音频数据的常见预处理步骤,就是运行这个原始的音频片段,然后生成一个声谱图(a spectrogram),就像这样。

同样地,横轴是时间,纵轴是声音的频率(frequencies),而图中不同的颜色,显示了声波能量的大小(the amount of energy),也就是在不同的时间和频率上这些声音有多大。

通过这样的声谱图,或者你可能还听过人们谈到过伪空白输出(the false blank outputs),也经常应用于预处理步骤,也就是在音频被输入到学习算法之前,而人耳所做的计算和这个预处理过程非常相似。

语音识别方面,最令人振奋的趋势之一就是曾经有一段时间,语音识别系统是用音位(phonemes)来构建的,也就是人工设计的基本单元(hand-engineered basic units of cells)。
在这里插入图片描述

如果用音位来表示"the quick brown fox",我这里稍微简化一些,“the"含有"th"和"e"的音(读作"de”),而"quick"有"k" “w” “i” “k"的音(读作"kwik”)。语音学家过去把这些音作为声音的基本单元写下来,把这些语音分解成这些基本的声音单元,而"brown"不是一个很正式的音位,因为它的音写起来比较复杂。

语音学家(linguists)们认为用这些基本的音位单元(basic units of sound called phonemes),de/kwik/brown,来表示音频(audio),是做语音识别最好的办法。

不过在end-to-end模型中,我们发现这种音位表示法(phonemes representations)已经不再必要了,而是可以构建一个系统,通过向系统中输入音频片段(audio clip),然后直接输出音频的文本(a transcript),而不需要使用这种人工设计的表示方法。

使这种方法成为可能的一件事就是用一个很大的数据集,所以语音识别的研究数据集可能长达300个小时。在学术界,甚至3000小时的文本音频数据集,都被认为是合理的大小。大量的研究,大量的论文所使用的数据集中,有几千种不同的声音,而且最好的商业系统现在已经训练了超过1万个小时的数据,甚至10万个小时,并且它还会继续变得更大。

在文本音频数据集中(Transcribe audio data sets)同时包含 x x x y y y,通过DL算法大大推进了语音识别的进程。

那么,如何建立一个语音辨识系统呢?

  • 方法一,注意力模型

在上节课中,我们谈到了注意力模型
在这里插入图片描述

所以,一件你能做的事就是在横轴上,也就是在输入音频的不同时间帧上,你可以用一个注意力模型,来输出文本描述,如"the quick brown fox",或者其他语音内容。

  • 方法二,CTC损失函数

还有一种效果也不错的方法,就是用CTC损失函数(CTC cost)来做语音识别。CTC就是Connectionist Temporal Classification,它是由Alex Graves、Santiago Fernandes, Faustino Gomez、和Jürgen Schmidhuber提出的。(Graves A, Gomez F. Connectionist temporal classification:labelling unsegmented sequence data with recurrent neural networks[C]// International Conference on Machine Learning. ACM, 2006:369-376.)

在这里插入图片描述

算法思想如下:

假设语音片段内容是某人说:“the quick brown fox”,这时我们使用一个新的网络,结构像上图这个样子。这里输入 x x x和输出 y y y的数量都是一样的,因为我在这里画的只是一个简单的单向RNN结构。然而在实际中,它有可能是双向的LSTM结构,或者双向的GRU结构,并且通常是很深的模型。

但注意一下图中这里时间步的数量(1000),它非常地大。在语音识别中,通常输入的时间步数量(the number of input time steps)要比输出的时间步的数量(the number of output time steps)多出很多。

举个例子,比如你有一段10秒的音频,并且特征(features)是100赫兹的,即每秒有100个样本。于是这段10秒的音频片段就会有1000个输入,就是简单地用100赫兹乘上10秒。所以有1000个输入,但可能你的输出没有1000个字母,或者说没有1000个字符。这时要怎么办呢?
在这里插入图片描述

CTC损失函数允许RNN生成这样的输出:ttt,这是一个特殊的字符,叫做空白符,我们这里用下划线表示,这句话开头的音可表示为h_eee_ _ _ ,然后这里可能有个空格,我们用这个来表示空格,之后是_ _ qqq_,这样的输出也被看做是正确的输出。这段输出对应的是"the q"。

CTC损失函数的一个基本规则是将空白符之间的重复的字符折叠起来,再说清楚一些,我这里用下划线来表示这个特殊的空白符blank(a special blank character),它和空格space(the space character)是不一样的。
在这里插入图片描述

所以the和quick之间有一个空格符,所以我要输出一个空格,通过把用空白符所分割的重复的字符折叠起来,
在这里插入图片描述

然后我们就可以把这段序列折叠成"the q"。

这样一来你的NN因为有很多这种重复的字符,和很多插入在其中的空白符(blank characters),但是最后我们得到的文本会短上很多。于是这句"the quick brown fox"包括空格一共有19个字符,在这样的情况下,通过允许NN有重复的字符和插入空白符使得它能强制输出1000个字符,甚至你可以输出1000个 y y y值来表示这段19个字符长的输出。

这篇论文来自于Alex Grace以及刚才提到的那些人。我所参与的深度语音识别系统项目就使用这种思想来构建有效的语音识别系统。

希望这能给你一个粗略的理解,理解语音识别模型是如何工作的:注意力模型是如何工作的,以及CTC模型是如何工作的,以及这两种不同的构建这些系统的方法。

现今,在生产技术中,构建一个有效语音识别系统,是一项相当重要的工作,并且它需要很大的数据集,下节课我想做的是告诉你如何构建一个触发字检测系统(a rigger word detection system),其中的关键字检测系统(keyword detection system)将会更加简单,它可以通过一个更简洁的数量更合理的数据来完成。所以我们下节课再见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值