2019-04-24 09:37:17 whale52hertz 阅读数 129
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    1122 人正在学习 去看看 CSDN讲师

来源:ATYUN AI平台 

技术的进步推动了语音界面的发展,通过机器学习工具的普及,使得更多的互联网连接产品能够比以往任何时候都更能倾听和回应我们的声音。许多人将会体验到新的语音设备带来的便利。

语音识别取得了两个里程碑进展 Mozilla发布开源语音识别模型和语音数据集

Mozilla(缩写MF或MoFo)全称Mozilla基金会,是为支持和领导开源的Mozilla项目而设立的一个非营利组织。Mozilla对语音识别的潜力感到兴奋。他们相信这项技术能够并且将会带来一波创新产品和服务的浪潮,并且应该对所有人开放。

上个月29日,Mozilla的机器学习小组的语音识别工作取得了两个重要的里程碑进展。其中之一是Mozilla的开源语音识别模型首次发布,该模型的准确性接近人类在听同样的录音时的感知。其次,Mozilla还发布了世界上第二大公开的语音数据集,这是全球近2万名用户的贡献。

一个接近用户期望性能的开放源码的语音文本引擎
目前只有少数几家大公司的商业质量语音识别服务是可行的。这就减少了用户的选择,也减少了初创公司、研究人员甚至更大的公司的可用功能,这些公司想要为他们的产品和服务提供支持。

这就是为什么Mozilla将DeepSpeech作为一个开放源码项目。Mozilla和一群志同道合的开发人员、公司和研究人员组成的社区一起,应用了复杂的机器学习技术和各种各样的创新,在LibriSpeech的测试数据集上构建了一个语音到文本的引擎,出错率仅为6.5%。

在发布的第一个版本中,引擎包含了Python、NodeJS和一个命令行二进制代码的预构建包,开发者可以马上使用它来进行语音识别。

构建世界上最多样化的公开语音数据集,为训练语音技术最优化
如此少的服务在商业上可用的一个原因是缺乏数据。创业公司、研究人员或任何想要建立语音技术的人都需要高质量的、转录的语音数据来训练机器学习算法。现在,他们只能访问相当有限的数据集。

为了解决这一障碍,Mozilla在今年7月启动了Common Voice项目。目标是让人们可以很容易地把他们的声音捐赠给一个公开的数据库,这样就可以建立一个语音数据集,每个人都可以用它来训练新的语音应用程序。

语音识别取得了两个里程碑进展 Mozilla发布开源语音识别模型和语音数据集

到目前为止,Mozilla已经发布了第一批捐赠者的声音:近40万种录音,相当于500小时的演讲。任何人都可以下载这些数据。

Mozilla收到了来自全球范围内的2万多人提供的不同的声音。通常,现有的语音识别服务无法理解不同的口音,而且大多数情况,比起女性更善于理解男性的语音——这是语音识别服务接受训练的数据中存在的偏见结果。Mozilla希望说话者的数量和他们的不同的口音能够创造出一个全球性的代表数据集,从而带来更具包容性的技术。

为此,Mozilla开始使用英语,并且正在努力确保从2018年上半年开始,Common Voice项目能够支持多种语言的语音捐赠。最后,当经历了寻找可公开的语音数据集的挑战时,Mozilla还收集了所有其他我们所知道的大型语音收集的链接。

Mozilla认为,技术应该是开放的,所有人都可以访问,包括语音。Mozilla开发这种技术的方法是由设计开放的,他们非常欢迎更多的合作者和贡献者与之一起工作。

本文转自ATYUN人工智能媒体平台,原文链接:语音识别取得了两个里程碑进展 Mozilla发布开源语音识别模型和语音数据集

更多推荐

达观数据荣获上海市软件企业核心竞争力评价,推动上海软件行业发展

云从科技 | 从初创企业上位AI“国家队”,看看背后都干了些什么?!

智行者蜗小白“无人清扫车”南翠屏上岗(图)

裤子变裙子,GAN图像转换新进展

