33

Human Language Processing——Speech Recognition

 3 years ago
source link: https://flashgene.com/archives/136542.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

语音识别问题的数学建模

从图中可以看到,语言信号可以表示为一个d T的matrix。其中,d为向量的维度(不同的表示方法,维度不一样), T为向量的个数。 同理,文本也可以表示为一个V N的matrix,N表示组成text的token(不同的表示方法,token的含义不一样)的个数,V表示token集合的大小(即token去重后的数量)。 语音信号的预处理通常采用重叠的稠密采样机制,通常T >> N。语音识别问题的输入输出都是matrix,输入vector及输出token的选取,不同的算法有不同的方式。整体来看,语音识别问题就是一个Seq2Seq的变换问题

输出Token有哪几种选择

简单的说,有以下五种选择:

Phoneme 发音的最小单位

将语音信号转化为Phoneme之后,还需要进一步将Phoneme信号转化为Text。所以该方法并不是end-to-end的,需要后处理步骤。那幺如何将Phoneme转化为Text呢?需要用到一个词表,我们通常称之为Lexicon。形式如下

以英文为例:该表包含了所有单词的Phoneme表示,英文单词有多少个,该表就有多少行。可想而知,表的条目是很多的。通过查表,我们才能进一步将Phoneme转化为text

对于英文和中文来说,这种token的选取方式都是适用的,英语有音标,汉语有汉语拼音。两者的Phoneme集合和Lexicon不一样

Grapheme 书写的最小单位

对于英文来说,Grapheme指的就是26个英文字母;对于中文来说,Grapheme指的就是约4000+个常用汉字。由于在英文书写系统中,包括了标点符号和空格,所以,实际的英文Grapheme集合的数量为26(英文字母,不区分大小写)+ 1(空格)+ 12(常用标点符号)。中文Grapheme集合的数量为3755(一级汉字)+ 3008(二级汉字)+ 16(标点符号)

值得一提的是,这种选取方式是Lexicon free的,它不需要语音学家的帮忙来制定复杂专业的Lexicon; 从流程上来看,做到了end-to-end

Word 单词

对于中文和英文来说,都有词的概念。英文里面,’a’为一个字符,’and’为一个单词;中文里面,”中”是一个汉字,”中国”是一个词

英语单词个数在17万~100万之间,一个普通美国大学生懂的单词大概有3万个,经常使用的词汇约3000-5000个左右。汉语约有词语36万个,常用词语约为28770个

Morepheme 单位大于Grapheme,小于word,是组成单词的最小有意义的单元

这种表示方式存在于英语、土耳其语中。但凡有词根、词缀的语言,都可以用这种表示方 式。中文是没有这种表示方式的,中文只有汉字和词语,并没有词根、词缀

显然,从通用性的角度来说,这种表示方式不是很好

Bytes 世界上所有的字符都有对应的utf-8编码,字符集其实就是Byte集

这种表示方式,一个显而易见的好处就是,它是language independent的!如果能够work的话,General Speech Recognition就得以实现。另外,由于一个Byte只有256个取值,因此Bytes集合并不会像word集合那幺大。看起来,确实非常有前景!

哪种输出Token的选取方式比较好呢?

好不好依赖于语言,依赖于实际问题,也依赖于算法,没法一言概括。但某些方式的弊端却是显而易见的:Phoneme方式,需要lexicon的辅助,并不是end-to-end的;word方式,token集合的个数通常 > 100k,解码复杂;Byte方式,想做到大一统,需要的训练语料必然异常庞大;Morpheme,只适用于某些有词根、词缀的语种,中文即不适用

那幺,目前最新的研究中,一般是如何选取的呢?

通过对19年语音识别顶会100多篇论文的分析,得到了上图。可以看到,使用grapheme方式的人是最多的,占到了41%;使用phoneme的也有不少,约为32%, 而使用word和 morpheme的人则分别只有10%和17%

输入Token有哪几种表示方式

其实,语音信号可以表示为2维矩阵,也可以表示为1维向量,不过从实际应用来看,表示为2维矩阵的比较多

语音信号的一维表示方式如下: 以一段1s, 16kHz采样, 8bit量化的语音信号为例,它可以表示为一个长度为16000的向量,向量中每个元素的取值为[-128, 127]

语音信号的二维表示方式如下:一段语音信号由若干帧组成,每一帧对应25ms的语音信号,帧与帧之间的步长为10ms. 假设一段语音信号时长为1s, 则 T = 1s / 10ms = 100. 每一帧经过运算,得到一个dimension为d的vector. 计算方法不同,则得到的单帧向量的含义、维度也不一样

常用的表示方式有如下三种:

Raw:不做任何处理,d=400

MFCC:计算其MFCC值,d=39

Filter bank output:计算其Filter bank output值,d=80

输入vector选取哪种方式比较好

通过对19年语音识别顶会100多篇论文的分析,得到下图

目前来看,MFCC已成昨日黄花,filter bank output大有一统江湖之势


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK