深度学习与人类语言处理-语音识别(part1)

深度学习与人类语言处理课程笔记,上节回顾深度学习与人类语言处理-introduction。这节课将会简单介绍语音识别的最新研究方法,请看正文


语音识别该何去何从?

1969年,J.R. PIERCE:“语音识别就像把水变成汽油、从大海中淘金、治疗癌症、人类登陆月球”

当然,这是50年前的想法,那么语音识别该如何做呢?

一个典型的语音识别系统如下,输入一段语音到模型,模型输出一段文本

Speech:表示一个长度为T,维度为d的向量序列
Text:一个token序列,长度为N,V个不同的token,通常T>N

接下来看看输入可以有哪些可能,输出有哪些可能,首先看下输出部分

输出Token

  • 音位(phoneme,发音的基本单位)

在深度学习没有流行之前,以音位为输出是很常见的,因为音位和声音的对应关系比较强,那输出是一系列音位,怎么变成我们能看懂的文字呢?需要一个词典,需要语言学家标出来,音位同样也需要语言学家帮忙

  • 字母(Grapheme,书写的基本单位)
  1. 英文(基本书写单位:字母)

总的token:26个英文字母+一个空格+标点符号

one_punch_man;N=13,V=26+?
  1. 中文(基本书写单位:单个汉字)

总的token:常用的汉字(和英文区别在于没有空格)

"一",“拳”,“超人”,“人”;N=4,V=4000+
  • 词(word)

英文:one punch man;N=3,通常V>100K

中文:“一拳 ”超人“;N=2,V=?

使用词做为输出单位很难,因为中文没有空格,没有词的明确分界,对于一些语言,V可能超大,无法穷举

  • 语素(Morpheme,可以传达意思的最小单位,小于词,大于字母)

例如英文中:unbreakable可以拆成 “un“ ”break“ ”able”

那语素如何获取呢?

请语言学家告诉我们;使用统计学方法

  • 字节(bytes)

使用字节作为输出系统是language independent,不受语言限制

所有的语言都用UTF-8编码表示:

那么哪个Token最受欢迎呢,统计了19年语音三大顶会paper ( INTERSPEECH’19, ICASSP’19, ASRU’19 )。发现最多人使用的是grapheme

除了上述形式,还有哪些输出呢?

  1. 输入语音,输出word embedding
  2. 和翻译系统结合,直接输出另一种语言文本
  3. 加入意图识别,输出对应的意图
  4. 输出输入中所包含的关键词

输入部分(声学特征,acoustic feature)

对输入的声音信号,使用25ms的时间窗取出一个frame,对应就有400个采样点(16KHz)(使用MFCC会得到39维向量、filter bank输出是80维),通常的每个时间窗的间隔为10ms,那么1s内就有100个frame,如何处理每个frame呢,请看下图

输入声音信号 经过 离散傅里叶变换 变成 频谱图,经过多个不同的 filter bank (古圣先贤们设计出来的) 处理后, 得到向量 使用对数变换,经过 离散余弦变换,使用MFCC方法得到向量

同样我们看下哪种输入信号最受欢迎,19年filter bank成为主流

  • 训练一个语音识别系统需要多少数据?

很多很多,google语音识别系统用了上十万的语音数据。。。

语音识别模型的两个不同的角度

seq-to-seq将要被介绍的模型

  • Listen, Attend, and Spell (LAS)
  • Connectionist Temporal Classification (CTC)
  • RNN Transducer (RNN-T)
  • Neural Transducer
  • Monotonic Chunkwise Attention (MoChA)

同样我们看下,19年的趋势

下节课。我们将会依次介绍上述提到的模型
接下来深度学习与人类语言处理-语音识别(part2)

references:

http://speech.ee.ntu.edu.tw/~tlkagk/courses_DLHLP20.html

posted @ 2020-03-15 09:35  鱼与鱼  阅读(3190)  评论(0编辑  收藏  举报