欢迎关注ATYUN官方公众号,商务合作及内容投稿请联系邮箱:bd@atyun.com
欢迎关注ATYUN官方公众号,商务合作及内容投稿请联系邮箱:bd@atyun.com

 

2020-03-09 16:44:42 qq_36573282 阅读数 28
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    1122 人正在学习 去看看 CSDN讲师

数字语音识别的基本步骤

数字语音识别的基本模型如下图所示。首先对语音进行处理之后,使用声学模型进行解码,之后将音节与词表进行匹配得到词序列,最后再使用语言模型得到语句。
在这里插入图片描述
在中间的过程中,通过解码后的音学信号序列得到词语序列。常规的方法是使用贝叶斯来计算词语的概率值。
假设XX是声学信号序列,WW是词语序列,那么贝叶斯公式为PΛ(WX)=PλX(XW)PλW(W)P(X)P_{\Lambda}(W|X)=P_{\lambda X}(X|W)\frac{P_{\lambda W}(W)}{P(X)}。在训练的过程中是要最大化maxΛPΛ(WX)max_{\Lambda}P_{\Lambda}(W|X),在语音解码得到词语序列的时候则是最大化maxWPΛ(WX)max_{W}P_{\Lambda}(W|X)

语音识别模型

语音识别常用的模型包括动态时间规整(Dyanmic Time Warping)矢量量化(Vector Quantization)隐马尔可夫模型(Hidden Markov Models)

隐马尔可夫模型

高斯混合密度分布刻画了语音状态(例如音素)以及语音状态之间的时序变迁的统计规律。基本的过程包含三步。

  1. 评估:给定观测向量Y和模型,利用前向后向算法计算得分;
  2. 匹配:给定观测向量Y,用Viterbi算法确定一个优化的状态序列;
  3. 训练:用Baum-Welch算法(类似于EM)重新估计参数,使得得分最大。
    已知一个有限的离散状态序列S={q1,q2,,qN1,qN}S=\{q_1,q_2,\dots,q_{N-1},q_N\},从时间tt到时间t+1t+1,保持当前状态或迁移到另一个状态。从时刻tt状态为qiq_i迁移到时刻t+1t+1状态为qjq_j,概率为aij=P(qt+1=jqt=i),1i,jNa_{ij}=P(q_{t+1}=j|q_t=i),1\leq i,j\leq N。这样就可以得到状态之间的迁移概率矩阵。
    A=[a11a12a1Na21a22a2NaN1aN2aNN] A=\left[\begin{matrix} a_{11} & a_{12} & \dots & a_{1N}\\ a_{21} & a_{22} & \dots & a_{2N}\\ \dots & \dots & \dots & \dots\\ a_{N1} & a_{N2} & \dots & a_{NN} \end{matrix}\right]
    在矩阵AA中,aija_{ij}满足aij0,ija_{ij}\geq0, \forall ij,且j=1Naij=1,i\sum_{j=1}^{N}a_{ij}=1, \forall i
    马尔可夫有两个基本假设:一是过程是无记忆的,即P(qt+1=jqt=i,qt1=k,)=P(qt+1=jqt=i)P(q_{t+1}=j|q_t=i,q_{t-1}=k,\dots)=P(q_{t+1}=j|q_{t}=i);二是马尔可夫过程是时间同质(homogeneous)的,即P(qt+1=jqt=i)=P(qt+1+k=jqt+k=i)P(q_{t+1}=j|q_t=i)=P(q_{t+1+k}=j|q_{t+k}=i)
    在计算某个序列的概率的时候,可以利用马尔可夫的链式规则来计算。例如,计算序列q1,q2,,qTq_1,q_2,\cdots, q_T的概率,
    P(q1,q2,,qT)=P(qTq1,q2,,qT1)P(q1,q2,,qT1)=P(qTqT1)P(q1,q2,,qT1)==P(qTqT1)P(qT1qT2)P(q2q1)P(q1)\begin{aligned}&P(q_1, q_2,\dots, q_T)\\ &=P(q_T|q_1,q_2,\dots,q_{T-1})P(q_1,q_2,\dots,q_{T-1})\\ &=P(q_T|q_{T-1})P(q_1,q_2,\dots,q_{T-1})\\ &=\cdots\\ &=P(q_T|q_{T-1})P(q_{T-1}|q_{T-2})\cdots P(q_2|q_1)P(q_1) \end{aligned}
    上面都是离散状态的隐马尔可夫模型,对于连续的马尔可夫模型,观察值是连续的随机变量XX。某个状态jj对应的观察值统计特性由一个观察值概率密度函数bj(X)b_{j}(X)表示。在这里插入图片描述

