专栏首页mathorHuman Language Processing——Speech Recognition

Human Language Processing——Speech Recognition

语音识别问题的数学建模

从图中可以看到,语言信号可以表示为一个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大有一统江湖之势

语音数据集

我们需要多少有标注文字的声音数据,才能做出一个足够好的语音识别系统呢?由下图可知,MNIST数据集可以等价于49分钟时长的语音。CIFAR-10可以等价于2小时40分钟。现有评测数据集ISLVRC有4096个小时的语音数据。文献上,谷歌语音搜索,他们会用超过1万小时的语音数据去训练模型。而实际产业中的商用系统,使用的数据量大小会远远超过以上这些

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SLURM使用教程

    我现在经常在实验室服务器上跑程序,而老师要求我们使用SLURM作业管理系统,网上资料零零散散,这篇文章算是一个简单的汇总

    mathor
  • BufferedIo

    mathor
  • Human Language Processing——Alignment

    相较于HMM、CTC和RNN-T,LAS在计算P(Y|X)时,是直接计算的,不存在对齐的问题

    mathor
  • C#代码示例:在WinForm中创建并绑定一个DataTable

    在我的一篇文章中,我解释了如何在没有数据库的情况下以web形式绑定gridview。这里,我将解释如何在没有数据库的windows窗体中绑定datagrid。

    程序你好
  • PyCharm使用内置SSH

    在主菜单中选择Tools|Start SSH Session.., 然后点击弹出框中的Edit credentials:

    用户2936342
  • 致远软件不走“寻常”路 别人攻移动 他攻行业:2015年战略猜想

    软件行业有任何风吹草动,OA厂商一定是率先感知,因为他是有敏锐的触角,其实在很早的时候T哥就说过,互联网+这个话题会被很多厂商引用,而致远算是其中之一,但绝对不...

    人称T客
  • TCB系列学习文章——云开发的云托管(八)

    云托管(Tencent CloudBase Run)是 云开发(Tencent CloudBase,TCB)提供的新一代云原生应用引擎(App Engine 2...

    F颜
  • SpringBoot2.x系列教程(三十七)SpringBoot web之网站图标(Favicon)配置

    正常情况下,每个网站都会有一个对应的网站图标(Favicon),在浏览器访问网站时,对应的浏览器标签上会出现对应的图标。如下图百度的图标:

    程序新视界
  • 动态 | Data Science in China论坛:产学十位华人大牛分享数据挖掘研究成果 | KDD 2018

    AI 科技评论按:KDD 2018 主会首日,「Data Science in China at KDD 2018」于当天下午顺利举行。本次演讲邀请了知名的十位...

    AI科技评论
  • Hi Swifter:来和Guard问声好吧

    Swift正逐步占领iOS App实际开发的市场份额,Swift 的简洁、易用性已经吸引了大量开发者,大家已开始或准备开始使用Swift开发iOS App。

    博文视点Broadview

扫码关注云+社区

领取腾讯云代金券