内容简介:本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.从图中可以看到,语言信号可以表示为一个d简单的说,有以下五种选择:
本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.
语音识别问题的数学建模
从图中可以看到,语言信号可以表示为一个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大有一统江湖之势
以上所述就是小编给大家介绍的《Human Language Processing——Speech Recognition》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
App研发录:架构设计、Crash分析和竞品技术分析
包建强 / 机械工业出版社 / 2015-10-21 / CNY 59.00
本书是作者多年App开发的经验总结,从App架构的角度,重点总结了Android应用开发中常见的实用技巧和疑难问题解决方法,为打造高质量App提供有价值的实践指导,迅速提升应用开发能力和解决疑难问题的能力。本书涉及的问题有:Android基础建设、网络底层框架设计、缓存、网络流量优化、制定编程规范、模块化拆分、Crash异常的捕获与分析、持续集成、代码混淆、App竞品技术分析、项目管理和团队建设等......一起来看看 《App研发录:架构设计、Crash分析和竞品技术分析》 这本书的介绍吧!