前向后向算法

前向后向算法用来计算一个给定观察值序列O=O1,O2,,OTO=O_1,O_2,\dots, O_T以及一个模型λ=(π,A,B)\lambda=(\pi,A,B)P(Oλ)P(O|\lambda)的概率。
设问题为计算P(O1,O2,,OTλ)P(O_1,O_2,\dots, O_T|\lambda),状态序列为q=(q1,q2,,qT)q=(q_1,q_2,\dots, q_T),假设观察值之间是相互独立的,则P(Oq,λ)=Πi=1TP(Otqt,λ)=bq1(O1)bq2(O2)bqT(OT)P(O|q,\lambda)=\Pi_{i=1}^{T}P(O_t|q_t,\lambda)=b_{q_1}(O_1)b_{q_2}(O_2)\dots b_{q_T}(O_T)。如果目标是计算出概率最大的那个序列,直接用这个公式一一计算,则需要计算NTN^T个状态序列。因此,使用前向后向算法相比之下更为高效。前向后向算法类似于动态规划过程。定义前向过程变量αt(i)=P(O1,O2,,Ot,qt=θiλ),1tT\alpha_t(i)=P(O_1,O_2,\dots,O_t,q_t=\theta_{i}|\lambda), 1\leq t \leq Tαt(i)\alpha_t{(i)}是从时刻1至当前时刻tt的观察序列的概率(不是全部序列的概率)。
在这里插入图片描述
前向算法计算过程包括三个步骤。初始时刻的步骤为α1(i)=πibi(oi)\alpha_1(i)=\pi_ib_i(o_i),之后就是逐时刻递推αt+1(j)=[i=1Nαt(i)αij]bj(oi+1)\alpha_{t+1}(j)=[\sum_{i=1}^{N}\alpha_{t}(i)\alpha_{ij}]b_j(o_{i+1})。在最终的结束时刻,P(Oλ)=i=1NαT(i)P(O|\lambda)=\sum_{i=1}^{N}\alpha_T(i)。后向算法与前向算法类似,计算顺序上是从后向前计算。

维特比算法

  1. 初始化:δ1(i)=πibi(O1),1iN\delta_1(i)=\pi_ib_i(O_1), 1 \leq i \leq N, ψ1(i)=0\psi_1(i)=0
  2. 递推过程:δt(j)=max1iN[δt1(i)αij]bi(Ot),2tT,1jN\delta_t(j)=max_{1\leq i \leq N}[\delta_{t-1}(i)\alpha_{ij}]b_i(O_t),2 \leq t \leq T, 1 \leq j \leq N,
    ψt(j)=argmax1iN[δt1(i)αij],2tT,1jN\psi_t(j)=argmax_{1\leq i \leq N}[\delta_{t-1}(i)\alpha_{ij}], 2\leq t \leq T, 1 \leq j \leq N
  3. 终止:P=max1iN[δT(i)]P^*=max_{1\leq i \leq N}[\delta_T(i)],
    qT=argmax1iN[δT(i)]q^*_T=argmax_{1\leq i \leq N}[\delta_T(i)]

最终反向递推得到最佳序列 qt=ψt+1(qt+1),t=T1,T2,,1q_t^*=\psi_{t+1}(q^*_{t+1}),t=T-1,T-2,\dots,1
隐马尔可夫模型可以固定的使用某个语料库得到初始概率分布以及转移矩阵等参数。同样,该模型能够进行训练,从而能够更好的标注特定语料下的语句。
设模型表示为λ(A,B,π)\lambda(A,B,\pi),目标是最大化P(Oλ)P(O|\lambda)。训练的过程可以描述如下:

  • 初始化模型参数 λ0\lambda_0;
  • 使用观测序列OO和模型参数λ\lambda得到新的模型λ~\widetilde{\lambda};
  • λ~λ\widetilde{\lambda} \leftarrow \lambda;
  • 重复步骤2-3,直到 logP(Oλ)logP(Oλ0)<dlogP(O|\lambda)-logP(O|\lambda_0)\lt d
2020-02-18 16:43:13 weixin_44532659 阅读数 274
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    1122 人正在学习 去看看 CSDN讲师

“智能客服+人工坐席”的新型客户服务模式,通过自动化的语音识别技术,降低客服中心的人力成本,提升客服中心的运营效率。

应用场景:客服质检、机器人外呼、语音导航

智能客服和领域非常相关,不同领域的话题各不相同,还有大量的领域词汇,所以需要根据不同领域来训练相应的语音识别模型。

客服语音识别的技术挑战:
1、有些客户普通话口音重:不同地域有不同的口音特点
2、自然风格说话:语速快、吐字不清、抢话叠字
3、电话信道、领域术语多:电话信道8Kh采样,音质差。不同行业有自己独特的领域术语
4、有些客户讲方言:中国有七大方言区、数十种方言

语音数据训练测试实验:
一、全领域客服测试
测试数据:涵盖金融、电信、教育、电商、房产等领域的客服语音
在这里插入图片描述
ASR1: “普通话朗读数据”训练所得模型
ASR1+2: ASR1基础上,增加“重口音普通话数据”
ASR1+2+3: ASR1+2基础上,增加“普通话自然对话数据”
ASR1+2+3+4: 在ASR1+2+3基础上,增加“实网客服语音数据”

结论:
只使用数据堂普通话朗读数据训练后,识别模型的字错率是54.8%,在叠加数据堂重口音普通话、普通话自然对话、实网客服语音后,字错率降到了12.5%.

二、金融领域客服测试
测试数据:金融领域的客服语音
在这里插入图片描述
ASR1: “普通话朗读数据”训练所得模型
ASR1+2: ASR1基础上,增加“重口音普通话数据”
ASR1+2+3: ASR1+2基础上,增加“普通话自然对话数据”
ASR1+2+3+4: 在ASR1+2+3基础上,增加“实网客服语音数据”

结论:
只使用数据堂普通话朗读数据训练后,识别模型的字错率是54.8%,在叠加数据堂重口音普通话、普通话自然对话、实网客服语音后,字错率降到了12.5%.

相关实验数据:

一、普通话朗读语音
1505小时普通话手机采集语音数据
在这里插入图片描述

849小时普通话家居交互手机语音数据
在这里插入图片描述

二、普通话自然对话语音

1000小时普通话多人自然对话语音数据
在这里插入图片描述
2000小时普通话两人自然对话语音数据
在这里插入图片描述

1420小时普通话自然语音手机采集数据
在这里插入图片描述

三、重口音普通话语音

1026小时重口音普通话手机采集语音数据
在这里插入图片描述

662小时重口音普通话手机采集语音数据
在这里插入图片描述

132小时重口音普通话手机采集语音数据
在这里插入图片描述

四、实网客服语音

2823小时普通话客服实网语音采集数据
在这里插入图片描述

555小时全领域客服实网语音采集数据
在这里插入图片描述

140小时电商客服普通话实网采集语音数据
在这里插入图片描述

五、方言语音

方言语音-朗读
在这里插入图片描述

方言语音-自然对话
在这里插入图片描述
https://www.datatang.com/dataset/all/1

2020-03-22 15:59:32 u014365862 阅读数 695
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    1122 人正在学习 去看看 CSDN讲师
2019-04-07 15:37:37 asrgreek 阅读数 22665
  • 云从科技:详解CNN-pFSMN模型以及在语音识别中的应用

    近日,云从科技在语音识别技术上取得重大突破,在全球最大的开源语音识别数据集Librispeech上刷新了世界纪录,错词率(Worderrorrate,WER)降到了2.97%,将Librispeech的WER指标提升了25%,大幅刷新原先记录。本视频课程讲解了:大规模词汇连续语音识别,LVCSR前沿与最新进展,和CNN-pFSMN声学模型。

    1122 人正在学习 去看看 CSDN讲师

虽然现在端到端语音识别模型可以直接对后验概率建模,可以不需要HMM结构了。但实际上目前很多state-of-the-art模型还是以HMM结构为主,比如chain model。而且掌握HMM-GMM结构,对于深入理解语音识别过程是由有一定好处的。

但对于外行或者刚接触语音识别的人来说,要弄懂HMM-GMM结构还是要花不少时间的,特别是被一大推公式整懵了。语音识别任务有些特殊,比如语音识别中,标注只是针对整段音频的,而不是针对每一帧;语音识别是针对每个音素都建立一个HMM模型,而不是所有音素用一个HMM模型描述。

当时为了弄懂HMM-GMM,看了不少资料,但感觉都不适合很初级的学习者。于是就萌生了写一个通俗易懂版的HMM-GMM教程,从一个音频实例说起,给大家一个感性的认识,也着重讲下作为初学者可能会感同身受的问题,不涉及到具体公式。公式的推断会给出参考资料,后续大家在研究,相信有了感性的认识之后,对这些公式的理解就不成问题了。

我们从下面这段音频说起。

在这里插入图片描述
我们把上面2秒的音频分帧,以帧长100ms,帧移100ms为例进行切分,这样上面的音频就被我们分成20帧。(ps:这里主要是为了方便说明,正常情况下帧长是25ms,帧移是10ms)

一、得到这段音频的标注

这里的标注可以是两种:
1、音素级别的标注。这是训练HMM-GMM模型所需要的标注,也就是说可以直接拿来训练的数据。
2、字节别的标注。实际上我们更多时候拿到是的字级别的标注,因为音素级别的标注工作量很大。但我们可以通过发音词典,将字级别的标注转换成音素级别的标注。这种转换没办法消除多音字的影响,但实际上不会对结果产生太大影响(这一部分可以参考kaldi的compile-train-graphs过程:http://kaldi-asr.org/doc/graph_recipe_train.html)

假设上面这段音频的标注是”你好“,那么对应的发音就是”n i2 h ao3“这四个声韵母。这里为了方便说明,我们就是用声韵母作为建模单元(ps:实际应用中是使用音素作为建模单元)。

二、对”n“、”i2“、”h“、”ao3“这4个声韵母分别使用HMM-GMM建模,使用3状态建模,如下图

在这里插入图片描述
为了方面说明,我们给每个状态加了编号。从上图我们可以看到,对于HMM的发射概率,我们是使用高斯分布函数建模的。为了方便说明,这里我们使用单高斯分布函数(虽然上图写的是GMM)
理解自环很重要,比如④这个状态,因为有了自环,它可以出现多次,因此我们可以对任意长的音频建模,这也是连续语音识别的基础。

三、对”n“、”i2“、”h“、”ao3“对应的HMM-GMM模型进行训练,得到模型参数

这一步属于HMM三个问题中的学习问题,需要用到EM算法。在开始训练之前,我们需要明确每个HMM模型的参数、模型的输入和模型的输出。

  • HMM-GMM模型的参数

    1、转移概率
    2、发射概率:因为我们使用GMM对发射概率建模,所以实际参数就是高斯分布中的均值和方差(这也是初学者容易迷糊的一个地方)。
    总结:模型参数就是转移概率、高斯分布的均值、方差

  • 模型的输入

    输入:每帧信号的MFCC特征(也可以是fbank,plp等)。具体应用中,我们通常取39维的MFCC特征。这里为了方便说明,我们取2维的MFCC特征,也就是说输入的特征空间分布是这样的:
    在这里插入图片描述

    上图中,每个黑点对应某一帧信号的MFCC特征。我们需要使用这些特征值来更新GMM的参数,具体怎么更新后续会讲。

  • 模型的输出

    输出:每一帧属于"n"、“i2”、“h”、"ao3"中的某一个状态(3状态)的概率。

同时,需要额外说明的是:虽然我们有了每段音频对应的标注,但实际上HMM-GMM模型的学习过程并不是”有监督的“。因为监督学习任务应该是:“对于每一个输入,都有对应的label”。而语音识别的任务比”传统的监督学习“复杂一点。因为我们拿到的标注是音素级别的。比如上面那段音频,它只告诉我们对应的标注是"n"、“i2”、“h”、“ao3”,并没有告诉我们每一帧(即每一个输入)对应的label是啥?那么应该怎么训练呢,相信是很多初学者的困惑。

对于这种无监督的任务,我们EM算法来进行训练(更专业的术语叫嵌入式训练,embedding training。也就是说把“n”、“i2”、“h”、“ao3”对应的HMM模型嵌入到整段音频中进去训练,因为我们不知道音频的哪一段是对应“n”、“i2”、“h”、“ao3”。嵌入式训练本质还是EM算法的思想):

  • step1:初始化对齐。以上面的20秒音频为例,因为我们不知道每一帧对应哪个声韵母的某个状态,所以就均分。也就是说1-5帧对应"n",6-10帧对应"i2",11-15帧对应"h",16-20帧对应"ao3"。同时"n"又有三个状态,那么就把1-2帧分给状态①,3-4帧分给状态②,第5帧分给状态③。“i2”、“h”、"ao3"亦如此。这里每个状态只是用单高斯描述,如果是混合高斯,还需要进一步用k-means算法来对每个高斯分量初始化。
    初始化完成后,该段音频对应的HMM模型如下:
    在这里插入图片描述

  • step2:更新模型参数。
    1、转移概率:通过上图,我们可以得到①->①的转移次数,①->②的转移次数等等。然后除以总的转移次数,就可以得到每种转移的概率,这是一个统计的过程,无他。
    2、发射概率:即均值和方差。以状态①的均值和方差为例,由上图我们可以知道第1帧和第2帧对应状态①。假设第1帧的MFCC特征是(4,3),第2帧的MFCC特征的MFCC特征是(4,7)。那么状态①的均值就是(4,5),方差是(0,8)

  • step3:重新对齐。根据step2得到的参数,重新对音频进行状态级别的对齐。这一步区别于step1的初始化,step1的初始化我们是采用粗暴的均匀对齐,而这一步的对齐是根据step2的参数进行对齐的。这里的对齐方法有两种:a、硬对齐:采用维特比算法;b、软对齐:采用前后向算法。
    经过重新对齐后,可能变成这样(第2帧已经不对应状态①了):
    在这里插入图片描述

  • step4:重复step2和step3多次,直到收敛。

这一个过程就是EM算法。step1和step3对应E步,step2对应M步。

这一过程涉及到的公式可以参考爱丁堡的语音识别课件http://59.80.44.98/www.inf.ed.ac.uk/teaching/courses/asr/2018-19/asr03-hmmgmm-handout.pdf

到这里,我们就从宏观层面把语音识别的HMM-GMM建模过程讲完了。为了方便讲解,我们这里是用单音素为例。实际应用中,通常使用三音素,但过程几乎是一样的,只是三音素多了一步决策树聚类,具体可以参考我之前的博文:kaldi中基于决策树的状态绑定

欢迎转载,转载请注明出处,谢谢!

GMM HMM语音识别模型 原理篇

博文 来自: kahncc
没有更多推荐了,返回首页